<?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>206182</bug_id>
          
          <creation_ts>2020-01-13 10:56:48 -0800</creation_ts>
          <short_desc>Support an inlined representation in JSValue of small BigInts (&quot;BigInt32&quot;)</short_desc>
          <delta_ts>2020-05-12 09:30:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211783</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>179001</blocked>
    
    <blocked>181144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsc32</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605941</commentid>
    <comment_count>0</comment_count>
      <attachid>387545</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-13 10:56:48 -0800</bug_when>
    <thetext>Created attachment 387545
WIP

The patch is not remotely ready to land yet, I am just opening this to have somewhere to backup the WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612807</commentid>
    <comment_count>1</comment_count>
      <attachid>389215</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-29 18:39:40 -0800</bug_when>
    <thetext>Created attachment 389215
WIP_rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618346</commentid>
    <comment_count>2</comment_count>
      <attachid>390604</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-02-12 18:04:56 -0800</bug_when>
    <thetext>Created attachment 390604
WIP

still does not compile (what remains to be updated is part of DFGSpeculativeJIT.cpp and all of FTLLowerDFGToB3.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621525</commentid>
    <comment_count>3</comment_count>
      <attachid>391370</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-02-20 18:40:51 -0800</bug_when>
    <thetext>Created attachment 391370
WIP

Compiles, but still fails a couple dozen tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621847</commentid>
    <comment_count>4</comment_count>
      <attachid>391448</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-02-21 20:03:20 -0800</bug_when>
    <thetext>Created attachment 391448
WIP

Fixed a bunch of stupid bugs, still more to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622881</commentid>
    <comment_count>5</comment_count>
      <attachid>391711</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-02-25 18:24:35 -0800</bug_when>
    <thetext>Created attachment 391711
WIP

Now passes all the tests, but still a bit rough in places, and lack a Changelog + perf evaluation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624731</commentid>
    <comment_count>6</comment_count>
      <attachid>392188</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-02 14:00:44 -0800</bug_when>
    <thetext>Created attachment 392188
Patch

Still missing some performance numbers, but otherwise getting ready for review.
I will ask for review as soon as EWS is green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624734</commentid>
    <comment_count>7</comment_count>
      <attachid>392189</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-02 14:16:47 -0800</bug_when>
    <thetext>Created attachment 392189
Patch

fix style nits, and fix a build issue on 32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624841</commentid>
    <comment_count>8</comment_count>
      <attachid>392218</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-02 17:03:14 -0800</bug_when>
    <thetext>Created attachment 392218
Patch

Fix build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624886</commentid>
    <comment_count>9</comment_count>
      <attachid>392237</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-02 18:30:25 -0800</bug_when>
    <thetext>Created attachment 392237
Patch

Fix bug in DFGSpeculativeJIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624887</commentid>
    <comment_count>10</comment_count>
      <attachid>392238</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-02 18:32:39 -0800</bug_when>
    <thetext>Created attachment 392238
Patch

Fix another stupid build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625271</commentid>
    <comment_count>11</comment_count>
      <attachid>392338</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-03 15:03:58 -0800</bug_when>
    <thetext>Created attachment 392338
Patch

Fix various 32-bit build issues and warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625289</commentid>
    <comment_count>12</comment_count>
      <attachid>392341</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-03-03 15:49:53 -0800</bug_when>
    <thetext>Created attachment 392341
Patch

fix CMake build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625343</commentid>
    <comment_count>13</comment_count>
      <attachid>392341</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-03 17:35:38 -0800</bug_when>
    <thetext>Comment on attachment 392341
Patch

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

Looking runtime part first.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:208
&gt; +                nodeConstantOne = m_insertionSet.insertNode(m_indexInBlock, SpecHeapBigInt, JSConstant, node-&gt;origin, OpInfo(m_graph.freeze(vm().bigIntConstantOne.get())));

Let&apos;s rename VM::bigIntConstantOne to VM::heapBigIntConstantOne.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:977
&gt; +    get(m_srcDst, t0)
&gt; +    loadq [cfr, t0, 8], t1
&gt; +    metadata(t2, t3)
&gt; +    # srcDst in t1, metadata in t2
&gt; +    # FIXME: the next line jumps to the slow path for BigInt32. We could instead have a dedicated path in here for them.
&gt; +    bqb t1, numberTag, .slow
&gt; +    integerOperation(t1, .slow)
&gt; +    orq numberTag, t1
&gt; +    storeq t1, [cfr, t0, 8]
&gt; +    updateArithProfile(ArithProfileInt)
&gt; +    dispatch()

Fix indentation.

&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:127
&gt; +        return JSValue::encode(JSValue(JSValue::JSBigInt32OrHeap, vm, static_cast&lt;int64_t&gt;(primitive.asDouble())));

Heap-allocation in JSValue constructor is not usual pattern. I would like to have static factory function in JSBigInt, which takes double and returns JSValue which is either JSBigInt* or BigInt32.

&gt; Source/JavaScriptCore/runtime/Operations.cpp:83
&gt; +        (void) left;
&gt; +        (void) right;

Use UNUSED_PARAM.

&gt; Source/JavaScriptCore/runtime/Operations.h:329
&gt; +
&gt; +

Remove this lines.

&gt; Source/JavaScriptCore/runtime/Operations.h:540
&gt; +        (void) left;
&gt; +        (void) right;

Use `UNUSED_PARAM(left)`.

&gt; Source/JavaScriptCore/runtime/Operations.h:562
&gt; +        (void) left;
&gt; +        (void) right;

Ditto.

&gt; Source/JavaScriptCore/runtime/Operations.h:582
&gt; +        (void) left;
&gt; +        (void) right;

Ditto.

&gt; Source/JavaScriptCore/runtime/Operations.h:742
&gt; +#if USE(BIGINT32)
&gt; +    JSBigInt* leftHeapBigInt = leftNumeric.isBigInt32() ? JSBigInt::createFrom(vm, leftNumeric.bigInt32AsInt32()) : leftNumeric.asHeapBigInt();
&gt; +    JSBigInt* rightHeapBigInt = rightNumeric.isBigInt32() ? JSBigInt::createFrom(vm, rightNumeric.bigInt32AsInt32()) : rightNumeric.asHeapBigInt();
&gt; +#else
&gt; +    JSBigInt* leftHeapBigInt = leftNumeric.asHeapBigInt();
&gt; +    JSBigInt* rightHeapBigInt = rightNumeric.asHeapBigInt();
&gt; +#endif
&gt; +
&gt; +    if (isLeft)
&gt; +        RELEASE_AND_RETURN(scope, JSBigInt::leftShift(globalObject, leftHeapBigInt, rightHeapBigInt));
&gt; +    RELEASE_AND_RETURN(scope, JSBigInt::signedRightShift(globalObject, leftHeapBigInt, rightHeapBigInt));

My intuition is that, rightNumeric can be BitInt32 with high possibility.
Can you add FIXME here about adding `JSBigInt::leftShift(JSGlobalObject*, JSBigInt*, int32_t)` and JSBigInt::signedRightShift?
I think it would be possible that we have a lot of JSBigInt &lt;binaryOp&gt; BigInt32 case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638260</commentid>
    <comment_count>14</comment_count>
      <attachid>395605</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-06 13:03:50 -0700</bug_when>
    <thetext>Created attachment 395605
Patch

rebased and applied Yusuke&apos;s comments (except for the indentation one, I don&apos;t see what was wrong with it).
Also fixed a couple of warnings that I had missed when compiling with USE(BIGINT32) 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638304</commentid>
    <comment_count>15</comment_count>
      <attachid>395617</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-06 14:12:41 -0700</bug_when>
    <thetext>Created attachment 395617
Patch

Add missing file back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639503</commentid>
    <comment_count>16</comment_count>
      <attachid>395917</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-08 23:34:01 -0700</bug_when>
    <thetext>Created attachment 395917
Patch

Fixed an issue in the compilation of strict equality in the baseline tier on 32-bit architectures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639608</commentid>
    <comment_count>17</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-04-09 06:28:24 -0700</bug_when>
    <thetext>For the record, there are 74 failures on ARMv7. I will have time to take a look at it next week. If this patch lands before that, do you mind open a bug and CC jsc32@igalia.com?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640298</commentid>
    <comment_count>18</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-10 12:03:41 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #17)
&gt; For the record, there are 74 failures on ARMv7. I will have time to take a
&gt; look at it next week. If this patch lands before that, do you mind open a
&gt; bug and CC jsc32@igalia.com?

These failures are the main reason it has not yet landed. I have fixed one bug on 32-bit so far, but there is still visibly (at least) one more, that I am currently investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640319</commentid>
    <comment_count>19</comment_count>
      <attachid>395917</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-10 13:11:00 -0700</bug_when>
    <thetext>Comment on attachment 395917
Patch

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

Looks nice! I commented several things since I found bugs.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1987
&gt;              // FIXME: Revisit this condition when introducing BigInt to JSC.

Remove this FIXME.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:150
&gt;                      // FIXME: Revisit this condition when introducing BigInt to JSC.

Remove this FIXME.

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:534
&gt;                  }

In prediction-propagation-phase, we are setting SpecBigInt prediction based on mayHaveBigIntResult. But this is suboptimal since we blur HeapBigInt / BigInt32 difference here.
After that, fixup phase will emit AnyBigIntUse for the results of these nods. Can you file a FIXME introducing NodeMayHaveBigInt32Result and propagating this information well?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4038
&gt; +        // FIXME: should we pass an informative SpeculationRecovery?

Not necessary so long as your code is not modifying registers/values belonging to DFG::Node. So, remove this FIXME.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4041
&gt; +        // FIXME: should I do anything to free tempGPR?

Not necessary. Remove this FIXME.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4146
&gt; +        // FIXME: should we pass an informative SpeculationRecovery?

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4149
&gt; +        // FIXME: should I do anything to free tempGPR?

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4212
&gt; +    return;

This return is not necessary.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4782
&gt; +    // FIXME: I don&apos;t think this is true, we should probably have some path for AnyBigInt.

This is not something nice-to-have, rather, we should validate our code to ensure it. Can you do that?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4798
&gt; +    // FIXME: add a fast path, at least for BigInt32, but probably also for HeapBigInt here.

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5000
&gt; +        // FIXME: should we pass an informative SpeculationRecovery?

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5003
&gt; +        // FIXME: should I do anything to free tempGPR?

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1402
&gt; +    JITCompiler::Jump notCell = m_jit.branchIfNotCell(valueRegs);
&gt; +    speculateHeapBigInt(edge, valueRegs.gpr());
&gt; +    notCell.link(&amp;m_jit);

I don&apos;t think this is good. speculateXXX can potentially (currently, not doing so) does `JSValueOperand` / `SpeculateXXXOperand`. If you jump over these things, which makes DFG register allocator confused, and cause type-confusion bug.
Can you rewrite this with typeCheck?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1403
&gt; +    (SpeculateBigInt32Operand(this, edge, ManualOperandSpeculation)).gpr();

This does not perform any checks since it is ManualOperandSpeculation, correct?
I think we need to have manual check of BigInt32 here.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1427
&gt; +            m_gprs.retain(gpr, virtualRegister, SpillOrderConstant);

Let&apos;s assert jsValue is BigInt32.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1434
&gt; +        m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);

Don&apos;t we need to check spillFormat?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1445
&gt; +        info.fillJSValue(*m_stream, gpr, DataFormatJS);
&gt; +        if (type &amp; ~SpecBigInt32) {
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; +            GPRReg tempGPR = allocate();
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; +            unlock(tempGPR);
&gt; +        }
&gt; +        info.fillJSValue(*m_stream, gpr, DataFormatJSBigInt32);
&gt; +        return gpr;
&gt; +    }

This part looks sharable with DataFormatJS.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1452
&gt; +    case DataFormatBigInt32:
&gt; +    case DataFormatJSBigInt32: {
&gt; +        GPRReg gpr = info.gpr();
&gt; +        m_gprs.lock(gpr);
&gt; +        return gpr;
&gt; +    }

What is the difference between DataFormatBigInt32 and DataFormatJSBigInt32?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1465
&gt; +    case DataFormatJS: {
&gt; +        GPRReg gpr = info.gpr();
&gt; +        m_gprs.lock(gpr);
&gt; +        if (type &amp; ~SpecBigInt32) {
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; +            GPRReg tempGPR = allocate();
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; +            unlock(tempGPR);
&gt; +        }
&gt; +        info.fillJSValue(*m_stream, gpr, DataFormatJSBigInt32);
&gt; +        return gpr;
&gt; +    }

Let&apos;s move this part just after DataFormatNone and put FALLTHROUGH in DataFormatNone to share the code, as it is done in fillSpeculateInt32Internal.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4307
&gt; +        GPRTemporary result(this);
&gt; +

I recommend defining 

GPRReg resultGPR = result.gpr();

instead of calling  result.gpr() multiple times since it allocates register at the first call (so, side-effectful).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4321
&gt; +        blessBoolean(result.gpr());
&gt; +        blessedBooleanResult(result.gpr(), node);

You can use unblessedBooleanResult(resultGPR, node).

&gt; Source/JavaScriptCore/ftl/FTLCommonValues.cpp:61
&gt; +#if USE(BIGINT32)

In FTL, I believe we do not need to have this if-def since FTL is only accepting JSVALUE64 arch.

&gt; Source/JavaScriptCore/ftl/FTLCommonValues.h:59
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2145
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2183
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2221
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2347
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3284
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3318
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3350
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3382
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3414
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:7520
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:7532
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8645
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:10869
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:10897
&gt; +#else // if !USE(BIGINT32)
&gt; +    NO_RETURN_DUE_TO_CRASH ALWAYS_INLINE void compileIsBigInt()
&gt; +    {
&gt; +        // If we are not dealing with BigInt32, we should just emit IsCellWithType(HeapBigInt) instead.
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +    }
&gt; +#endif

You do not need to have this.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:15407
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:16062
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:16134
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:16848
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17052
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17428
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:18127
&gt; +#if USE(BIGINT32)

Ditto.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:977
&gt; +    get(m_srcDst, t0)
&gt; +    loadq [cfr, t0, 8], t1
&gt; +    metadata(t2, t3)
&gt; +    # srcDst in t1, metadata in t2
&gt; +    # FIXME: the next line jumps to the slow path for BigInt32. We could instead have a dedicated path in here for them.
&gt; +    bqb t1, numberTag, .slow
&gt; +    integerOperation(t1, .slow)
&gt; +    orq numberTag, t1
&gt; +    storeq t1, [cfr, t0, 8]
&gt; +    updateArithProfile(ArithProfileInt)
&gt; +    dispatch()

Can you fix this indentation?

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:137
&gt; +        // FIXME: there must be a simpler way to find toThis for JSBigInt, but I can&apos;t even find where it is defined.

In this case, JSCell::toThis is invoked. And it invokes toObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640569</commentid>
    <comment_count>20</comment_count>
      <attachid>395917</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-04-11 10:58:21 -0700</bug_when>
    <thetext>Comment on attachment 395917
Patch

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

Nice work there! I&apos;ve left some comments regarding what is causing 32-bits failures and other minor things.

&gt; Source/JavaScriptCore/ChangeLog:29
&gt; +        The latter is useful when we now that we are receiving BigInts, but speculation indicates a mix of heap-allocated and small (inlined) big-ints.

typo: &quot;when we know that&quot;

&gt; Source/JavaScriptCore/ChangeLog:55
&gt; +            return false;

Should this be `return &quot;true&quot;`?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:507
&gt; +            ASSERT(USE_BIGINT32);

For example, this causes Debug build of 32-bits with JIT enabled to fail because `USE_BIGINT32` is not defined.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:743
&gt; +            // FIXME: do we really need SpecString here for ValueSub? It seems like we only need it for ValueAdd.

I agree with this FIXME. `ValueSub` doesn&apos;t need `SpecString`.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1016
&gt; +        // FIXME: why is this code not shared with ValueSub?

I think should move `ValeuSub` here and clear both `FIXME`.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4156
&gt; +    // FIXME: why do compileValueAdd/compileValueMul use isKnownNotNumber but not ValueSub?

I don&apos;t remember this being an intentional omission. I think that including it would help generate less code when we know that math IC won&apos;t be useful.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1920
&gt; +                return createFrom(vm, static_cast&lt;int64_t&gt;(digit));

The issue with failures into ARMv7 (and all architectures using JSVALUE32_64) is due to a bug into `createFrom(VM, int64_t)`. The problem is that such function doesn&apos;t right trim the generated BigInt and on 32-bits and it always create a JSBigInt with `m_length = 2`. One possible solution that I think can be applied is to use `rightTrim` before returning the value from `createFrom(VM, int64_t)`, but this will be a bit painful to GC, since it will allocate 2 JSBigInts every time we call `createFrom(VM, int64_t)`. The other solution could check the range of input and properly set `m_length`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:92
&gt; +        auto ptr = JSBigInt::createFrom(vm, value);

Ditto

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:-395
&gt; -        JSString* returnString = jsNontrivialString(vm, bigInt-&gt;toString(globalObject, 10));

It is not clear to me what is the major benefit if we remove this optimization. IIUC, we still can have 1n as a HeapBigInt if this was generated from a operation of 2 others HeapBigInt, right? Also, there is no `BigInt32` into 32-bits.

&gt; Source/WTF/wtf/PlatformUse.h:144
&gt; +#endif

I think we need a `#else` here, otherwise it will break compilation of `JSVALUE32_64` that refers it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641146</commentid>
    <comment_count>21</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-13 15:34:29 -0700</bug_when>
    <thetext>Thank you very much for finding the problem on 32-bit platforms! I fixed createFrom to use the right length.

Answers to your other comments below:

&gt; &gt; Source/JavaScriptCore/ChangeLog:29
&gt; &gt; +        The latter is useful when we now that we are receiving BigInts, but speculation indicates a mix of heap-allocated and small (inlined) big-ints.
&gt; 
&gt; typo: &quot;when we know that&quot;

Fixed.

&gt; &gt; Source/JavaScriptCore/ChangeLog:55
&gt; &gt; +            return false;
&gt; 
&gt; Should this be `return &quot;true&quot;`?

Yes, fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:507
&gt; &gt; +            ASSERT(USE_BIGINT32);
&gt; 
&gt; For example, this causes Debug build of 32-bits with JIT enabled to fail
&gt; because `USE_BIGINT32` is not defined.

I replaced these by a RELEASE_ASSERT_NOT_REACHED() in the else path of #if USE(BIGINT32).
This seemed more idiomatic, as all of PlatformUse.h only has #define USE_FOO 1, never 0.

&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:743
&gt; &gt; +            // FIXME: do we really need SpecString here for ValueSub? It seems like we only need it for ValueAdd.
&gt; 
&gt; I agree with this FIXME. `ValueSub` doesn&apos;t need `SpecString`.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1016
&gt; &gt; +        // FIXME: why is this code not shared with ValueSub?
&gt; 
&gt; I think should move `ValeuSub` here and clear both `FIXME`.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4156
&gt; &gt; +    // FIXME: why do compileValueAdd/compileValueMul use isKnownNotNumber but not ValueSub?
&gt; 
&gt; I don&apos;t remember this being an intentional omission. I think that including
&gt; it would help generate less code when we know that math IC won&apos;t be useful.

Ok, I will do these simplifications and optimizations in another patch.

&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:-395
&gt; &gt; -        JSString* returnString = jsNontrivialString(vm, bigInt-&gt;toString(globalObject, 10));
&gt; 
&gt; It is not clear to me what is the major benefit if we remove this
&gt; optimization. IIUC, we still can have 1n as a HeapBigInt if this was
&gt; generated from a operation of 2 others HeapBigInt, right? Also, there is no
&gt; `BigInt32` into 32-bits.

I remember that I changed this code to fix a bug in debug builds, but I don&apos;t remember what exactly it was. I&apos;ll try putting it back in and testing again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642008</commentid>
    <comment_count>22</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-15 15:40:13 -0700</bug_when>
    <thetext>Thank you very much for the detailed review.
I answered your comments below (except for those that were just about redundant FIXMEs and style nits, which I removed/fixed).

&gt; &gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:534
&gt; &gt;                  }
&gt; 
&gt; In prediction-propagation-phase, we are setting SpecBigInt prediction based
&gt; on mayHaveBigIntResult. But this is suboptimal since we blur HeapBigInt /
&gt; BigInt32 difference here.
&gt; After that, fixup phase will emit AnyBigIntUse for the results of these
&gt; nods. Can you file a FIXME introducing NodeMayHaveBigInt32Result and
&gt; propagating this information well?

Added a fixme.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4782
&gt; &gt; +    // FIXME: I don&apos;t think this is true, we should probably have some path for AnyBigInt.
&gt; 
&gt; This is not something nice-to-have, rather, we should validate our code to
&gt; ensure it. Can you do that?

There is already an ASSERT verifying it, and I tested it, this FIXME was just obsolete and I removed it.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4798
&gt; &gt; +    // FIXME: add a fast path, at least for BigInt32, but probably also for HeapBigInt here.

This is not a correctness problem, since we emit the slow path which is correct for all types. It is just a possible (minor) perf issue, so I am leaving the FIXME for now.

 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1402
&gt; &gt; +    JITCompiler::Jump notCell = m_jit.branchIfNotCell(valueRegs);
&gt; &gt; +    speculateHeapBigInt(edge, valueRegs.gpr());
&gt; &gt; +    notCell.link(&amp;m_jit);
&gt; 
&gt; I don&apos;t think this is good. speculateXXX can potentially (currently, not
&gt; doing so) does `JSValueOperand` / `SpeculateXXXOperand`. If you jump over
&gt; these things, which makes DFG register allocator confused, and cause
&gt; type-confusion bug.
&gt; Can you rewrite this with typeCheck?

I inlined speculateHeapBigInt there and added a comment based on what you say above. 

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1403
&gt; &gt; +    (SpeculateBigInt32Operand(this, edge, ManualOperandSpeculation)).gpr();
&gt; 
&gt; This does not perform any checks since it is ManualOperandSpeculation,
&gt; correct?
&gt; I think we need to have manual check of BigInt32 here.

ManualOperandSpeculation simply says that it won&apos;t ASSERT that the useKind is BigInt32Use (which it won&apos;t be since it is AnyBigIntUse). It has no other effect, so no extra check is required.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1427
&gt; &gt; +            m_gprs.retain(gpr, virtualRegister, SpillOrderConstant);
&gt; 
&gt; Let&apos;s assert jsValue is BigInt32.

Good idea.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1434
&gt; &gt; +        m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);
&gt; 
&gt; Don&apos;t we need to check spillFormat?

I don&apos;t understand this code well enough to be sure, but I just based it on fillSpeculateCell which does not use spillFormat at all. Considering that BigInt32 is a kind of JSValue (contrary to Int32), I expect the generic code should just work.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1445
&gt; &gt; +        info.fillJSValue(*m_stream, gpr, DataFormatJS);
&gt; &gt; +        if (type &amp; ~SpecBigInt32) {
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; &gt; +            GPRReg tempGPR = allocate();
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; &gt; +            unlock(tempGPR);
&gt; &gt; +        }
&gt; &gt; +        info.fillJSValue(*m_stream, gpr, DataFormatJSBigInt32);
&gt; &gt; +        return gpr;
&gt; &gt; +    }
&gt; 
&gt; This part looks sharable with DataFormatJS.

It is not entirely trivial to share (as some of the code at the beginning is different), so I&apos;m just adding a FIXME for now. Note that the situation is exactly the same for fillSpeculateCell

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1452
&gt; &gt; +    case DataFormatBigInt32:
&gt; &gt; +    case DataFormatJSBigInt32: {
&gt; &gt; +        GPRReg gpr = info.gpr();
&gt; &gt; +        m_gprs.lock(gpr);
&gt; &gt; +        return gpr;
&gt; &gt; +    }
&gt; 
&gt; What is the difference between DataFormatBigInt32 and DataFormatJSBigInt32?

Currently there is none, I just split it to follow the other types, such as DataFormatCell and DataFormatJSCell.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1465
&gt; &gt; +    case DataFormatJS: {
&gt; &gt; +        GPRReg gpr = info.gpr();
&gt; &gt; +        m_gprs.lock(gpr);
&gt; &gt; +        if (type &amp; ~SpecBigInt32) {
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; &gt; +            GPRReg tempGPR = allocate();
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; &gt; +            unlock(tempGPR);
&gt; &gt; +        }
&gt; &gt; +        info.fillJSValue(*m_stream, gpr, DataFormatJSBigInt32);
&gt; &gt; +        return gpr;
&gt; &gt; +    }
&gt; 
&gt; Let&apos;s move this part just after DataFormatNone and put FALLTHROUGH in
&gt; DataFormatNone to share the code, as it is done in
&gt; fillSpeculateInt32Internal.

I am not entirely sure it would keep the same behavior, as gpr is defined differently in these two cases. Since the original code in fillSpeculateCell does not do this, are you ok if I just leave a FIXME here that there might be chances to share some code?

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4307
&gt; &gt; +        GPRTemporary result(this);
&gt; &gt; +
&gt; 
&gt; I recommend defining 
&gt; 
&gt; GPRReg resultGPR = result.gpr();
&gt; 
&gt; instead of calling  result.gpr() multiple times since it allocates register
&gt; at the first call (so, side-effectful).

Good idea, done.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4321
&gt; &gt; +        blessBoolean(result.gpr());
&gt; &gt; +        blessedBooleanResult(result.gpr(), node);
&gt; 
&gt; You can use unblessedBooleanResult(resultGPR, node).

Thanks, done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLCommonValues.cpp:61
&gt; &gt; +#if USE(BIGINT32)
&gt; 
&gt; In FTL, I believe we do not need to have this if-def since FTL is only
&gt; accepting JSVALUE64 arch.

I want to keep the possibility to easily disable BIGINT32, even on the 64-bit platforms, it makes testing much easier.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:10897
&gt; &gt; +#else // if !USE(BIGINT32)
&gt; &gt; +    NO_RETURN_DUE_TO_CRASH ALWAYS_INLINE void compileIsBigInt()
&gt; &gt; +    {
&gt; &gt; +        // If we are not dealing with BigInt32, we should just emit IsCellWithType(HeapBigInt) instead.
&gt; &gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; You do not need to have this.

If I remember correctly I had linker errors otherwise when I compile with USE_BIGINT32 = 0.
 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:977
&gt; &gt; +    get(m_srcDst, t0)
&gt; &gt; +    loadq [cfr, t0, 8], t1
&gt; &gt; +    metadata(t2, t3)
&gt; &gt; +    # srcDst in t1, metadata in t2
&gt; &gt; +    # FIXME: the next line jumps to the slow path for BigInt32. We could instead have a dedicated path in here for them.
&gt; &gt; +    bqb t1, numberTag, .slow
&gt; &gt; +    integerOperation(t1, .slow)
&gt; &gt; +    orq numberTag, t1
&gt; &gt; +    storeq t1, [cfr, t0, 8]
&gt; &gt; +    updateArithProfile(ArithProfileInt)
&gt; &gt; +    dispatch()
&gt; 
&gt; Can you fix this indentation?

Done.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:137
&gt; &gt; +        // FIXME: there must be a simpler way to find toThis for JSBigInt, but I can&apos;t even find where it is defined.
&gt; 
&gt; In this case, JSCell::toThis is invoked. And it invokes toObject.

Thanks for the pointer, I replaced the next line by just return &quot;heapBigInt-&gt;toObject(globalObject);&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642014</commentid>
    <comment_count>23</comment_count>
      <attachid>396582</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-15 15:50:23 -0700</bug_when>
    <thetext>Created attachment 396582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642043</commentid>
    <comment_count>24</comment_count>
      <attachid>396590</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-15 16:43:41 -0700</bug_when>
    <thetext>Created attachment 396590
Patch

Fix the broken rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642240</commentid>
    <comment_count>25</comment_count>
      <attachid>396590</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 07:05:05 -0700</bug_when>
    <thetext>Comment on attachment 396590
Patch

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

Commented :)

&gt; Source/JavaScriptCore/bytecode/ArithProfile.cpp:57
&gt; +    (void) tempGPR;

Use UNUSED_PARAM(tempGPR);.

&gt; Source/JavaScriptCore/bytecode/DataFormat.h:47
&gt; +    DataFormatBigInt32 = 8,

I think having DataFormatBigInt32 is confusing while there is not implementation exists. Add FIXME to mention that.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1407
&gt; +    JSValueOperand value(this, edge, ManualOperandSpeculation);
&gt; +    JSValueRegs valueRegs = value.jsValueRegs();
&gt; +    JITCompiler::Jump notCell = m_jit.branchIfNotCell(valueRegs);
&gt; +    // I inlined speculateHeapBigInt because it would be incorrect to call it here if it did JSValueOperand / SpeculateXXXOperand,
&gt; +    // as it would confuse the DFG register allocator.
&gt; +    DFG_TYPE_CHECK(JSValueSource::unboxedCell(valueRegs.gpr()), edge, ~SpecCellCheck | SpecHeapBigInt, m_jit.branchIfNotHeapBigInt(valueRegs.gpr()));
&gt; +    notCell.link(&amp;m_jit);
&gt; +    (SpeculateBigInt32Operand(this, edge, ManualOperandSpeculation)).gpr();

This is not correct because this code will perform BigInt32 check even if we see HeapBigInt.
This should be written in this form I think.

JSValueRegs valueRegs = value.jsValueRegs();
JITCompiler::Jump notCell = m_jit.branchIfNotCell(valueRegs);
// I inlined speculateHeapBigInt because it would be incorrect to call it here if it did JSValueOperand / SpeculateXXXOperand,
// as it would confuse the DFG register allocator.
DFG_TYPE_CHECK(valueRegs, edge, ~SpecCellCheck | SpecHeapBigInt, m_jit.branchIfNotHeapBigInt(valueRegs.gpr()));
auto done = m_jit.jump();
notCell.link(&amp;m_jit);
DFG_TYPE_CHECK(valueRegs, edge, SpecCellCheck | SpecBigInt32, m_jit.branchIfNotHeapBigInt(valueRegs.gpr()));
done.link(&amp;m_jit);

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1439
&gt; +        m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);

We need to add  spillFormat == DataFormatJSInt32 case as it is done in fillSpeculateInt32Internal.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1447
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; +            GPRReg tempGPR = allocate();
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; +            unlock(tempGPR);

Let&apos;s write it in

CCallHelpers::JumpList failureCases;
GPRReg tempGPR = allocate();
failureCases.append(m_jit.branchIfNumber(gpr));
failureCases.append(m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
speculationCheck(BadType, JSValueRegs(gpr), edge, failureCases);
unlock(tempGPR);

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1453
&gt; +    case DataFormatBigInt32:

Let&apos;s make

case DataFormatBigInt32:
    DFG_CRASH(m_jit.graph(), m_currentNode, &quot;Corrupt data format&quot;);


since there is no DataFormatBigInt32 implementation.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1467
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; +            GPRReg tempGPR = allocate();
&gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; +            unlock(tempGPR);

Let&apos;s write it in

CCallHelpers::JumpList failureCases;
GPRReg tempGPR = allocate();
failureCases.append(m_jit.branchIfNumber(gpr));
failureCases.append(m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
speculationCheck(BadType, JSValueRegs(gpr), edge, failureCases);
unlock(tempGPR);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642262</commentid>
    <comment_count>26</comment_count>
      <attachid>396590</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 08:31:57 -0700</bug_when>
    <thetext>Comment on attachment 396590
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1410
&gt; +GPRReg SpeculativeJIT::fillSpeculateBigInt32(Edge edge)

Can we make fillSpeculateBigInt32 implementation further aligned to fillSpeculateInt32Internal?
Like, how we use switch-FALLTHROUGH etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642523</commentid>
    <comment_count>27</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-16 17:27:03 -0700</bug_when>
    <thetext> 
&gt; &gt; Source/JavaScriptCore/bytecode/ArithProfile.cpp:57
&gt; &gt; +    (void) tempGPR;
&gt; 
&gt; Use UNUSED_PARAM(tempGPR);.

Done.

&gt; &gt; Source/JavaScriptCore/bytecode/DataFormat.h:47
&gt; &gt; +    DataFormatBigInt32 = 8,
&gt; 
&gt; I think having DataFormatBigInt32 is confusing while there is not
&gt; implementation exists. Add FIXME to mention that.

Done.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1407
&gt; &gt; +    JSValueOperand value(this, edge, ManualOperandSpeculation);
&gt; &gt; +    JSValueRegs valueRegs = value.jsValueRegs();
&gt; &gt; +    JITCompiler::Jump notCell = m_jit.branchIfNotCell(valueRegs);
&gt; &gt; +    // I inlined speculateHeapBigInt because it would be incorrect to call it here if it did JSValueOperand / SpeculateXXXOperand,
&gt; &gt; +    // as it would confuse the DFG register allocator.
&gt; &gt; +    DFG_TYPE_CHECK(JSValueSource::unboxedCell(valueRegs.gpr()), edge, ~SpecCellCheck | SpecHeapBigInt, m_jit.branchIfNotHeapBigInt(valueRegs.gpr()));
&gt; &gt; +    notCell.link(&amp;m_jit);
&gt; &gt; +    (SpeculateBigInt32Operand(this, edge, ManualOperandSpeculation)).gpr();
&gt; 
&gt; This is not correct because this code will perform BigInt32 check even if we
&gt; see HeapBigInt.
&gt; This should be written in this form I think.
&gt; 
&gt; JSValueRegs valueRegs = value.jsValueRegs();
&gt; JITCompiler::Jump notCell = m_jit.branchIfNotCell(valueRegs);
&gt; // I inlined speculateHeapBigInt because it would be incorrect to call it
&gt; here if it did JSValueOperand / SpeculateXXXOperand,
&gt; // as it would confuse the DFG register allocator.
&gt; DFG_TYPE_CHECK(valueRegs, edge, ~SpecCellCheck | SpecHeapBigInt,
&gt; m_jit.branchIfNotHeapBigInt(valueRegs.gpr()));
&gt; auto done = m_jit.jump();
&gt; notCell.link(&amp;m_jit);
&gt; DFG_TYPE_CHECK(valueRegs, edge, SpecCellCheck | SpecBigInt32,
&gt; m_jit.branchIfNotHeapBigInt(valueRegs.gpr()));
&gt; done.link(&amp;m_jit);

Oops, thanks for finding this. Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1439
&gt; &gt; +        m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);
&gt; 
&gt; We need to add  spillFormat == DataFormatJSInt32 case as it is done in
&gt; fillSpeculateInt32Internal.

I am still not clear on why that is needed, and why we can&apos;t just use the generic code, but I changed it based on fillSpeculateInt32Internal. Please have a look and tell me if it is what you wanted.
 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1447
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; &gt; +            GPRReg tempGPR = allocate();
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; &gt; +            unlock(tempGPR);
&gt; 
&gt; Let&apos;s write it in
&gt; 
&gt; CCallHelpers::JumpList failureCases;
&gt; GPRReg tempGPR = allocate();
&gt; failureCases.append(m_jit.branchIfNumber(gpr));
&gt; failureCases.append(m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; speculationCheck(BadType, JSValueRegs(gpr), edge, failureCases);
&gt; unlock(tempGPR);

Done.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1453
&gt; &gt; +    case DataFormatBigInt32:
&gt; 
&gt; Let&apos;s make
&gt; 
&gt; case DataFormatBigInt32:
&gt;     DFG_CRASH(m_jit.graph(), m_currentNode, &quot;Corrupt data format&quot;);
&gt; 
&gt; 
&gt; since there is no DataFormatBigInt32 implementation.

Done.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1467
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNumber(gpr));
&gt; &gt; +            GPRReg tempGPR = allocate();
&gt; &gt; +            speculationCheck(BadType, JSValueRegs(gpr), edge, m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; &gt; +            unlock(tempGPR);
&gt; 
&gt; Let&apos;s write it in
&gt; 
&gt; CCallHelpers::JumpList failureCases;
&gt; GPRReg tempGPR = allocate();
&gt; failureCases.append(m_jit.branchIfNumber(gpr));
&gt; failureCases.append(m_jit.branchIfNotBigInt32KnownNotNumber(gpr, tempGPR));
&gt; speculationCheck(BadType, JSValueRegs(gpr), edge, failureCases);
&gt; unlock(tempGPR);

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642527</commentid>
    <comment_count>28</comment_count>
      <attachid>396728</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-16 17:36:44 -0700</bug_when>
    <thetext>Created attachment 396728
Patch

applied Yusuke&apos;s suggestions, and fixed a style nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642672</commentid>
    <comment_count>29</comment_count>
      <attachid>396728</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-17 08:01:39 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

r=me with bug fixes I found.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1402
&gt; +    GPRReg tempGPR = allocate();

Use GPRTemporary. `allocate()` and `unlock()` is very low-level concept to implement `GPRTemporary`, `SpeculatedXXXOperand` etc.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1758
&gt; +        m_jit.move(op1.gpr(), result.gpr());
&gt; +        m_jit.unboxBigInt32(result.gpr());
&gt; +        m_jit.move(op2.gpr(), temp.gpr());
&gt; +        m_jit.unboxBigInt32(temp.gpr());
&gt; +        m_jit.compare64(condition, result.gpr(), temp.gpr(), result.gpr());

This is not correct. GPRTemporary result is using Reuse, this means that it can be either of op1 / op2 registers.
Let&apos;s assume that result picks op2&apos;s register. Then, `m_jit.move(op1.gpr(), result.gpr());` clobbers op2&apos;s register.

Rewrite it in this way. When using Reuse, we need to be extra careful. And please define GPRRegs first instead of using gpr().

SpeculateBigInt32Operand op1(this, node-&gt;child1());
SpeculateBigInt32Operand op2(this, node-&gt;child2());
GPRTemporary result(this, Reuse, op1, op2);

GPRReg op1GPR = op1.gpr();
GPRReg op2GPR = op2.gpr();
GPRReg resultGPR = result.gpr();

if (condition == MacroAssembler::Equal || condition == MacroAssembler::NotEqual) {
    // No need to unbox the operands, since the tag bits are identical
    m_jit.compare64(condition, op1GPR, op2GPR, resultGPR);
} else {
    GPRTemporary temp(this);
    GPRReg tempGPR = temp.gpr();

    m_jit.move(op1GPR, tempGPR);
    m_jit.unboxBigInt32(tempGPR);
    m_jit.move(op2GPR, resultGPR);
    m_jit.unboxBigInt32(resultGPR);
    m_jit.compare64(condition, tempGPR, resultGPR, resultGPR);
}

// If we add a DataFormatBool, we should use it here.
m_jit.or32(TrustedImm32(JSValue::ValueFalse), resultGPR);
jsValueResult(resultGPR, m_currentNode, DataFormatJSBoolean);

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8746
&gt; +            speculateHeapBigIntUnknownWhetherCell(m_node-&gt;child2());

This looks incorrect. speculateHeapBigIntUnknownWhetherCell is static characteristics, which filters the AbstractValue. Not a path-related characteristics to FTL code.
If you execute speculateHeapBigIntUnknownWhetherCell in FTL code generation part, regardless of which path is taken at runtime, this filters out AbstractValue, which is wrong.
You need to manually filter out AbstractValue with AnyBigInt. Read FTLLowerDFGToB3.cpp&apos;s m_interpreter.filter related code.
Whenever you use specualteXXX, you need to ensure that this is not-runtime-related characteristics (this is effective for CompareStrictEq code, not only for onlyLeftIsBigInt32 branch case.)
If there are the same issue, please fix.

And add FIXME about filtering out proven-type based if-check removal.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8752
&gt; +            speculateHeapBigIntUnknownWhetherCell(m_node-&gt;child1());

Ditto, this is wrong.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8768
&gt; +            speculateHeapBigIntUnknownWhetherCell(m_node-&gt;child2());

Ditto, this is wrong.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8777
&gt; +        }

Can you rewrite it with appendTo(xxx, yyy) style instead of appendTo(xxx)?
The other places are using `appendTo(xxx, yyy)` thing.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:10929
&gt; +        ValueFromBlock notCellResult = m_out.anchor(isBigInt32(value, provenType(m_node-&gt;child1())));

Add FIXME to filter out type based on the previous check.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14679
&gt; +        speculate(node-&gt;child1());
&gt; +        speculate(node-&gt;child2());
&gt; +        LValue left = lowJSValue(node-&gt;child1(), ManualOperandSpeculation);
&gt; +        LValue right = lowJSValue(node-&gt;child2(), ManualOperandSpeculation);

Why is this `speculate` &amp; `lowJSValue` order swapped?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17133
&gt; +    LValue isNotAnyBigInt(LValue jsValue, SpeculatedType type = SpecFullTop)

Can you rewrite it with appendTo(xxx, yyy) style instead of appendTo(xxx)?
The other places are using `appendTo(xxx, yyy)` thing.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17156
&gt; +        m_out.branch(isCell(jsValue, type), unsure(isCellCase), unsure(isNotCellCase));

Add FIXME to filter out type based on the previous `isBigInt32()` check.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17689
&gt; +        ValueFromBlock returnForCell = m_out.anchor(isHeapBigInt(value, type));

Add FIXME to filter out type based on the previous `isBigInt32()` check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642712</commentid>
    <comment_count>30</comment_count>
      <attachid>396728</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-17 09:40:37 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

Nice ChangeLog: very descriptive, and will make it easier .  Here are some comments while I continue to read the rest of the patch.

&gt; JSTests/ChangeLog:8
&gt; +        I improved various of the tests to give more informative error messages in the process of fixing them.

I suggest /various of the tests/several tests/

&gt; JSTests/stress/big-int-right-shift-general.js:5
&gt; +// Modified by Copyright (C) 2020 Apple.

I think you should remove the &quot;Modified by&quot; part.  Just say &quot;Copyright (C) 2020 Apple. All rights reserved.&quot;  It is understood that the copyright is shared.

&gt; JSTests/stress/compare-number-and-other.js:75
&gt;  \ No newline at end of file

Can you make sure this I not here in the actual source?

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        Note that in this patch we create such small BigInts when parsing BigInt constants, and most operations (e.g. Add or BitOr) produce a BigInt32 if both of their operands are BigInt32,

I think you mean when &quot;parsing small BigInt constants&quot;.  I suggest rephrasing this as &quot;we create BigInt32s when parsing small BigInt constants&quot;.  Using &quot;BigInt32&quot; instead of &quot;such small BigInts&quot; also keeps the terminology consistent with the rest of the sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642747</commentid>
    <comment_count>31</comment_count>
      <attachid>396728</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-17 11:17:41 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

Publishing these comments before I forget and lose them.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:956
&gt; +        move(gpr, tempGPR);
&gt; +        and64(TrustedImm32(JSValue::BigInt32Tag), tempGPR);
&gt; +        return branch64(Equal, tempGPR, TrustedImm32(JSValue::BigInt32Tag));

I think you can use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) here.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:967
&gt; +        move(gpr, tempGPR);
&gt; +        and64(TrustedImm32(JSValue::BigInt32Tag), tempGPR);
&gt; +        return branch64(NotEqual, tempGPR, TrustedImm32(JSValue::BigInt32Tag));

Can we use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) instead?  I think that will generate more efficient code and doesn&apos;t need a tempGPR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642753</commentid>
    <comment_count>32</comment_count>
      <attachid>396728</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-17 11:45:10 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:956
&gt;&gt; +        return branch64(Equal, tempGPR, TrustedImm32(JSValue::BigInt32Tag));
&gt; 
&gt; I think you can use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) here.

That sounds really nice because we could remove tempGPR...?

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:967
&gt;&gt; +        return branch64(NotEqual, tempGPR, TrustedImm32(JSValue::BigInt32Tag));
&gt; 
&gt; Can we use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) instead?  I think that will generate more efficient code and doesn&apos;t need a tempGPR.

Ditto, we could remove tempGPR use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642786</commentid>
    <comment_count>33</comment_count>
      <attachid>396728</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-17 12:53:26 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:956
&gt;&gt;&gt; +        return branch64(Equal, tempGPR, TrustedImm32(JSValue::BigInt32Tag));
&gt;&gt; 
&gt;&gt; I think you can use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) here.
&gt; 
&gt; That sounds really nice because we could remove tempGPR...?

Yusuke and Robin has proven to me that this not work.  Ignore me.

&gt;&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:967
&gt;&gt;&gt; +        return branch64(NotEqual, tempGPR, TrustedImm32(JSValue::BigInt32Tag));
&gt;&gt; 
&gt;&gt; Can we use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) instead?  I think that will generate more efficient code and doesn&apos;t need a tempGPR.
&gt; 
&gt; Ditto, we could remove tempGPR use?

Ditto. Does not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642819</commentid>
    <comment_count>34</comment_count>
      <attachid>396728</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-17 14:01:42 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

More comments.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:956
&gt;&gt;&gt;&gt; +        move(gpr, tempGPR);
&gt;&gt;&gt;&gt; +        and64(TrustedImm32(JSValue::BigInt32Tag), tempGPR);
&gt;&gt;&gt;&gt; +        return branch64(Equal, tempGPR, TrustedImm32(JSValue::BigInt32Tag));
&gt;&gt;&gt; 
&gt;&gt;&gt; I think you can use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) here.
&gt;&gt; 
&gt;&gt; That sounds really nice because we could remove tempGPR...?
&gt; 
&gt; Yusuke and Robin has proven to me that this not work.  Ignore me.

I think you can use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) here.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:967
&gt;&gt;&gt;&gt; +        move(gpr, tempGPR);
&gt;&gt;&gt;&gt; +        and64(TrustedImm32(JSValue::BigInt32Tag), tempGPR);
&gt;&gt;&gt;&gt; +        return branch64(NotEqual, tempGPR, TrustedImm32(JSValue::BigInt32Tag));
&gt;&gt;&gt; 
&gt;&gt;&gt; Can we use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) instead?  I think that will generate more efficient code and doesn&apos;t need a tempGPR.
&gt;&gt; 
&gt;&gt; Ditto, we could remove tempGPR use?
&gt; 
&gt; Ditto. Does not work.

Can we use branchTest32(Zero, gpr, TrustedImm32(JSValue::BigInt32Tag)) instead?  I think that will generate more efficient code and doesn&apos;t need a tempGPR.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:78
&gt; +        VM&amp; vm = globalObject-&gt;vm();
&gt; +        auto scope = DECLARE_THROW_SCOPE(vm);

Please put this at the top of the function.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:431
&gt; +        // FIXME: we should rather have two cases here: one-character string vs jsNonTrivialString for everything else.

bug url?

&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:432
&gt; +        JSString* returnString = JSString::create(vm, bigInt-&gt;toString(globalObject, 10).releaseImpl().releaseNonNull());

I see that bigInt-&gt;toString() can throw.  So, you&apos;ll need an exception check for that before the JSString::create().

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:542
&gt; +    u.asInt64 = ((static_cast&lt;int64_t&gt;(value) &lt;&lt; 16) &amp; ~NumberTag) | BigInt32Tag;

You can skip the NumberTag masking if you do this instead:
        u.asInt64 = (static_cast&lt;uint64_t&gt;(value) &lt;&lt; 16) | BigInt32Tag;

You can ASSERT that it produces 0s in the NumberTag region.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:812
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);

Please put this at the top of this function.  That way all clients of this function will know that this function can potentially throw even if the real value being used won&apos;t be one that result in a throw.  The rule is to always declare the ThrowScope at the top of the function (unless there&apos;s some special reason why we don&apos;t want that ... which should be exceedingly rare).

However, if moving this will cause you grief with missing exception errors and preventing you from landing this patch, then add a FIXME here with a bug to fix this later.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:834
&gt;      VM&amp; vm = getVM(globalObject);
&gt;      auto scope = DECLARE_THROW_SCOPE(vm);

Ditto.  Put this at the top, or add the FIXME to fix later.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:856
&gt;      VM&amp; vm = getVM(globalObject);
&gt;      auto scope = DECLARE_THROW_SCOPE(vm);

Ditto.  Move to the top or add FIXME.

&gt; Source/JavaScriptCore/runtime/Operations.cpp:76
&gt; +        Checked&lt;int32_t, RecordOverflow&gt; result = left;

Just use CheckedInt32 instead of Checked&lt;int32_t, RecordOverflow&gt;.

&gt; Source/JavaScriptCore/runtime/Operations.h:247
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);

For consistency, please put this at the top.

&gt; Source/JavaScriptCore/runtime/Operations.h:260
&gt; +        // FIXME: use something less hacky, e.g. some kind of JSBigInt::compareToInt32

Please file a bug and include the url here fo that we don&apos;t forget this.

&gt; Source/JavaScriptCore/runtime/Operations.h:298
&gt; +    // FIXME: have some fast-ish path for a comparison between a small and a large big-int

Please file a bug and add url.

&gt; Source/JavaScriptCore/runtime/Operations.h:484
&gt; -    VM&amp; vm = getVM(globalObject);
&gt; +    VM&amp; vm = globalObject-&gt;vm();

Just wondering why this change?  On the other hand, not due to you but why do we have a getVM() function?

&gt; Source/JavaScriptCore/runtime/Operations.h:531
&gt; +        Checked&lt;int32_t, RecordOverflow&gt; result = left;

Just use CheckedInt32.

&gt; Source/JavaScriptCore/runtime/Operations.h:553
&gt; +        Checked&lt;int32_t, RecordOverflow&gt; result = left;

Use CheckedInt32.

&gt; Source/JavaScriptCore/runtime/Operations.h:629
&gt; +        // FIXME: the following next few lines might benefit from being made into a helper function

Bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:654
&gt; +        // FIXME: the following next few lines might benefit from being made into a helper function

Bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:716
&gt; +        // FIXME: it might be possible to do something smarter, trying to do the left shift and detecting somehow if it overflowed.

Bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:730
&gt; +    // FIXME: we should have a case for left is HeapBigInt and right is BigInt32, it seems fairly likely to occur frequently.

Bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:775
&gt; +    // FIXME: add fast path for BigInt32 / HeapBigInt, and for HeapBigInt / BigInt32
&gt; +    // In many cases these could be made more efficient than heap-allocating the small big-int and going through the generic path.
&gt; +    // But it is quite tricky, not least because HeapBigInt use a sign bit whereas BigInt32 use 2-complement representation.

Bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:799
&gt; +    // FIXME: currently, for pairs of BigInt32, we unbox them, do the &quot;and&quot; and re-box them.
&gt; +    // We could do it directly on the JSValue.

bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:810
&gt; +    // FIXME: currently, for pairs of BigInt32, we unbox them, do the &quot;or&quot; and re-box them.
&gt; +    // We could do it directly on the JSValue.

bug url?

&gt; Source/JavaScriptCore/runtime/Operations.h:821
&gt; +    // FIXME: currently, for pairs of BigInt32, we unbox them, do the &quot;xor&quot; and re-box them.
&gt; +    // We could do it directly on the JSValue, and just remember to do an or with 0x12 at the end to restore the tag

bug url?  You can use the same bug url for many or all of the FIXMEs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642837</commentid>
    <comment_count>35</comment_count>
      <attachid>396728</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-17 14:25:39 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:150
&gt;                      auto isNonStringOrBigIntCellConstant = [] (JSValue value) {

I think isNonStringAndNonBigIntCellConstant would be more clear.  Can rename this in a separate patch.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.h:2
&gt; - * Copyright (C) 2011-2018 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2011-2020 Apple Inc. All rights reserved.

Revert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642931</commentid>
    <comment_count>36</comment_count>
      <attachid>396728</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-17 19:21:25 -0700</bug_when>
    <thetext>Comment on attachment 396728
Patch

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

Thanks a lot for the reviews!

&gt;&gt; JSTests/stress/big-int-right-shift-general.js:5
&gt;&gt; +// Modified by Copyright (C) 2020 Apple.
&gt; 
&gt; I think you should remove the &quot;Modified by&quot; part.  Just say &quot;Copyright (C) 2020 Apple. All rights reserved.&quot;  It is understood that the copyright is shared.

Fixed.

&gt;&gt; JSTests/stress/compare-number-and-other.js:75
&gt;&gt;  \ No newline at end of file
&gt; 
&gt; Can you make sure this I not here in the actual source?

I&apos;ve checked the source and it looks perfectly reasonable. In particular it still has the &apos;}&apos; at the end.. not sure what is going on with diff here.

&gt;&gt; Source/JavaScriptCore/ChangeLog:21
&gt;&gt; +        Note that in this patch we create such small BigInts when parsing BigInt constants, and most operations (e.g. Add or BitOr) produce a BigInt32 if both of their operands are BigInt32,
&gt; 
&gt; I think you mean when &quot;parsing small BigInt constants&quot;.  I suggest rephrasing this as &quot;we create BigInt32s when parsing small BigInt constants&quot;.  Using &quot;BigInt32&quot; instead of &quot;such small BigInts&quot; also keeps the terminology consistent with the rest of the sentence.

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:150
&gt;&gt;                      auto isNonStringOrBigIntCellConstant = [] (JSValue value) {
&gt; 
&gt; I think isNonStringAndNonBigIntCellConstant would be more clear.  Can rename this in a separate patch.

Renamed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.h:2
&gt;&gt; + * Copyright (C) 2011-2020 Apple Inc. All rights reserved.
&gt; 
&gt; Revert?

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1402
&gt;&gt; +    GPRReg tempGPR = allocate();
&gt; 
&gt; Use GPRTemporary. `allocate()` and `unlock()` is very low-level concept to implement `GPRTemporary`, `SpeculatedXXXOperand` etc.

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1758
&gt;&gt; +        m_jit.compare64(condition, result.gpr(), temp.gpr(), result.gpr());
&gt; 
&gt; This is not correct. GPRTemporary result is using Reuse, this means that it can be either of op1 / op2 registers.
&gt; Let&apos;s assume that result picks op2&apos;s register. Then, `m_jit.move(op1.gpr(), result.gpr());` clobbers op2&apos;s register.
&gt; 
&gt; Rewrite it in this way. When using Reuse, we need to be extra careful. And please define GPRRegs first instead of using gpr().
&gt; 
&gt; SpeculateBigInt32Operand op1(this, node-&gt;child1());
&gt; SpeculateBigInt32Operand op2(this, node-&gt;child2());
&gt; GPRTemporary result(this, Reuse, op1, op2);
&gt; 
&gt; GPRReg op1GPR = op1.gpr();
&gt; GPRReg op2GPR = op2.gpr();
&gt; GPRReg resultGPR = result.gpr();
&gt; 
&gt; if (condition == MacroAssembler::Equal || condition == MacroAssembler::NotEqual) {
&gt;     // No need to unbox the operands, since the tag bits are identical
&gt;     m_jit.compare64(condition, op1GPR, op2GPR, resultGPR);
&gt; } else {
&gt;     GPRTemporary temp(this);
&gt;     GPRReg tempGPR = temp.gpr();
&gt; 
&gt;     m_jit.move(op1GPR, tempGPR);
&gt;     m_jit.unboxBigInt32(tempGPR);
&gt;     m_jit.move(op2GPR, resultGPR);
&gt;     m_jit.unboxBigInt32(resultGPR);
&gt;     m_jit.compare64(condition, tempGPR, resultGPR, resultGPR);
&gt; }
&gt; 
&gt; // If we add a DataFormatBool, we should use it here.
&gt; m_jit.or32(TrustedImm32(JSValue::ValueFalse), resultGPR);
&gt; jsValueResult(resultGPR, m_currentNode, DataFormatJSBoolean);

Thanks, I had forgotten about Reuse. Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8746
&gt;&gt; +            speculateHeapBigIntUnknownWhetherCell(m_node-&gt;child2());
&gt; 
&gt; This looks incorrect. speculateHeapBigIntUnknownWhetherCell is static characteristics, which filters the AbstractValue. Not a path-related characteristics to FTL code.
&gt; If you execute speculateHeapBigIntUnknownWhetherCell in FTL code generation part, regardless of which path is taken at runtime, this filters out AbstractValue, which is wrong.
&gt; You need to manually filter out AbstractValue with AnyBigInt. Read FTLLowerDFGToB3.cpp&apos;s m_interpreter.filter related code.
&gt; Whenever you use specualteXXX, you need to ensure that this is not-runtime-related characteristics (this is effective for CompareStrictEq code, not only for onlyLeftIsBigInt32 branch case.)
&gt; If there are the same issue, please fix.
&gt; 
&gt; And add FIXME about filtering out proven-type based if-check removal.

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8752
&gt;&gt; +            speculateHeapBigIntUnknownWhetherCell(m_node-&gt;child1());
&gt; 
&gt; Ditto, this is wrong.

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8768
&gt;&gt; +            speculateHeapBigIntUnknownWhetherCell(m_node-&gt;child2());
&gt; 
&gt; Ditto, this is wrong.

Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8777
&gt;&gt; +        }
&gt; 
&gt; Can you rewrite it with appendTo(xxx, yyy) style instead of appendTo(xxx)?
&gt; The other places are using `appendTo(xxx, yyy)` thing.

Done.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:10929
&gt;&gt; +        ValueFromBlock notCellResult = m_out.anchor(isBigInt32(value, provenType(m_node-&gt;child1())));
&gt; 
&gt; Add FIXME to filter out type based on the previous check.

Added.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14679
&gt;&gt; +        LValue right = lowJSValue(node-&gt;child2(), ManualOperandSpeculation);
&gt; 
&gt; Why is this `speculate` &amp; `lowJSValue` order swapped?

A mistake. Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17133
&gt;&gt; +    LValue isNotAnyBigInt(LValue jsValue, SpeculatedType type = SpecFullTop)
&gt; 
&gt; Can you rewrite it with appendTo(xxx, yyy) style instead of appendTo(xxx)?
&gt; The other places are using `appendTo(xxx, yyy)` thing.

Done.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17156
&gt;&gt; +        m_out.branch(isCell(jsValue, type), unsure(isCellCase), unsure(isNotCellCase));
&gt; 
&gt; Add FIXME to filter out type based on the previous `isBigInt32()` check.

Done.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17689
&gt;&gt; +        ValueFromBlock returnForCell = m_out.anchor(isHeapBigInt(value, type));
&gt; 
&gt; Add FIXME to filter out type based on the previous `isBigInt32()` check.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:78
&gt;&gt; +        auto scope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; Please put this at the top of the function.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.cpp:432
&gt;&gt; +        JSString* returnString = JSString::create(vm, bigInt-&gt;toString(globalObject, 10).releaseImpl().releaseNonNull());
&gt; 
&gt; I see that bigInt-&gt;toString() can throw.  So, you&apos;ll need an exception check for that before the JSString::create().

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:542
&gt;&gt; +    u.asInt64 = ((static_cast&lt;int64_t&gt;(value) &lt;&lt; 16) &amp; ~NumberTag) | BigInt32Tag;
&gt; 
&gt; You can skip the NumberTag masking if you do this instead:
&gt;         u.asInt64 = (static_cast&lt;uint64_t&gt;(value) &lt;&lt; 16) | BigInt32Tag;
&gt; 
&gt; You can ASSERT that it produces 0s in the NumberTag region.

Good idea. Done.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:812
&gt;&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; Please put this at the top of this function.  That way all clients of this function will know that this function can potentially throw even if the real value being used won&apos;t be one that result in a throw.  The rule is to always declare the ThrowScope at the top of the function (unless there&apos;s some special reason why we don&apos;t want that ... which should be exceedingly rare).
&gt; 
&gt; However, if moving this will cause you grief with missing exception errors and preventing you from landing this patch, then add a FIXME here with a bug to fix this later.

Moved.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:834
&gt;&gt;      auto scope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; Ditto.  Put this at the top, or add the FIXME to fix later.

Moved.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:856
&gt;&gt;      auto scope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; Ditto.  Move to the top or add FIXME.

Moved.

&gt;&gt; Source/JavaScriptCore/runtime/Operations.cpp:76
&gt;&gt; +        Checked&lt;int32_t, RecordOverflow&gt; result = left;
&gt; 
&gt; Just use CheckedInt32 instead of Checked&lt;int32_t, RecordOverflow&gt;.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/Operations.h:484
&gt;&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; 
&gt; Just wondering why this change?  On the other hand, not due to you but why do we have a getVM() function?

From a comment on its definition: &quot;Helper function to get VM&amp; from JSGlobalObject* if JSGlobalObject.h is not included.&quot;
So we have no reason to bother anywhere that we can just include JSGlobalObject.h

&gt;&gt; Source/JavaScriptCore/runtime/Operations.h:531
&gt;&gt; +        Checked&lt;int32_t, RecordOverflow&gt; result = left;
&gt; 
&gt; Just use CheckedInt32.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/Operations.h:553
&gt;&gt; +        Checked&lt;int32_t, RecordOverflow&gt; result = left;
&gt; 
&gt; Use CheckedInt32.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642963</commentid>
    <comment_count>37</comment_count>
      <attachid>396841</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-18 00:34:05 -0700</bug_when>
    <thetext>Created attachment 396841
Patch for landing

Adresses Mark and Yusuke&apos;s comments.
Has USE_BIGINT defined as always 0, I will toggle it on in a separate patch (to make it easier to revert if we find it causes regressions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643021</commentid>
    <comment_count>38</comment_count>
      <attachid>396855</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-18 10:15:20 -0700</bug_when>
    <thetext>Created attachment 396855
Patch for landing

Fix the windows build failure (just a missing NO_RETURN on emit_op_is_big_int when USE_BIGINT32 is false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643104</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-18 17:23:10 -0700</bug_when>
    <thetext>Patch 396855 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643117</commentid>
    <comment_count>40</comment_count>
      <attachid>396882</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-18 18:33:16 -0700</bug_when>
    <thetext>Created attachment 396882
Patch for landing

Fix the rebase issue that prevented the commit queue from landing the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643129</commentid>
    <comment_count>41</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-18 19:21:04 -0700</bug_when>
    <thetext>Committed r260331: &lt;https://trac.webkit.org/changeset/260331&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396882.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643131</commentid>
    <comment_count>42</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-18 19:22:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/61992701&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643359</commentid>
    <comment_count>43</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 23:43:00 -0700</bug_when>
    <thetext>Hmm, looks like this patch broke the following test262 test:
https://github.com/WebKit/webkit/blob/master/JSTests/test262/test/built-ins/BigInt/constructor-integer.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643621</commentid>
    <comment_count>44</comment_count>
      <attachid>397009</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-20 13:45:47 -0700</bug_when>
    <thetext>Created attachment 397009
Patch flipping the flag to true

The previous patch landed with BigInt32 disabled. This patch enables it on 64-bit platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643625</commentid>
    <comment_count>45</comment_count>
      <attachid>397009</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-04-20 13:54:02 -0700</bug_when>
    <thetext>Comment on attachment 397009
Patch flipping the flag to true

This already landed actually: https://trac.webkit.org/changeset/260345/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643657</commentid>
    <comment_count>46</comment_count>
      <attachid>396882</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-20 15:05:50 -0700</bug_when>
    <thetext>Comment on attachment 396882
Patch for landing

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

Overall:
- I&apos;m a bit worried about the lack of new testing. We have a lot of new code in the compiler we should be writing hand crafted tests for.
- We need to have new microbenchmark perf tests for this, and what the results of such tests are. This to me is the biggest thing missing from this patch. There is all this work for BigInt32, but we don&apos;t even know if it&apos;s better.
- It&apos;s slightly unsettling the number of FIXMEs you left (by my count, ~80). It&apos;s not always obvious what should be in this patch and what should be followups. At this point, I guess they&apos;re all followups. But all FIXMEs need linked bugs or should be removed. The ones that actually need their own bugs  are a good set of bugs for next steps on BigInt

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        - It cannot be confused with a Double or Integer thanks to the top bits
&gt; +        - It cannot be confused with a pointer to a Cell, thanks to bit 1 which is set to true
&gt; +        - It cannot be confused with a pointer to wasm thanks to bit 0 which is set to false
&gt; +        - It cannot be confused with true/false because bit 2 is set to false
&gt; +        - It cannot be confused for null/undefined because bit 4 is set to true

nice!

&gt; Source/JavaScriptCore/ChangeLog:62
&gt; +        I don&apos;t yet have performance numbers for this patch on a BigInt benchmark, I will get such numbers before trying to land it, but I&apos;d like some review in the meantime.

did this ever happen? Seems critically important to actually verify this is faster than what we had before

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:543
&gt; +        // FIXME: this use of binaryUseKind means that we cannot specialize to (for example) a HeapBigInt left-operand and a BigInt32 right-operand.

can you file a bug?

We want all our FIXMEs to link to bugs we might actually fix

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:749
&gt; +            // FIXME: do we really need SpecString here for ValueSub? It seems like we only need it for ValueAdd.

good point. Again, a bug here would be good

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:909
&gt; +        // FIXME: we could do much smarter things for BigInts, see ValueAdd/ValueSub.

file a bug please.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1022
&gt; +        // FIXME: why is this code not shared with ValueSub?

this should be a bug or should be resolved.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1025
&gt; +        else if (node-&gt;binaryUseKind() == AnyBigIntUse || node-&gt;binaryUseKind() == BigInt32Use)

I think we can do a lot better here. Can we have a mode of math on BigInt32 where we speculate we don&apos;t overflow into heap big int?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1614
&gt; +            // FIXME: if the SpeculatedType informs us that we won&apos;t have a BigInt32 (or that we won&apos;t have a HeapBigInt), then we can transform this node into a IsCellWithType(HeapBigIntType) (or a hypothetical IsBigInt32 node).

again, either do this or file a bug

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1991
&gt; +        // FIXME: why is this check here, and not later (after the type-based replacement by false).
&gt; +        // Saam seems to agree that the two checks could be switched, I&apos;ll try that in a separate patch

again, a FIXME with no link

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2012
&gt; +            // FIXME: Is there any case not involving NaN where x === x is not guaranteed to return true?

ditto

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:206
&gt; +                // FIXME: the freezing does not appear useful (since the JSCell is kept alive by vm), but it refuses to compile otherwise.

it&apos;s fine to freeze it.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:207
&gt; +                // FIXME: we might optimize inc/dec to a specialized function call instead in that case.

what&apos;s &quot;that&quot; case?
Also, no bug

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:222
&gt; +                // FIXME: consider having a special representation for small BigInts instead.

we will definitely want this at some point. I imagine something like what we have for Int52.

Please file a bug

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:225
&gt; +                // FIXME: we might optimize inc/dec to a specialized function call instead in that case.

ditto about what &quot;that&quot; is referring to

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:740
&gt; +            if (Node::shouldSpeculateHeapBigInt(node-&gt;child1().node(), node-&gt;child1().node())) {

this looks wrong. You want to use child2.node() here, right?

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:3574
&gt; +        // FIXME: what should we do about BigInt32Use and AnyBigIntUse ?
&gt; +        // Also more broadly, what about all of the UseKinds which are not listed in that switch?

This seems like a FIXME more for yourself than one that should be checked in.

Currently, we should nothing for BigInt32 here. But in the future, we&apos;ll want to handle it like int 52

For the above Cell cases, we should probably have other cell uses listed there too

&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1543
&gt;      if (speculationContains(prediction, SpecBigInt))
&gt; -        return freeze(m_vm.bigIntConstantOne.get());
&gt; +        return freeze(m_vm.heapBigIntConstantOne.get());

This is incomplete.

We should specialize this on BigInt32 vs HeapBigInt if possible. And then resorting to the heap variant if needed

&gt; Source/JavaScriptCore/dfg/DFGNodeFlags.h:57
&gt; +// FIXME: we should have separate flags for HeapBigInt and BigInt32, currently prediction propagation will pessimize things.

needs a bug

Also, how will it pessimize things?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3567
&gt; +    // FIXME: add support for mixed BigInt32 / HeapBigInt

link bug

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3589
&gt; +    speculate(node, child1); // Required for the AnyBigIntUse case

this comment is not needed as this is idiomatic code

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3674
&gt; +        speculate(node, leftChild); // Required for AnyBigIntUse

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3679
&gt; +        speculate(node, rightChild); // Required for AnyBigIntUse

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3938
&gt; +    // FIXME: support BigInt32

again, you need a bug for this

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4032
&gt; +        // FIXME: do we really need this extra register, or can we mutate left/right ?

In general, no. The DFG relies on re-using the left/right in the same register for later operations that use these same nodes.

However, you can do a pattern you can look for elsewhere, where you try to &quot;Reuse&quot; one of your children as your result register. This might give resultGPR allocated as one of the inputs, if this node is a kill for one of the inputs.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4044
&gt; +        // FIXME: add some way to eliminate the overflow check

how?
And also, a bug if you really think it&apos;s possible

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4047
&gt; +        speculationCheck(Overflow, JSValueRegs(), 0, check);

what&apos;s preventing us from doing a forever OSR exit loop here?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4050
&gt; +        jsValueResult(resultGPR, node);

do we not have a bigint32 format result? Seems worth having

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4065
&gt; +        // FIXME: call a more specialized function

link to a bug

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4138
&gt; +        // FIXME: do we really need this extra register, or can we mutate left/right ?

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4139
&gt; +        // FIXME: also, look into Reuse and other tricks for a more efficient generated code.

yep,
and a bug here too!

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4150
&gt; +        // FIXME: add some way to eliminate the overflow check

ditto: how?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4153
&gt; +        speculationCheck(Overflow, JSValueRegs(), 0, check);

ditto: what&apos;s preventing us from exit looping if inputs are always BigInt32s that overflow when operated on together?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4988
&gt; +        // FIXME: do we really need this extra register, or can we mutate left/right ?

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4989
&gt; +        // FIXME: also, look into Reuse and other tricks for a more efficient generated code.

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5003
&gt; +        speculationCheck(Overflow, JSValueRegs(), 0, check);

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5507
&gt; +    // FIXME: add a fast path for BigInt32. Currently we go through the slow path, because of how ugly the code for Mod gets.

seems like we should be able to share it into a snippet with normal i32 code?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6284
&gt; +    // FIXME: add HeapBigInt case here.
&gt; +    // Not having it means that the compare will not be fused with the branch for this case.

Seems like we should add it!

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6375
&gt; +        if (branchIndexInBlock != UINT_MAX) {
&gt; +            Node* branchNode = m_block-&gt;at(branchIndexInBlock);
&gt; +            compilePeepHoleBigInt32Branch(node, branchNode, MacroAssembler::Equal);
&gt; +            use(node-&gt;child1());
&gt; +            use(node-&gt;child2());
&gt; +            m_indexInBlock = branchIndexInBlock;
&gt; +            m_currentNode = branchNode;
&gt; +            return true;
&gt; +        }

do you have tests for this?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13333
&gt; +    // FIXME: add a fast path for BigInt32 here (and for typeOf, and for boolify or whatever it is called in this file).

yes, you should do this.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:399
&gt; +        // Instead of doing two branches, we can do a single one, by observing that

nice

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:511
&gt; +    m_jit.xor64(TrustedImm64(invert), resultGPR);

was this wrong before?

Do we have tests?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1392
&gt; +    (SpeculateBigInt32Operand(this, edge)).gpr();

style nit: no need for the outer parens here

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1436
&gt; +            ASSERT(jsValue.isBigInt32());

should be a DFG_ASSERT

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1769
&gt; +    // If we add a DataFormatBool, we should use it here.
&gt; +    m_jit.or32(TrustedImm32(JSValue::ValueFalse), result.gpr());
&gt; +    jsValueResult(result.gpr(), m_currentNode, DataFormatJSBoolean);

why not unblessedBooleanResult?

If you keep it, you should call &quot;boxBoolean&quot; instead of manually doing it

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2154
&gt; +            blessSpeculation(result, Overflow, noValue(), nullptr, m_origin);

ditto about what&apos;s preventing OSR exit loop here

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2192
&gt; +            blessSpeculation(result, Overflow, noValue(), nullptr, m_origin);

ditto

The feedback loop that I can&apos;t find would be some kind of profiling letting us know if it&apos;s OK to speculate this or if we should instead say our return type is &quot;BigInt32 | HeapBigInt&quot; and allow overflow

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2349
&gt; +            // FIXME: This is not supported by the IC yet.

bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2629
&gt; +        // FIXME: add a fast path for BigInt32 here

bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2710
&gt; +        if (m_node-&gt;binaryUseKind() == HeapBigIntUse) {

bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2888
&gt; +        // FIXME: maybe add a fast path for BigInt32 here

bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3354
&gt; +            // No need to unbox, since the tagging is not affected by bitAnd

bitOr, not bitAnd

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3387
&gt; +            LValue result = m_out.bitOr(resultMissingTag, m_out.constInt64(JSValue::BigInt32Tag));

can we have a helper called &quot;boxBigInt32&quot; in FTLLower and use that here?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3447
&gt; +            m_out.bitAnd(lowInt32(m_node-&gt;child2()), m_out.constInt32(31)))); // FIXME: I don&apos;t think that the BitAnd is useful, it is included in the semantics of shift in B3

bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3454
&gt; +            m_out.bitAnd(lowInt32(m_node-&gt;child2()), m_out.constInt32(31)))); // FIXME: I don&apos;t think that the BitAnd is useful, it is included in the semantics of shift in B3

ditto

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3460
&gt; +        // FIXME: consider adding a fast path for BigInt32 here.

ditto

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3482
&gt; +            m_out.bitAnd(lowInt32(m_node-&gt;child2()), m_out.constInt32(31)))); // FIXME: I don&apos;t think that the BitAnd is useful, it is included in the semantics of shift in B3

ditto

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8739
&gt; +            ValueFromBlock resultLeftEqualsRight = m_out.anchor(m_out.booleanTrue);

you could &quot;anchor&quot; this before the branch, and not need a block to jump to, and instead jump to continuation with about equal(left, right) branch

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8752
&gt; +            // FIXME: [ESNext][BigInt] Create specialized version of strict equals for big ints

I feel like we should just inline the comparison

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8938
&gt; +        // FIXME: we can do something much smarter here, see the DFGSpeculativeJIT approach in e.g. SpeculativeJIT::nonSpeculativePeepholeStrictEq

bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17151
&gt; +        // FIXME: we should filter the type passed to isCell to account for the previous test that told us we are definitely not a BigInt32.

should be simple enough to do or have a bug

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17155
&gt; +        m_out.appendTo(isNotCellCase, isCellCase);
&gt; +        ValueFromBlock returnTrue = m_out.anchor(m_out.booleanTrue);

if you do this anchor before the above branch the above branch can just go to continuation

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17673
&gt; +    LValue isNotHeapBigIntUnknownWhetherCell(LValue value, SpeculatedType type = SpecFullTop)

This entire implementation below the proven check looks inverted if I&apos;m understand the name.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17681
&gt; +        ValueFromBlock defaultToFalse = m_out.anchor(m_out.booleanFalse);

should be true, right? If you&apos;re not a cell, it&apos;s &quot;true&quot; you&apos;re not a heap big int

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17685
&gt; +        ValueFromBlock returnForCell = m_out.anchor(isHeapBigInt(value, type));

inverted, right?

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:760
&gt; +    urshift64(TrustedImm32(16), result);

we need a helper called &quot;unboxBigInt32&quot; and it should be used everywhere instead of emitting this shift manually everywhere. This makes refactoring and reading JIT code like this in the future much easier.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:934
&gt; +    Jump branchIfBigInt32(GPRReg gpr, GPRReg tempGPR, TagRegistersMode mode = HaveTagRegisters)

this probably doesn&apos;t need a temp if you change the other branch to just use the masm temp register

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:962
&gt; +    Jump branchIfNotBigInt32KnownNotNumber(GPRReg gpr, GPRReg tempGPR)

you&apos;re allocating a scratch all over the place for this thing. Why not just use the assembler scratch register? I don&apos;t think the other instructions you&apos;re using rely on also using that scratch register. Seems much better than what you&apos;re currently doing. The only thing you need to ensure is that any patchpoint in FTL that uses these is marked as clobbering that register.

You could also keep this helper, but have one that defaults to using the masm scratch registers.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:971
&gt; +    // FIXME: rename these to make it clear that they require their input to be a cell.

bug

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:994
&gt; +    // FIXME: rename these to make it clear that they require their input to be a cell.

bug
alternatively, require caller to wrap input in some type that marks it as a cell, like &quot;class KnownCellGPR { explicit KnownCellGPR(GPRReg r) m_gpr(r) {} operator GPRReg() { return m_gpr; } GPRReg m_gpr; }

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1402
&gt; +    void unboxBigInt32(GPRReg gpr)

you have these! You should use them everywhere :-)

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1407
&gt; +    void boxBigInt32(GPRReg gpr)

ditto

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:297
&gt; +    move(TrustedImm64(JSValue::BigInt32Mask), regT1);
&gt; +    and64(regT1, regT0);

this can&apos;t be done in one insn?

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:621
&gt; +    // Leaving only doubles above or equal 1&lt;&lt;50.

we go to the slow path for doubles?

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:637
&gt; +    // FIXME: we could do something more precise: unless there is a BigInt32, we only need to do the slow path if both are strings

bug

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:712
&gt; +    move(regT0, regT2);
&gt; +    move(regT1, regT3);
&gt; +    move(TrustedImm64(JSValue::LowestOfHighBits), regT5);
&gt; +    add64(regT5, regT2);
&gt; +    add64(regT5, regT3);
&gt; +    lshift64(TrustedImm32(1), regT5);
&gt; +    or64(regT2, regT3);
&gt; +    addSlowCase(branch64(AboveOrEqual, regT3, regT5));

you do this in a few places. Any way to abstract the code out into a helper somehow?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2864
&gt; +// FIXME: it would be better to call those operationValueNegate, since the operand can be a BigInt

bug

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2880
&gt; +        if (value != INT_MIN)

nit: I think we try to use std::numeric_limits, but I&apos;m not 100% on style guidance here

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:3001
&gt; +    // FIXME: why does this function profile the argument but not the result?

did you figure this out?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:971
&gt; +        # FIXME: the next line jumps to the slow path for BigInt32. We could instead have a dedicated path in here for them.

let&apos;s do it, or file a bug

&gt; Source/JavaScriptCore/runtime/BigIntPrototype.cpp:85
&gt; +    // FIXME: heap-allocating all big ints is inneficient, but re-implementing toString for small BigInts is enough work that I&apos;m deferring it to a later patch.

please file a bug on this one

&gt; Source/JavaScriptCore/runtime/BigIntPrototype.cpp:131
&gt; +// FIXME: this function should introduce the right separators for thousands and similar things.

bug

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:549
&gt; +        int32_t value = primValue.bigInt32AsInt32();
&gt; +        if (value != INT_MIN) {

you have this sequence of code in quite a few places. It&apos;d be good to make it a helper for negate

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1896
&gt; +        for (unsigned i = 0; i &lt; lengthLimitForBigInt32 &amp;&amp; p &lt; length ; ++i, ++p) {

style nit: no space before &quot;;&quot;

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:1918
&gt; +                    digit *= -1;

this looks wrong if it&apos;s INT_MIN. Do we have a test?

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:454
&gt; +    static constexpr int64_t LowestOfHighBits = 1ULL &lt;&lt; 49;

nit: this name doesn&apos;t seem fully expressive. Maybe &quot;LowestOfNumberTagBits&quot; or something similar. &quot;HighBits&quot; is kinda ambiguous.

It&apos;s also not the end of the world if we can&apos;t think of a better name since these asserts below give the idea quickly.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:456
&gt; +    static_assert(!((LowestOfHighBits&gt;&gt;1) &amp; NumberTag));

style:  need a space between &quot;&gt;&gt;&quot; and lhs/rhs

Also, should we add another static cast that this + NumberTag == 0? Since we&apos;re relying on the overflow here (with whatever casting to unsigned needed to make it not UB)

&gt; Tools/Scripts/run-jsc-stress-tests:711
&gt; +def runBigIntEnabledNoJIT(*optionalTestSpecificOptions)
&gt; +    run(&quot;big-int-enabled-nojit&quot;, &quot;--useBigInt=true&quot;, &quot;--useJIT=false&quot;, *optionalTestSpecificOptions)
&gt; +end
&gt; +
&gt; +def runBigIntEnabledBaseline(*optionalTestSpecificOptions)
&gt; +    run(&quot;big-int-enabled-baseline&quot;, &quot;--useBigInt=true&quot;, &quot;--useDFGJIT=0&quot;, *optionalTestSpecificOptions)
&gt; +end

do we really need these now that big int is enabled by default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651759</commentid>
    <comment_count>47</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 09:17:27 -0700</bug_when>
    <thetext>No follow-up to Saam&apos;s review?

It introduced a couple build warnings we should fix:

[151/1959] Building CXX object Source/...riptCore.dir/ftl/FTLLowerDFGToB3.cpp.o
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp: In member function ‘void JSC::FTL::{anonymous}::LowerDFGToB3::compileValueBitNot()’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3346:49: warning: comparison of integer expressions of different signedness: ‘const int64_t’ {aka ‘const long int’} and ‘long unsigned int’ [-Wsign-compare]
 3346 |             static_assert(JSValue::BigInt32Mask == 0xfffe000000000012);
      |                           ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~

[152/1959] Building CXX object Source/...ptCore.dir/dfg/DFGSpeculativeJIT.cpp.o
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp: In member function ‘void JSC::DFG::SpeculativeJIT::compileValueBitNot(JSC::DFG::Node*)’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3600:45: warning: comparison of integer expressions of different signedness: ‘const int64_t’ {aka ‘const long int’} and ‘long unsigned int’ [-Wsign-compare]
 3600 |         static_assert(JSValue::BigInt32Mask == 0xfffe000000000012);
      |                       ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~

0xfffe000000000012 is too big for int, unsigned int, or long int, so it uses long unsigned int. Then problem is JSValue::BigInt32Mask is a *negative-valued signed integer,* which is probably not intended? To fix these asserts without modifying JSValue::BigInt32Mask, we&apos;d have to do this:

static_assert(JSValue::BigInt32Mask == static_cast&lt;int64_t&gt;(0xfffe000000000012));

I can submit a patch for that, but maybe revisiting the types of the masks would be better since masks are generally best when unsigned. (Of course, changing the types of the masks will likely result in a bunch of new warnings. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651767</commentid>
    <comment_count>48</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 09:30:09 -0700</bug_when>
    <thetext>Reported bug #211783.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387545</attachid>
            <date>2020-01-13 10:56:48 -0800</date>
            <delta_ts>2020-01-29 18:39:40 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>WIPBigInt2</filename>
            <type>text/plain</type>
            <size>159795</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZh
bHVlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUu
anMKaW5kZXggYzY5ZGJkYTMzZDMuLmY4MTJiMWNiYTQxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwpAQCAtMyw3ICszLDcgQEAK
IGFzc2VydCA9IHsKICAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKICAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlICsgIiBpbnB1dDogIiArIGlucHV0ICsgIiAhPSBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsK
ICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwt
bm90LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcwppbmRleCBhZjI4
YTcyYjFjMy4uZDAyZTU1MmY5YzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bG9naWNhbC1ub3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5q
cwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5CaWdJbnRFbmFibGVkCiAKLWZ1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbikgewogICAgIGlmIChhICE9PSBlKSB7
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBsb2dpY2FsIG5lZ2F0aW9uIGZvciAiICsgbik7CiAgICAgfQogfQogCkBAIC0xMiw5
ICsxMiw5IEBAIGZ1bmN0aW9uIGxvZ2ljYWxOb3QoYSkgewogbm9JbmxpbmUobG9naWNhbE5vdCk7
CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSk7Ci0g
ICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgt
MW4pLCBmYWxzZSk7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFsc2UsIDEwbik7Cisg
ICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSwgMW4pOworICAgIGFzc2VydChsb2dpY2Fs
Tm90KDBuKSwgdHJ1ZSwgMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlLCAt
MW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNjRmNGVkZDM5Li45
ZmNiODA0MmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg2Niw2ICs4NjYs
NyBAQAogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3
RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJCTJBRjczODJE
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyNUJBMTMzN0U0
MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
MTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkzM0IyQTU0NzIyNjUzNDgxMDA1QTBGNzkgLyogQjNWYWx1ZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4
NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1ZhbHVlSW5saW5lcy5oICovOyB9OwogCQkzM0IyQTU0
ODIyNjU0M0JGMDA1QTBGNzkgLyogRlRMTG93ZXJERkdUb0IzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTA0MTcwNTEzREIwMEJCNzIyQyAv
KiBGVExMb3dlckRGR1RvQjMuY3BwICovOyB9OwpAQCAtMzUwMCw2ICszNTAxLDcgQEAKIAkJMkFG
NzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNp
Z25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNp
Z25hdHVyZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMxMTFCOEEy
Mzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAv
KiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0aCA9IGIz
L0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNz
b2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29j
aWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVF
eHByZXNzaW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM5NUM3MDQy
MjU1NUY2QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBi
My9CM0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc1MTEsNiArNzUxMyw3IEBACiAJCQkJMEZFMDUwMjAxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
ZEFyZ3VtZW50c1RhYmxlLmggKi8sCiAJCQkJMEZFMDUwMjExQUE5MDk1NjAwRDMzQjMzIC8qIFNj
b3BlT2Zmc2V0LmNwcCAqLywKIAkJCQkwRkUwNTAyMjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVP
ZmZzZXQuaCAqLywKKwkJCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAq
LywKIAkJCQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5jcHAg
Ki8sCiAJCQkJMTQ3MzQxQ0QxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCAq
LywKIAkJCQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hlci5oICovLApA
QCAtODg3MCw2ICs4ODczLDcgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3MDA4MEZGNzQgLyogQWly
VmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAv
KiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3NjIwQjFE
Qjk1OUY5MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxvY2F0b3JG
b3JNb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IGMxMDAyNDA0ZWY2Li4zNTc4NjgzYjU5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC00Njk4
LDcgKzQ2OTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAg
IC8vCi0gICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBw
cm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KKyAgICAgICAgLy8gQW4gaW1t
ZWRpYXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBo
YXMgYmVlbiBlbWl0dGVkLgogICAgICAgICAvLyBUaGUgd3JpdGVzIGFyZSB1bmNoZWNrZWQgc2lu
Y2UgdGhlIG9wY29kZSBmb3JtYXR0ZXJzIGFib3ZlIHdpbGwgaGF2ZSBlbnN1cmVkIHNwYWNlLgog
CiAgICAgICAgIHZvaWQgaW1tZWRpYXRlOChpbnQgaW1tKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCBmZWE2Njc0NWI2Mi4uNzU3NjEx
MjFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2Zp
bGUuY3BwCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJ
VCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVl
UmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJl
Z3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBp
ZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAm
JiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgp
ICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0lu
dCgpICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTcgQEAgdm9pZCBBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBq
aXQsIEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG5vdEJpZ0ludDMyOworICAgIGpp
dC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAg
ZW1pdFNldEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAg
bm90QmlnSW50MzIubGluaygmaml0KTsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5hcHBlbmQo
aml0LmJyYW5jaElmTm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQo
aml0LmJyYW5jaElmTm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1pdFNldEJp
Z0ludChqaXQpOworICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhlYXBCaWdJ
bnQocmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQpOwogICAg
IGRvbmUuYXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZqaXQpOwpA
QCAtODgsMTkgKzk2LDM1IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRT
ZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBCaXRmaWVsZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91
bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OnNob3VsZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0Cit7CisgICAgQml0ZmllbGRUeXBlIG1hc2sg
PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRzICYgbWFzaykg
IT0gbWFzazsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25zdAog
ewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAg
Qml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgcmV0
dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKIHRl
bXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmIGpp
dCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAgICBlbWl0
VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsKKyAgICBpZiAo
c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQo
aml0LCBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0
QmlnSW50MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRT
ZXRCaWdJbnQzMigpKQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVk
UmVzdWx0czo6QmlnSW50MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlv
bmFsU2V0KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAg
LTE0OSw4ICsxNzMsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IEFyaXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBh
cmF0b3IsICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAg
ICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9m
aWxlLmRpZE9ic2VydmVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBh
cmF0b3IsICJIZWFwQmlnSW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAg
ICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2Vw
YXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDBiZmU2YWZhN2JlLi5iZmFhMzYzYmUwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAt
NzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwg
MiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJPdmVy
ZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwKKyAg
ICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAgICAg
ICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0
c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVk
ID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNpdCBP
YnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQogICAg
IHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAo
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50KTsg
fQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQgfCBC
aWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2JpdHMg
JiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRPYnNl
cnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3VibGU7
IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYg
TmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJldHVy
biBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyBy
ZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyBy
ZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRpZE9i
c2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAgIGJv
b2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0KICAg
ICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50MzJP
dmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVybiBt
X2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1YmxpYzoK
ICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2
ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNl
cnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyBy
ZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9vbCBk
aWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRp
ZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigpIGNv
bnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9CiAg
ICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2Jz
ZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9E
b3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9CiAg
ICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3Vs
dHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7
IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNl
cnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAgIHZv
aWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpIZWFw
QmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9ic2Vy
dmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAgdm9p
ZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Oklu
dDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAgICAg
ICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVkUmVz
dWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSB8
IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAg
ICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAodmFs
dWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRz
OjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBP
YnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAgLTEz
OSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMgKElu
dDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9E
b3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0
IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVs
cGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7
CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywg
R1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKIAog
ICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0Rv
dWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNv
bnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAotICAg
IC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0Owog
Ci0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJz
JikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAgdm9p
ZCBlbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICB2b2lkIGVtaXRT
ZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgYm9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxk
RW1pdFNldEJpZ0ludDMyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0
aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpAQCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSA9IHVpbnQxNl90OwogY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9m
aWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7
CiAKLSAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNo
b3VsZCBmaXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBm
aXQgaW4gdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0
aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJn
T2JzZXJ2ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFy
aXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4g
ewogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNl
IHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2
ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5
cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5h
cnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7Cisg
ICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51
bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAi
U2hvdWxkIGZpdCBpbiB0aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQo
IShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRo
ZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVj
aWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRz
IHNob3VsZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhC
aXQgPiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgbm90
IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhpZ2hlciBiaXQu
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCBkZTZjYThkYzkxMC4uZGI1
NGNhOTZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgotI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNjI3MzRmOGMyOWQuLjk4MmFlMWJmMGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTks
NyArNTksNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODli
OS4uODg4MmRiMDY4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0Cit2b2lkIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJl
Z3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgTm9uZToKQEAgLTY3LDEyICs2NywxMiBA
QCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBVbmFy
eUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRP
YnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAg
dS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BS
LCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQmluYXJ5QXJpdGhQ
cm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZl
UmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS5iaW5h
cnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwgbW9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgKaW5kZXggMzZkMzY5ZjBjMDAuLjM4NWNjNTc4NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmgKQEAgLTgyLDcgKzgyLDggQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2tpbmQgIT0gTm9uZTsgfQogCi0gICAgdm9pZCBl
bWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MpIGNvbnN0OworICAgIC8v
IFRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgaXMgb25seSBuZWVkZWQgb24gNjQtYml0cyBidWlsZHMg
KGZvciB0ZXN0aW5nIEJpZ0ludDMyKS4KKyAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhl
bHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBI
YXZlVGFnUmVnaXN0ZXJzKSBjb25zdDsKICAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKaW5kZXggMTA1M2JhNTJiNTQuLmE3MWVhMjIxMGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTQzMSw3
ICs0MzEsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwogICAgIAog
ICAgIGlmIChjbGFzc0luZm8gPT0gSlNCaWdJbnQ6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIFNw
ZWNCaWdJbnQ7CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKIAogICAgIGlmIChjbGFz
c0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4gU3BlY0ZpbmFs
T2JqZWN0OwpAQCAtNTAwLDcgKzUwMCw3IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICBpZiAoc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsK
ICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQotICAg
ICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50Owog
ICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2ZWRBcnJheVR5cGUp
CiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVybiBzcGVjdWxhdGlv
bkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01MzYsNiArNTM2LDgg
QEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAgIHJldHVybiBTcGVj
Tm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkpCisgICAg
ICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAg
ICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKHZh
bHVlLmlzQm9vbGVhbigpKQpAQCAtNjMyLDYgKzYzNCwxMCBAQCBTcGVjdWxhdGVkVHlwZSBsZWFz
dFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlw
ZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0eXBlIHw9IFNwZWNT
dHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAgIHR5cGUgfD0gU3Bl
Y0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkLi5mZjI2NzEz
MmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKQEAgLTk4LDggKzk4LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwKIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgMzk7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRl
ZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBk
ZWZpbml0ZWx5IGVpdGhlciBhIGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJr
ZXIuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJ
bnQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Rh
dGFWaWV3Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
c21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQg
b24gdGhlIGhlYXAKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCaWdJbnQzMiB8IFNwZWNIZWFwQmlnSW50
Oworc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRh
Vmlldy4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAg
ICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVj
b2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0
IEpTVmFsdWUuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBT
cGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwg
U3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0
IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBT
cGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNw
ZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVj
RGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQg
b2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0
cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsLgpAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9vbCBpc1N5
bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQzMjsK
K30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID0gU3BlY0hlYXBCaWdJbnQ7Cit9CisKIGlubGlu
ZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQ7CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVl
ICYgU3BlY0JpZ0ludCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBib29sIGlzQXJyYXlTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggY2M4MTQzZTE5
OWYuLmU2MDE3Mzc3YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjg2NCw3ICsyODY0LDcgQEAg
SlNWYWx1ZSBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgdWludDgKICAgICByZXR1cm4gbV9iaWdJbnRNYXAuZW5zdXJlKEJp
Z0ludE1hcEVudHJ5KGlkZW50aWZpZXIuaW1wbCgpLCByYWRpeCwgc2lnbiksIFsmXSB7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKCkpOwogICAgICAgICBhdXRv
IHBhcnNlSW50U2lnbiA9IHNpZ24gPyBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpTaWduZWQgOiBK
U0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZDsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0lu
dEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlkZW50aWZpZXIuc3Ry
aW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywg
cGFyc2VJbnRTaWduKTsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRJbk1hcCA9IEpTQmlnSW50Ojpw
YXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJ
bnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CiAgICAg
ICAgIC8vIEZJWE1FOiBbRVNOZXh0XSBFbmFibGVzIGEgd2F5IHRvIHRocm93IGFuIGVycm9yIG9u
IEJ5dGVDb2RlR2VuZXJhdG9yIHN0ZXAKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDEzOQogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGJjNWJiYWU5N2MyLi5iMGVmMTliYjQ5YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNp
bmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJ
ZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5n
KiwgSWRlbnRpZmllclJlcEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFw
ID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRl
bnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAg
ICAgICB1c2luZyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9y
TWFwID0gSGFzaE1hcDx1aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6
OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBlZDI1MDdjZDA0OC4uMGI5NDZmZmVl
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJKU1By
b21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJO
dW1iZXJDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlQ2FjaGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRl
eCBmNWJkMWY1OTEyZi4uNjFhODYzMDc1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgi
CiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGFlMjI0Y2M3MzliLi40ODY1
OWMzZTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgi
CiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggOTIzODBhN2QwMzYuLjU0OTI5MThhZDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTM4MywxMCArMzgz
LDE0IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2
bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4n
dCBiZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2UgdGhlIG51bWJl
clRhZ1JlZ2lzdGVyLAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJl
c3RvcmUgaXQuCiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFk
ZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAg
ICAgIC8vIFdlIGFsc28gdXNlIHRoZSBub3RDZWxsTWFza1JlZ2lzdGVyIGFzIHRoZSBzY3JhdGNo
IHJlZ2lzdGVyLCBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBmaW5kIGEgbGVzcyBncm9zcyB3YXkgb2YgZG9pbmcgdGhpcywgbWF5YmUgdGhyb3VnaCBkZWxh
eWluZyB0aGVzZSBvcGVyYXRpb25zIHVudGlsIHdlIGFjdHVhbGx5IGhhdmUgc29tZSBzcGFyZSBy
ZWdpc3RlcnMgYXJvdW5kPworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVl
KGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpLCBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJl
clRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3Mo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0
Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERv
Tm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzayksIEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KQEAgLTM5
OCw3ICs0MDIsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0
LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAg
ICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00MDcsMTAgKzQxMSwx
MCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0s
IGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1Nh
dmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0Lm1fanNW
YWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIGppdC5w
b3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJl
Z3MoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0
Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCA1ZDA3NzMwY2RmMi4uOTc5NDEyNTMyYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtODUsNyArODUsNiBA
QAogI2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgi
CiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAK
ICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjIwLDU2ICsyMTksNiBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbAogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFs
T2JqZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBC
aWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIE51bWJlck9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIE51bWJlck9wZXJhdGlvbiYmIG51
bWJlck9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3AyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9w
KFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVt
ZXJpYykpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5h
bWUgSW50MzJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBi
aXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRP
cGVyYXRpb24mJiBiaWdJbnRPcCwgSW50MzJPcGVyYXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFy
KiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0g
ICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRv
IGxlZnROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gb3AyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGludDMyT3AoV1RGOjpn
ZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMp
KSkpOwotfQotCiBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBwYXJzZUludFJl
c3VsdChkb3VibGUgaW5wdXQpCiB7CiAgICAgaW50IGFzSW50ID0gc3RhdGljX2Nhc3Q8aW50Pihp
bnB1dCk7CkBAIC00NjksNzEgKzQxOCwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTW9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
LSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAg
IH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Ci0gICAgfTsK
LQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMg
PSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6
Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0g
V1RGOjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih2YWx1ZSArIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
SW5jKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3Bl
cmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91
YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2YWx1ZSAtIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRGVjKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5v
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7CiAKLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKH5XVEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU0Miwx
NSArNDU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJp
dEFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9w
ID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0Jp
Z0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0
d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBp
bnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0g
ICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNl
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50
T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0
d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qml0d2lzZUFuZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAt
NTU5LDE1ICs0NjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJp
Z0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0
LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBh
dXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90
IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJp
dHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBi
aWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikK
QEAgLTU3NiwxNSArNDcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBs
ZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0g
ICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50
MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IF4gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVy
biBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9w
MiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQml0d2lzZVhvcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMikKQEAgLTU5MywxNSArNDgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAg
ICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdo
dCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IDw8IChyaWdodCAmIDB4MWYpOwot
ICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVu
Y29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0xTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTYxMCwxNSArNDkwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCog
ewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0
LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90
IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA+
PiAocmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQg
c2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JTaGlm
dChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NTYs
MTUgKzUyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVE
aXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50
T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpT
QmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpk
aXZpZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVt
YmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAg
ICAgcmV0dXJuIGxlZnQgLyByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGds
b2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVy
YXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RpdihnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3co
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY3MywxNSArNTM3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0Jp
Z0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmpl
Y3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gb3BlcmF0
aW9uTWF0aFBvdyhsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRp
b24gb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1BvdyhnbG9i
YWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKSk7CiB9CiAKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
CkBAIC0xNjI3LDcgKzE0ODMsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3Qs
IG9wMSwgb3AyKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhnbG9i
YWxPYmplY3QsIG9wMSwgb3AyKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGFy
ZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIpCkBAIC0xNjYzLDEwICsxNTE5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW4KICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byB2YXJpYW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZh
bHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHZhcmlhbnQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFdURjo6Z2V0PEpTQmlnSW50Kj4odmFyaWFudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPih2YXJpYW50KSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxX
aXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDljYzJlOWY0MzcyLi5kMmY0ZDEzOGM0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwNTM5LDcgKzEw
NTM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3ltYm9sKEVkZ2UgZWRnZSkK
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVn
IGNlbGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Y2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZO
b3RCaWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNCaWdJbnQsIG1faml0LmJy
YW5jaElmTm90SGVhcEJpZ0ludChjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCkBAIC0xMzA0MSw3ICsxMzA0MSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMoTm9kZSogbm9kZSkKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIo
KSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFy
Z3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0Jp
Z0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDIx
NzE1ZDNkZDIyLi45YmJhNzQzOWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBP
U1JFeGl0JiBleGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3It
Pm1fdmFsdWVQcm9maWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQ
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7
CisgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgfQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFs
aXplIGFuIG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggODY2YWRhMzZlN2QuLjQyMTgzOWU0Yjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWls
ZGVyLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpq
c29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAg
ICAgICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbElu
ZGV4ID0gMDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2Vs
bC0+aXNCaWdJbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAh
bm9kZS5jZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVj
dHVyZSB8fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFn
cyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0
MGViYjQ0Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3Qu
aCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0j
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAi
U3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDVkZGNjMWI4MDZkLi5iZmUw
OTkxNGE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFs
bG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxv
Y2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFj
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApp
bmRleCA4MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNw
cApAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAg
ICAvLyBCaWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAg
ICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxs
KSwgMTApOworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRT
dHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEw
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDllZTkxNjMyOGQ5Li5hNWJlYTU5YmI3NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNjg4
LDcgKzY4OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29s
ZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1wbGVtZW50
cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVl
IGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBC
aWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJp
Z0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAg
ICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1h
cy11bmRlZmluZWQKQEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQog
ICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlm
ICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2
YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAg
IHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8v
ICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyArNzA4LDcg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZt
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElm
Tm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVl
LnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVl
LnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJ
bnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEsNyBAQCB2
b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpT
VmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1YWwgOiBO
b3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAgZG9uZS5h
cHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmln
SW50LmxpbmsodGhpcyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMyKGludmVy
dCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwog
ICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CkBAIC03NTMsNiArNzU1LDEzIEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlCiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5v
dE51bWJlcih2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCByZXN1
bHQpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgIGNvbXBh
cmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJbW0zMigwKSwg
cmVzdWx0KTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5s
aW5rKHRoaXMpOwogICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1
ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxz
ZQogICAgIG1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCBy
ZXN1bHQpOwpAQCAtNzY3LDcgKzc3Niw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNz
ZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAg
ICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAg
ICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmlu
ZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3Ig
dmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxl
bmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZv
ciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTc3Nyw2ICs3ODYsOCBAQCBBc3NlbWJseUhl
bHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpT
VmFsdWVSZWdzIHZhbAogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAg
ICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0g
ISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMy
KSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9
IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBA
IC03ODYsNyArNzk3LDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBl
cnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIAogICAgIGF1dG8gbm90
Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5j
aElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5j
aElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBi
cmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgx
Nyw3ICs4MjgsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6
YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIHRydXRoeS5hcHBlbmQo
YnJhbmNoUHRyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbVB0cihqc0VtcHR5U3RyaW5nKHZtKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1w
KCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0
aGlzKTsKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9u
WmVybywgQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0
aCgpKSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTg0Myw2ICs4NTQsMTMgQEAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUo
Vk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJ
bnQzMktub3duTm90TnVtYmVyKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVl
LmdwcigpLCBzY3JhdGNoKTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRj
aCk7CisgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblpl
cm8sIHNjcmF0Y2gpKTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJ
bnQzMi5saW5rKHRoaXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoNjQoaW52ZXJ0ID8gTm90
RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKHRydWUpKSkpKTsKICNlbHNlCiAgICAgYXV0byBub3RCb29sZWFuID0gYnJhbmNo
SWZOb3RCb29sZWFuKHZhbHVlLCBJbnZhbGlkR1BSUmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDI0Mjc3YmQyMDBmLi5jZmM5MzhkODYzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC05NTMs
NyArOTUzLDM3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihy
ZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyKEdQUlJlZyBncHIsIEdQUlJlZyB0
ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQorICAgIHsK
KyAgICAgICAgSnVtcCBudW1iZXIgPSBicmFuY2hJZk51bWJlcihncHIsIG1vZGUpOworICAgICAg
ICBKdW1wIGJpZ0ludDMyID0gYnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVt
cEdQUik7CisgICAgICAgIG51bWJlci5saW5rKHRoaXMpOworICAgICAgICByZXR1cm4gYmlnSW50
MzI7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BS
UmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAh
PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBh
bmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25O
b3ROdW1iZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MuZ3ByKCksIHRl
bXBHUFIpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJl
cihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh0ZW1w
R1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7CisgICAg
ICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBHUFIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQor
CisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBy
ZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmT2JqZWN0
KEdQUlJlZyBjZWxsR1BSKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgoCkBAIC05NzUs
MTMgKzEwMDUsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90
RXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMih0eXBlKSk7CiAgICAgfQotICAgIAorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0
aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJl
IGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmU3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVy
biBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElm
Tm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQ
UiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmU3ltYm9sKEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1w
IGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5
cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmQmlnSW50KEdQUlJl
ZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0K
LSAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmSGVh
cEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJp
Z0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQogICAg
IEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZU
eXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5j
dGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpT
RnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTczNCw3ICsxNzY1LDcgQEAgcHVibGljOgogICAg
ICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7
CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNl
IGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2lu
dCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTc0NSw2ICsxNzc2
LDggQEAgcHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9
IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisg
ICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVy
biBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRl
ZmluZWQKICAgICAgICAgLy8gfQpAQCAtMTc3NiwxMCArMTgwOSwxMCBAQCBwdWJsaWM6CiAKICAg
ICAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBi
cmFuY2hJZk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0g
YnJhbmNoSWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5
cGU6OkJpZ0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAg
ICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlw
ZTo6U3ltYm9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7
CkBAIC0xNzk1LDYgKzE4MjgsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4g
PSBicmFuY2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlw
ZW9mVHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1wIG5vdEJpZ0ludDMyID0gYnJhbmNo
SWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgICAgICBmdW5j
dG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RCaWdJbnQzMi5saW5r
KHRoaXMpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlVu
ZGVmaW5lZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggMjc5NWY5N2E2ZWIuLmE1MTJiYWVjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTU1NCw5ICs1NTQsMTAgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENv
bXBpbGVPcFN0cmkKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBz
cmMyLCByZWdUMSk7CiAgICAgCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0
byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEg
Y2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgLy8gRklYTUU6IHdlIGNv
dWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMy
LCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCiAg
ICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyAgICBhbmQ2
NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwog
ICAgIAogICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3Qg
aWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CkBAIC01OTcs
OSArNTk4LDEwIEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93
IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvLyBKdW1wIHNsb3cg
aWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cyku
CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVz
cyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBp
ZiBib3RoIGFyZSBzdHJpbmdzCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIG9yNjQocmVn
VDEsIHJlZ1QyKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMikpOwogCiAgICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRv
dWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0
aGVuIHRlc3QKQEAgLTY2OSw3ICs2NzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmlj
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVn
VDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAg
ICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMTkx
MDQ1NGMzODkuLjMyZmUwMzJhMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNo
SWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdU
MCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAg
IEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlMjZjZDhh
YmIyLi5jMTg3ZWFmMTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0yNzg0LDggKzI3ODQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IFByZWZlck51bWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1W
YWx1ZSkpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFs
dWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9Cisg
ICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgp
KSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBA
IC0yODA3LDEwICsyODE0LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1
ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7Cisg
ICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFs
dWUpOworICAgIH0KKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFz
SGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3Vs
dCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApA
QCAtMjg0Miw4ICsyODU4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgSlNWYWx1
ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCi0gICAgaWYg
KHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0Jp
Z0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisgICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5i
aWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUp
OworICAgICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1
ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChy
ZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpA
QCAtMjg3NCw5ICsyOTAwLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1Zh
bHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKworICAgIC8v
IEZJWE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBu
b3QgdGhlIHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBp
ZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAg
ICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJp
Z0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCmluZGV4IGZlYjMzZjNiMzY5Li43NDE3ZGUzYzNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTg3MCw3ICs4NzAsNyBAQCBtYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0
MCkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBhbmRx
IHQxLCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKICAgICAgICAgYnFh
ZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAu
c2xvdwpAQCAtOTA0LDcgKzkwNCw3IEBAIG1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQzLCB0MSkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0
MgorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNs
b3cKICAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0
MCwgbnVtYmVyVGFnLCAuc2xvdwpAQCAtOTM1LDI0ICs5MzUsMjYgQEAgc3RyaWN0RXF1YWxpdHlK
dW1wT3Aoam5zdHJpY3RlcSwgT3BKbnN0cmljdGVxLAogbWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlw
ZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJp
dGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICAgICAgICAgIG9y
aCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlB
cml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAgZW5kCiAKLSAgICAgICAgZ2V0KG1fc3Jj
RHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MwotICAgICAgICBtZXRhZGF0
YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4gdDEsIHNyY0RzdCBpbiB0MwotICAgICAg
ICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAgICAgaW50ZWdlck9wZXJhdGlvbih0Mywg
LnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAgICAgIHN0b3JlcSB0MywgW2Nm
ciwgdDAsIDhdCi0gICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCi0g
ICAgICAgIGRpc3BhdGNoKCkKKyAgICBnZXQobV9zcmNEc3QsIHQwKQorICAgIGxvYWRxIFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBtZXRhZGF0YSh0MiwgdDMpCisgICAgIyBzcmNEc3QgaW4gdDEsIG1l
dGFkYXRhIGluIHQyCisgICAgIyBGSVhNRTogdGhlIG5leHQgbGluZSBqdW1wcyB0byB0aGUgc2xv
dyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNhdGVkIHBh
dGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICBicWIgdDEsIG51bWJlclRhZywgLnNsb3cKKyAgICBp
bnRlZ2VyT3BlcmF0aW9uKHQxLCAuc2xvdykKKyAgICBvcnEgbnVtYmVyVGFnLCB0MQorICAgIHN0
b3JlcSB0MSwgW2NmciwgdDAsIDhdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmls
ZUludCkKKyAgICBkaXNwYXRjaCgpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQor
CiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJlciwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA2MDU3MTI4NDZmMy4uODZkMjhl
ZDVjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggMmZmM2Y3OTcyMGIuLjhiNDY5N2ZlMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC03NSwxOCArNzUsNiBA
QCB2b2lkIEJpZ0ludENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEJpZ0ludFBy
b3RvdHlwZSogYmlnSW50UHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgYm9v
bCBpc1NhZmVJbnRlZ2VyKEpTVmFsdWUgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFyZ3VtZW50Lmlz
SW50MzIoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWFyZ3VtZW50LmlzRG91
YmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRvdWJsZSBudW1iZXIgPSBhcmd1
bWVudC5hc0RvdWJsZSgpOwotICAgIHJldHVybiB0cnVuYyhudW1iZXIpID09IG51bWJlciAmJiBz
dGQ6OmFicyhudW1iZXIpIDw9IG1heFNhZmVJbnRlZ2VyKCk7Ci19Ci0KIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFy
Z3VtZW50KQogewogICAgIEFTU0VSVChhcmd1bWVudC5pc1ByaW1pdGl2ZSgpKTsKQEAgLTk0LDIw
ICs4MiwxOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICAKICAgICBpZiAoYXJndW1lbnQu
aXNCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudCk7Ci0g
ICAgCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAorCiAg
ICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQu
YXNCb29sZWFuKCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxs
KCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBh
cmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJU
KGFyZ3VtZW50LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2
aWV3KSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50
KGdsb2JhbE9iamVjdCwgdmlldykpOwotICAgIH0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVhbigp
KSk7CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9T
dHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChn
bG9iYWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFy
Z3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1
bWVudC5pc1N5bWJvbCgpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dmFsaWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTks
MjAgKzEwNiwxNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmln
SW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0
aXZlID0gdmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNO
dW1iZXIoKSkgewotICAgICAgICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAot
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigp
KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJv
bSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJ
bnQzMiwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOwogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNV
SW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5p
c0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUo
KTsKKyAgICAgICAgaWYgKHRydW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJl
cikgPiBtYXhTYWZlSW50ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBh
IHNhZmUgaW50ZWdlciJfcykpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0Rv
dWJsZSgpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMk9ySGVhcCwgdm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5h
c0RvdWJsZSgpKSkpOwogICAgIH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9
IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1
ZGFjOTYuLjZhN2ZkNTAyMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludE9iamVjdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEJpZ0ludE9iamVjdCk7CiBjb25zdCBDbGFzc0luZm8gQmlnSW50
T2JqZWN0OjpzX2luZm8gPSB7ICJCaWdJbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJpZ0ludE9iamVjdCkgfTsKIAogCi1CaWdJbnRPYmpl
Y3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGJpZ0ludCkKK0JpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJpZ0ludCkK
IHsKICAgICBCaWdJbnRPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEJpZ0ludE9iamVjdD4odm0uaGVhcCkpIEJpZ0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5i
aWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwg
YmlnSW50KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgQmlnSW50T2JqZWN0OjpCaWdJbnRPYmplY3QoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBCaWdJbnRPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNCaWdJbnQqIGJpZ0ludCkKK3ZvaWQgQmlnSW50T2JqZWN0
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAppbmRleCA0NGZjNzZm
YmRmOS4uMTI2ZWM2OGU2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludE9iamVjdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmln
SW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJp
Z0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsg
fQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9i
amVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHBy
b3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3Ry
dWN0dXJlKik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcAppbmRleCBkYjRhNjE4ODk5ZC4uYTg0MzQ2OTk5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAt
NzksMTIgKzc5LDIwIEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRv
VGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgLy8gRklY
TUU6IGhlYXAtYWxsb2NhdGluZyBhbGwgYmlnIGludHMgaXMgaW5uZWZpY2llbnQsIGJ1dCByZS1p
bXBsZW1lbnRpbmcgdG9TdHJpbmcgZm9yIHNtYWxsIEJpZ0ludHMgaXMgZW5vdWdoIHdvcmsgdGhh
dCBJJ20gZGVmZXJyaW5nIGl0IHRvIGEgbGF0ZXIgcGF0Y2guCisgICAgaWYgKHRoaXNWYWx1ZS5p
c0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdGhp
c1ZhbHVlLmJpZ0ludDMyQXNJbnQzMigpKTsKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkp
IHsKICAgICAgICAgaWYgKEpTQmlnSW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50
Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50Owot
ICAgICAgICAKLSAgICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAo
QmlnSW50T2JqZWN0KiBiaWdJbnRPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+
KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9
IGJpZ0ludE9iamVjdC0+aW50ZXJuYWxWYWx1ZSgpOworICAgICAgICAgICAgaWYgKGJpZ0ludC5p
c0JpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgcmV0dXJuIGJpZ0lu
dC5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtOTksOCArMTA3LDYgQEAgc3RhdGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5jVG9TdHJp
bmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Iid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CiAKLSAg
ICBBU1NFUlQodmFsdWUpOwotCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1Jh
ZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29wZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTE4LDYgKzEyNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShi
aWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0K
IAorLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2Vw
YXJhdG9ycyBmb3IgdGhvdXNhbmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCmluZGV4IDgxNmJiMmYzMmI1Li43M2IzNjJjNzU3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OSw3
ICs2OSw2IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVBy
b2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3MCwxMyArNDY5LDgg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BJbmM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9D
KGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRv
dWJsZT4gcmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNJbmMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0
ID0gSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0
VmFyaWFudCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8
ZG91YmxlPihyZXN1bHRWYXJpYW50KSArIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19D
VVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNDg1LDEzICs0
NzksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcERlYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0g
R0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50
KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsK
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICBy
ZXN1bHQgPSBKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
ZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6
OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpIC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklM
SU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcs
NiArNDk2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9w
KE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKIHsKICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2Jz
ZXJ2ZUFyZyhvcGVyYW5kKTsKKyAgICAvLyBGSVhNRTogdGhpcyBhc3NlcnRpb24gaXMgaW5jb21w
YXRpYmxlIHdpdGggdGhlIGxhc3QgY2FzZSAoTm9uTnVtZXJpYykuCiAgICAgQVNTRVJUKHJlc3Vs
dC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVt
YmVyKCkpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01MjgsOCArNTE4
LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5l
Z2F0ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAg
ICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsKKyAgICBlbHNlIGlmIChyZXN1bHQu
aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7
CiAgICAgZWxzZQogICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygpOwogfQpA
QCAtNTQ2LDggKzUzOCwxOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogICAg
IEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFBy
ZWZlck51bWJlcik7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFy
eU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmln
SW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJ
bnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAg
ICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CisgICAgICAgICAgICAgICAgdXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9wZXJhbmQp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAg
aWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAg
ICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0
ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsK
ICAgICAgICAgfSk7CkBAIC01ODUsOCArNTg4LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRo
UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVC
CiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0lu
dCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlm
IChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50
MzIoKTsKKyAgICBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwOCwxMyArNjEzLDggQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRf
QyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50Kiwg
ZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICBy
ZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAg
ICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7
CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRo
bWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0
b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJl
cigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVp
ciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8g
aWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcyLDI0ICs2NzIsOCBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7
CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAg
ICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBh
dXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAg
ICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklM
SU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFy
eUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmln
aHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAg
ICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY4NSw4
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocyku
anNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNW
YWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmln
aHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Rpdihn
bG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBS
RVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJp
dGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJl
c3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUg
YSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpn
ZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
YSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBk
YXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
cGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs2OTgsOSBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUo
KTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5kZXIo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
fHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAg
ICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91Ymxl
IGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6
Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwg
YikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3BvdykKQEAgLTc1OCwyNSArNzA5LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykK
ICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxl
ZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
YXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENI
RUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikp
OwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVy
aWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0g
ICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4o
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwy
MiArNzIwLDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhi
eXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1
dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
SW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0
aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8
aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMp
ICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQo
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwy
MiArNzMyLDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhi
eXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1
dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmln
aHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChq
c051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMy
X3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0
KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
IFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
dXJzaGlmdCkKQEAgLTg1MCw3OSArNzYxLDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9i
aXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0
bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJh
bmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19F
WENFUFRJT04oKTsKKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQp
LmpzVmFsdWUoKTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
b3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVy
aWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxF
RChyZXN1bHQpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpn
ZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdp
c2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAg
ICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BC
aXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5q
c1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNW
YWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICBhdXRv
IGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQg
PSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgICAgIFRIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVS
Tl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6
OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jp
dHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19F
WENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhz
KS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9y
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAg
YXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJp
Z2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJF
VFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBX
VEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJ
T04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdp
c2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIp
KTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUo
KTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAot
ICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJp
YykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5jcHAKaW5kZXggMGFmOTM0Mjc2ZWIuLjIwMjI5ZTg2NTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0xODgsMzQgKzE4OCwyMSBAQCBK
U1ZhbHVlIEpTQmlnSW50Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlz
KTsKIH0KIAotT3B0aW9uYWw8dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JT
dHJpbmcoKQotewotICAgIGlmIChpc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgaWYgKGxlbmd0aCgpID09IDEgJiYgIXNpZ24oKSkgewotICAgICAgICBEaWdpdCByRGlnaXQg
PSBkaWdpdCgwKTsKLSAgICAgICAgaWYgKHJEaWdpdCA8PSA5KQotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJEaWdpdCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19
Ci0KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RyaW5nVmlldyBzLCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlKQorSlNWYWx1ZSBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmll
dyBzLCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlKQogewogICAgIGlmIChzLmlzOEJpdCgpKQog
ICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnM4KCksIHMu
bGVuZ3RoKCksIHBhcnNlck1vZGUpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIHBhcnNlck1vZGUpOwogfQogCi1KU0JpZ0lu
dCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2Rl
LCBQYXJzZUludFNpZ24gc2lnbikKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4
LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlLCBQYXJzZUludFNpZ24gc2lnbikKIHsKICAgICBp
ZiAocy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0s
IHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24s
IFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgdm0sIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4
LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwog
fQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcykKK0pTVmFsdWUgSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcykKIHsKICAgICBy
ZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLCBFcnJvclBhcnNlTW9kZTo6SWdub3JlRXhj
ZXB0aW9ucyk7CiB9CkBAIC00NTQsMTYgKzQ0MSwyMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJl
bWFpbmRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJ
bgogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0
aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIGFkZChnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENv
bnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFi
c29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6VW5zaWduZWQpOworICAg
IEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHgsIHgtPmxl
bmd0aCgpKTsKKyAgICByZXN1bHQtPnNldFNpZ24odHJ1ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpkZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNCaWdJbnQqIHgpCiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21l
dGhpbmcgYSBmYWlyIGJpdCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwotICAgIHJldHVybiBzdWIoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRD
b25zdGFudE9uZS5nZXQoKSk7CisgICAgaWYgKHgtPmlzWmVybygpKQorICAgICAgICByZXR1cm4g
Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAgIGlmICgheC0+c2lnbigpKQor
ICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgo
KSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2lnbk9wdGlv
bjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQpAQCAtNTMyLDcgKzUyMyw3
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAgaWYgKHgtPnNpZ24oKSkKICAgICAgICAg
c3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0g
eCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkKICAgICBKU0JpZ0ludCog
eTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHksIHktPmxlbmd0aCgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICByZXR1cm4gYWJzb2x1dGVB
bmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTYzNSw3IEBAIFN0cmluZyBKU0JpZ0ludDo6
dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkKIHsKICAg
ICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6
dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
NjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7CiAKICAgICBBU1NFUlQocmFkaXgg
Pj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcgKzE3OTMsNyBAQCBib29sIEpTQmlnSW50
OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
JiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUq
ICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQor
SlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFy
c2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMTgxMCw3
ICsxODAxLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKICAgICB3aGlsZSAocCA8IGxlbmd0
aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsKIAotICAgIC8vIENo
ZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgIC8vIENoZWNrIFJhZGl4IGZyb20g
Zmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsKICAgICAg
ICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdiJykpCiAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBw
ICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5zaWduZWQsIFBhcnNlSW50
TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0xODI0LDI0ICsxODE1LDE4IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUludFNpZ24gc2lnbiA9IFBhcnNlSW50U2ln
bjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGRhdGFbcF0g
PT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICct
JykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScpIHsKICAgICAgICAgICAgIHNpZ24gPSBQ
YXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAgKytwOwogICAgIH0KIAot
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBs
ZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7Ci0KLSAgICBpZiAocmVzdWx0ICYm
ICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJz
ZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9k
ZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
aGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNp
Z25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBz
aWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQ
YXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUg
cGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAgdW5zaWduZWQgcCA9
IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4MzcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRh
dAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGVycm9yUGFyc2VN
b2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAgICAgICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIC8vIFNr
aXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjcsNDAgKzE4NTIsNzMgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENo
YXJUeXBlKiBkYXQKICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CiAKICAgICBpZiAocCA9PSBs
ZW5ndGgpCi0gICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMCk7CisKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBw
aWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JC
aWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMy
OworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0
Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBs
ZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6
CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVs
bHB0cjsKIAogICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXgg
OiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVu
c2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1
bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0KLSAgICByZXN1bHQtPmlu
aXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7Ci0KLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgewotICAgICAgICB1aW50MzJfdCBkaWdp
dDsKLSAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAnICYmIGRhdGFbaV0gPCBsaW1pdDApCi0gICAg
ICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFbaV0g
Pj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCi0gICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0g
LSAnYScgKyAxMDsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8
IGxpbWl0QSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdBJyArIDEwOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBicmVhazsKKyAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAo
c3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGxpbWl0QSA9
ICdBJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQg
aW5pdGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBsZW5ndGgpIHsKKyAg
ICAgICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgQ3Jhc2hP
bk92ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsraSwgKytwKSB7Cisg
ICAgICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gcmFk
aXg7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtwXSA8IGxpbWl0MCkK
KyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAgICAgICAgICAgICAg
ICBkaWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRh
W3BdID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9
IGRhdGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAg
ICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJy
b3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwgbXVsdGlwbGllci51
bnNhZmVHZXQoKSk7CiAKLSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGlj
X2Nhc3Q8RGlnaXQ+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisgICAgICAg
IGlmICghaGVhcFJlc3VsdCkgeworICAgICAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpCisgICAgICAgICAg
ICAgICAgICAgIGRpZ2l0ICo9IC0xOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGhlYXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmpl
Y3QsIHZtLCByYWRpeCwgaW5pdGlhbExlbmd0aCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBoZWFwUmVzdWx0
LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0
aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERpZ2l0
PihkaWdpdCkpOwogICAgIH0KIAotICAgIHJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50
U2lnbjo6U2lnbmVkID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICBpZiAocCA9PSBsZW5ndGgpCi0gICAg
ICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7Ci0KLSAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhj
ZXB0aW9ucykKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmln
SW50IikpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihz
aWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3VsdC0+cmln
aHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQo
dW5zaWduZWQgbikKQEAgLTE5MjQsMTggKzE5NDIsMjAgQEAgYm9vbCBKU0JpZ0ludDo6ZXF1YWxz
VG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1i
ZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICBpbnQg
dmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5n
dGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGln
aXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+
KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAgICBkb3Vi
bGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21wYXJlVG9Eb3Vi
bGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCitib29sIEpT
QmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhpcy0+bGVuZ3Ro
KCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0
KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2
YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21w
YXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMgYWxnb3Jp
dGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uYzEzZWY2MDE1
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtOTAsMTMg
KzkwLDEyIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERpc2FsbG93
RW1wdHlTdHJpbmcsIEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50
U2lnbiB7IFVuc2lnbmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9y
UGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWdu
ID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUlu
dChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJz
ZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJpbmdUb0Jp
Z0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBF
cnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50
U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBh
cnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJpbmdUb0Jp
Z0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0cmluZyB0
cnlHZXRTdHJpbmcoVk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAgIE9wdGlv
bmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJpbmcgdG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAgZW51bSBj
bGFzcyBDb21wYXJpc29uTW9kZSB7CkBAIC0xMTMsNiArMTEyLDcgQEAgcHVibGljOgogICAgIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmln
SW50Kik7CiAgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENvbXBhcmlz
b25SZXN1bHQgY29tcGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAgYm9vbCBn
ZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYgcmVzdWx0KSBjb25zdDsKQEAgLTIyMiwxMCArMjIyLDEwIEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCog
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgRXJyb3JQYXJzZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFs
T2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2Rl
KTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJ
bnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJz
ZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUg
PSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUs
IFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJz
ZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxv
Y2F0ZUZvcihKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2lnbmVkIGNo
YXJjb3VudCk7CiAKQEAgLTI1OCw5ICsyNTgsOSBAQCBwcml2YXRlOgogICAgIENhZ2VkVW5pcXVl
UHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxpbmUgSlNC
aWdJbnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFzSGVhcEJp
Z0ludChKU1ZhbHVlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJ
bnQoKSk7CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7CiAgICAg
cmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1NDgwMTBlYjFjMC4u
YmI5Yzg3NjMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9v
bGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAtNzEsNiArNzIsMTIgQEAgZG91YmxlIEpTVmFs
dWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7CiAgICAgaWYgKGlzQ2VsbCgp
KQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
aWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmln
SW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4w
OworICAgIH0KICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJldHVybiAxLjA7CiAgICAgcmV0
dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252
ZXJ0IHRvIDAuCkBAIC0xMDEsNiArMTA4LDggQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0
U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlz
VHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9t
SW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisgICAgaWYgKGlzQmln
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsICp0aGlzKTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9y
KGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMjcsMTEgQEAgSlNWYWx1ZSBKU1Zh
bHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3Qs
IGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFz
VmFsdWUoKSk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBKU0NlbGwqIGhlYXBC
aWdJbnQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihKU0JpZ0ludDo6Y3JlYXRlRnJvbShnbG9iYWxP
YmplY3QtPnZtKCksIGJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgICAgIC8vIEZJWE1FOiB0aGVy
ZSBtdXN0IGJlIGEgc2ltcGxlciB3YXkgdG8gZmluZCB0b1RoaXMgZm9yIEpTQmlnSW50LCBidXQg
SSBjYW4ndCBldmVuIGZpbmQgd2hlcmUgaXQgaXMgZGVmaW5lZC4KKyAgICAgICAgcmV0dXJuIGhl
YXBCaWdJbnQtPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoaGVhcEJp
Z0ludCwgZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7CisgICAgfQogICAgIEFTU0VSVChpc1VuZGVm
aW5lZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9
CkBAIC0xMzAsNyArMTQ0LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5
cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBpZiAoaXNDZWxsKCkp
IHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAg
IGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJp
Z0ludFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwpAQCAtMTQwLDYgKzE1NCw4IEBA
IEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlclBy
b3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogCiAgICAgQVNTRVJUKGlz
VW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMjg2
LDYgKzMwMiw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJl
KAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkp
KTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09m
KFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlOiAi
LCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQpKTsKKyAg
ICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIkJp
Z0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAg
ICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNPYmpl
Y3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBSYXdQb2lu
dGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRlcmZseSAi
LCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAgLTMwNSw2
ICszMjMsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgK
ICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkK
ICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMy
KCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJ
bnQzMigpKTsKICAgICBlbHNlCiAgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAt
MzQ3LDYgKzM2Nyw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChp
c1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworICAgIGVsc2Ug
aWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVk
IiwgYmlnSW50MzJBc0ludDMyKCkpOwogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZB
TElEIik7CiB9CkBAIC0zODQsMTggKzQwNiwyMyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJp
bmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVybkVtcAog
ICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBpZiAoaXNV
bmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJp
bmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3Mp
OwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIGlmIChpc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAgICAgICAgICAgIHJldHVybiB2
bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGludGVnZXIgKyAnMCcpOworICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQo
aW50ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0lu
dCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byBkaWdpdCA9IGJp
Z0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHZt
LnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKLSAgICAg
ICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYmlnSW50
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKSB7
CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgLy8g
RklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2FzZXMgaGVyZTogb25lLWNoYXJhY3Rl
ciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBldmVyeXRoaW5nIGVsc2UuCisgICAg
ICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlKHZtLCBiaWdJbnQt
PnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApLnJlbGVhc2VJbXBsKCkucmVsZWFzZU5vbk51bGwo
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9yVmFsdWUoKSk7CiAg
ICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7CiAgICAgfQorICAgIGlmIChpc1N5bWJvbCgpKSB7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29u
dmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVybiBlcnJvclZhbHVl
KCk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
YXNDZWxsKCktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyU3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAyNTk5ZTJjNTYyOS4u
MjM3ODNkMDRkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTE3NSw2ICsxNzUsMTAgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNU
cnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxs
VGFnIHsgSlNDZWxsVHlwZSB9OworICAgIGVudW0gSlNCaWdJbnRUYWcgeyBKU0JpZ0ludDMyT3JI
ZWFwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcgeyBKU0Jp
Z0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNE
b3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4NCw2ICsxODgsMTEgQEAgcHVibGljOgog
ICAgIEpTVmFsdWUoSlNGYWxzZVRhZyk7CiAgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CiAgICAg
SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1Zh
bHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpOworI2VuZGlmCisgICAgLy8gUmV0dXJucyBlaXRo
ZXIgYSBCaWdJbnQzMiBvciBhIEhlYXBCaWdJbnQuCisgICAgSlNWYWx1ZShKU0JpZ0ludFRhZywg
Vk0mLCBpbnQ2NF90KTsKIAogICAgIC8vIE51bWJlcnMKICAgICBKU1ZhbHVlKEVuY29kZUFzRG91
YmxlVGFnLCBkb3VibGUpOwpAQCAtMjE3LDYgKzIyNiw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUg
YXNEb3VibGUoKSBjb25zdDsKICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJs
ZSBhc051bWJlcigpIGNvbnN0OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW50MzJfdCBiaWdJ
bnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5IGJlIGNhbGxlZCBvbiBhIEJpZ0ludDMy
CisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50MzJGb3JBcml0aG1ldGljKCkgY29uc3Q7
IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBvdGhlcndpc2UgbGlrZSBhc0ludDMyKCku
CiAKQEAgLTIzNiw2ICsyNDgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25z
dDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0
OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKKyNlbmRpZgogICAgIGJvb2wgaXNTeW1ib2woKSBj
b25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNl
dHRlcigpIGNvbnN0OwpAQCAtMjQ0LDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGluaGVy
aXRzKFZNJiwgY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VGFyZ2V0PiBib29sIGluaGVyaXRzKFZNJikgY29uc3Q7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm9Pck51bGwoVk0mKSBjb25zdDsKLSAgICAgICAgCisKICAgICAvLyBFeHRyYWN0aW5n
IHRoZSB2YWx1ZS4KICAgICBib29sIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFdURjo6U3Ry
aW5nJikgY29uc3Q7CiAgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwpAQCAtMjYzLDkgKzI3OSwxMCBA
QCBwdWJsaWM6CiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpcyBleHBlY3RlZCB0byBiZSBz
aWRlIGVmZmVjdCBmcmVlIGlmIGFuIGV4Y2VwdGlvbiBoYXMKICAgICAvLyBiZWVuIHNldCBpbiB0
aGUgQ2FsbEZyYW1lIGFscmVhZHkuCiAgICAgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7Ci0gICAgCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gdG9OdW1lcmlj
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGludDMyX3Q+
IHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCisgICAgSlNWYWx1ZSB0
b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvQmlnSW50T3JJ
bnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQo
KSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaWYgaXQgY2FuIGJlIGRvbmUg
d2l0aG91dCBzaWRlIGVmZmVjdHMuCiAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b051bWJlckZyb21Q
cmltaXRpdmUoKSBjb25zdDsKQEAgLTMxMyw4ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29s
IHN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0
RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpOwog
ICAgIHN0YXRpYyBUcmlTdGF0ZSBwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
Mik7CiAKICAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwpAQCAtNDEyLDExICs0MjgsMjAgQEAgcHVi
bGljOgogICAgICAqIFRoZXNlIHZhbHVlcyBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoK
ICAgICAgKiAtIEJpdCAxIChPdGhlclRhZykgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1ZXMsIGFs
bG93aW5nIHJlYWwgcG9pbnRlcnMgdG8gYmUKICAgICAgKiAgIHF1aWNrbHkgZGlzdGluZ3Vpc2hl
ZCBmcm9tIGFsbCBpbW1lZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxpZCBwb2lu
dGVycy4KLSAgICAgKiAtIFdpdGggYml0IDMgaXMgbWFza2VkIG91dCAoVW5kZWZpbmVkVGFnKSBV
bmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCisgICAgICogLSBXaXRoIGJpdCAzIG1hc2tlZCBv
dXQgKFVuZGVmaW5lZFRhZyksIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKICAgICAgKiAg
IHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8gYmUgcXVpY2tseSBkZXRl
Y3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2lsbCBoYXZlIHRoZSBiaXQg
cGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJyYXkKICAgICAgKiBob2xl
cywgYW5kIGFzIGEgQysrICdubyB2YWx1ZScgcmVzdWx0IChlLmcuIEpTVmFsdWUoKSBoYXMgYW4g
aW50ZXJuYWwgdmFsdWUgb2YgMCkuCisgICAgICoKKyAgICAgKiBXZSBoYXZlIGEgc3BlY2lhbCBy
ZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFsbCAoMzItYml0IGF0IG1vc3Qp
OgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAqIFRoaXMgcmVwcmVzZW50
YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAgKiAtIEl0
IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRo
ZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVy
IHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNldCB0byB0cnVlCisgICAgICog
LSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8g
Yml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVz
ZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICog
LSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZpbmVkIGJlY2F1c2UgYml0IDQg
aXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40OSwgdXNl
ZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgd2lsbCBiZWdp
bgpAQCAtNDMxLDYgKzQ1Niw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGludDMy
X3QgT3RoZXJUYWcgICAgICAgPSAweDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IEJv
b2xUYWcgICAgICAgID0gMHg0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBVbmRlZmlu
ZWRUYWcgICA9IDB4ODsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50MzJUYWcg
ICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1hc2sgICA9
IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOwogICAgIC8vIENvbWJpbmVkIGludGVnZXIgdmFsdWUg
Zm9yIG5vbi1udW1lcmljIGltbWVkaWF0ZXMuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90
IFZhbHVlRmFsc2UgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwgZmFsc2U7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlVHJ1ZSAgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwg
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCmluZGV4IDdkODY0NWM5MTYzLi5lZGFhMGY5NGZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yNDAsNiAr
MjM5LDE4IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQogICAg
IHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0X2Nhc3Q8
SlNDZWxsKj4ocHRyKSk7CiB9CiAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJU
YWcsIGludDMyX3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
aW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2YWwp
Cit7CisgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKKyAgICBhdXRvIHB0ciA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZhbCk7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5lIEpTVmFs
dWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxldGVk
VmFsdWVUYWcpOwpAQCAtMzI5LDYgKzM0MCwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNW
YWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
Pih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1
ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7
Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywg
ZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQsNiArNDgx
LDIyIEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5hc0ludDY0
ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnQzMlRh
ZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVtYmVyVGFnIHBhcnQgaXMgZm9y
IG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBzaWduLWV4dGVuZGVkLgorICAg
IHUuYXNJbnQ2NCA9ICgodmFsdWUgPDwgMTYpICYgfk51bWJlclRhZykgfCBCaWdJbnQzMlRhZzsK
K30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRf
dCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlO
KQorICAgICAgICB1LmFzSW50NjQgPSAodmFsdWUgPDwgMTYpIHwgQmlnSW50MzJUYWc7CisgICAg
ZWxzZSB7CisgICAgICAgIEpTQ2VsbCogcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZh
bHVlKTsKKyAgICAgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0
cik7CisgICAgfQorfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgp
IGNvbnN0CiB7CiAgICAgLy8gVW5kZWZpbmVkIGFuZCBudWxsIHNoYXJlIHRoZSBzYW1lIHZhbHVl
LCBiYXIgdGhlICd1bmRlZmluZWQnIGJpdCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgpAQCAtNTIyLDYg
KzU1NSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QK
ICAgICByZXR1cm4gdS5wdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6
OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih1LnB0cik7Cit9CisKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogCiBpbmxpbmUgaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUg
bnVtYmVyKQpAQCAtNjEwLDcgKzY0OSwyNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmlu
ZygpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuIGlz
QmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCkt
PmlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludDMyKCkg
Y29uc3QKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiAodS5hc0ludDY0ICYgQmln
SW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKK2lubGluZSBpbnQzMl90IEpTVmFsdWU6OmJpZ0ludDMyQXNJbnQzMigpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHUuYXNJbnQ2NCA+PiAxNik7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3lt
Ym9sKCkgY29uc3QKQEAgLTYyMCw3ICs2NzksNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5
bWJvbCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2Vs
bCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiAhaXND
ZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwg
YXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dl
dHRlclNldHRlcigpIGNvbnN0CkBAIC03NDQsOCArODAzLDE3IEBAIGlubGluZSBib29sIEpTVmFs
dWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUmIG51CiAgICAgICAgIHZhbHVlID0gKnRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0gICAgbnVtYmVyID0gUE5hTjsKKyAgICBp
ZiAoaXNVbmRlZmluZWQoKSkgeworICAgICAgICBudW1iZXIgPSBQTmFOOworICAgICAgICB2YWx1
ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNC
aWdJbnQzMigpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMg
bm90IGFsbG93ZWQuIl9zKTsKKyAgICBudW1iZXIgPSAwLjA7CiAgICAgdmFsdWUgPSAqdGhpczsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc1OSw0NCArODI3LDQ1IEBAIEFMV0FZU19JTkxJTkUg
ZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0KTsKIH0KIAotQUxX
QVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
IHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIGlm
IChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKLSAgICBpZiAoaXNCaWdJ
bnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0aGlzKTsKKyAgICBpZiAoaXNJbnQzMigp
IHx8IGlzRG91YmxlKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogCiAg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJl
dHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHt9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHBy
aW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7fSk7CisKKyAgICByZXR1cm4ganNOdW1iZXIodmFsdWUpOwogfQogCi1BTFdBWVNfSU5M
SU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwor
ICAgIGlmIChpc0ludDMyKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIGlmIChpc0RvdWJsZSgpICYmIGNhbkJlSW50MzIoYXNEb3VibGUoKSkpCi0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKTsKLSAgICBpZiAoaXNCaWdJbnQo
KSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKCkpKTsKIAogICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIFByZWZlck51bWJlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7
Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQo
cHJpbVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICBp
ZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAg
IHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisgICAg
cmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0
b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTAxOSwzMiAr
MTA4OCwzMyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGlu
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICBpZiAodjEuaXNOdW1i
ZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkg
PT0gdjIuYXNOdW1iZXIoKTsKIAorICAgICAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlz
QmlnSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKwogICAgICAgICBib29s
IHMxID0gdjEuaXNTdHJpbmcoKTsKICAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CiAg
ICAgICAgIGlmIChzMSAmJiBzMikKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOwogCi0g
ICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHMyKSB7CisgICAgICAgIC8vIEZJWE1FOiBhIGxv
dCBvZiB0aGVzZSBjYW4gbGlrZWx5IGJlIHNpbXBsaWZpZWQgYnkgc3dhcHBpbmcgdjEgYW5kIHYy
IGluIHNvbWUgY2FzZXMuCisKKyAgICAgICAgaWYgKHMyICYmIHYxLmlzQmlnSW50KCkpIHsKICAg
ICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAg
ICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9i
amVjdCwgdjJTdHJpbmcpOworICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJ
bnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICBpZiAo
IXYyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgdjIgPSBKU1ZhbHVlKG4pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RyaW5n
IHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJ
bnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0cmluZyk7
CisgICAgICAgICAgICB2MSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3Qs
IHYxU3RyaW5nKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIGlmICghdjEpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFs
dWUobik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xMTE0LDI4ICsx
MTg0LDM4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5l
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmln
SW50KHYyKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc051
bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYxKS0+ZXF1YWxzVG9OdW1iZXIo
djIpOworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNIZWFwQmlnSW50KCkp
CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwg
djIuYXNIZWFwQmlnSW50KCkpOworCisgICAgICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2
Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVx
dWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworCisgICAgICAgIGlmICh2MS5pc0Jp
Z0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gdjIuYXNI
ZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjEuYmlnSW50MzJBc0ludDMyKCkpOworCisgICAg
ICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICAgICAg
cmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7CiAKLSAgICAgICAg
aWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBh
c0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyAgICAgICAgaWYgKHYyLmlzSGVhcEJp
Z0ludCgpICYmIHYxLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdjIuYXNIZWFwQmln
SW50KCktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKworICAgICAgICBpZiAodjEuaXNCaWdJbnQzMigp
ICYmIHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIo
KSA9PSB2Mi5hc0ludDMyKCk7CisKKyAgICAgICAgaWYgKHYyLmlzQmlnSW50MzIoKSAmJiB2MS5p
c0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm4gdjIuYmlnSW50MzJBc0ludDMyKCkgPT0gdjEu
YXNJbnQzMigpOwogCiAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKICAgICB9IHdoaWxlICh0cnVl
KTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1
YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYxLCBKU0Nl
bGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7Ci0KLSAg
ICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkp
CisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7Ci0gICAg
aWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTQmln
SW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2MS0+aXNI
ZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8SlNCaWdJ
bnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE0NywxMCArMTIyNywx
NiBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYy
LmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVy
KCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0
dXJuIHYxID09IHYyOworICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5i
aWdJbnQzMkFzSW50MzIoKSk7CiAKLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGlu
ZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNU
b0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2
Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2Jq
ZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOworCisgICAgcmV0dXJuIHYxID09IHYyOwog
fQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0
CkBAIC0xMTY4LDE1ICsxMjU0LDIyIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3Ry
aWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgp
KQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5h
c0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAg
ICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJ
bXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIp
LT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcp
Ci0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICBpZiAodjEuaXNIZWFw
QmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEu
YXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpKTsKKwor
ICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJl
dHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQz
MkFzSW50MzIoKSkpOworCisgICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKSB7Cisg
ICAgICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJp
bmcoKSkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmlu
Zyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCog
djJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAg
aWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbCgqdjFTdHJp
bmcsICp2MlN0cmluZykpOworICAgICAgICB9CisgICAgICAgIGlmICh2MS5hc0NlbGwoKS0+aXNI
ZWFwQmlnSW50KCkgJiYgdjIuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFz
SGVhcEJpZ0ludCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2
Mik7CkBAIC0xMTkwLDYgKzEyODMsOCBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRv
Qm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91
YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgog
ICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFu
KCk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQz
MigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAgICByZXR1cm4gaXNUcnVlKCkg
PyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NC4uZThjNjcwYjQ3ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBpZiAo
Y2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0lu
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTExOCw3ICsxMTgsNyBAQCBi
b29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgp
IHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxs
LT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
Y2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
ZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBKU1Zh
bHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsK
ICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5
bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwot
ICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
T2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7
CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51
bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1p
dGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3Qs
IG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+
KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsK
IH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaXNT
eW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMp
LT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChp
c0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisg
ICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNT
eW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50
b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAppbmRleCA2NjVkMDg4OWNmNC4uNGQyNzM5MjU1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgog
ICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAg
ICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsK
ICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmNmEzMmIyNDEwMi4uNzcwMjliMTAzMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAg
LTIwNSw3ICsyMDUsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6
aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKIH0KQEAgLTM0MSw3ICszNDEs
NyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlz
QmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0dXJuICFz
dHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xv
YmFsT2JqZWN0KTsKIH0KQEAgLTM1MCw3ICszNTAsNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxs
OjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8g
VHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBp
ZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Jp
Z0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA3NDk0YTFiOThjNy4uZWE3
YjM3M2E3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAt
MTAzMSw2ICsxMDMxLDggQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4g
MC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxs
KCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7Cisg
ICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuICEhYmlnSW50MzJBc0ludDMyKCk7
CiAgICAgcmV0dXJuIGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwg
Y29udmVydCB0byBmYWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAppbmRleCBhNDRmYmI5
NDYxNy4uNzkxNjg3OGFhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC0yNiw5ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwCmluZGV4IDQ5MDVkNWJhZjA3Li5iNTU1NjJiYWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTM2LDExICszNiw2IEBAIGJvb2wgSlNW
YWx1ZTo6ZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIpOwogfQogCi1ib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAg
ICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7
Ci19Ci0KIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKICAgICAvLyBleGNlcHRp
b24gZm9yIHRoZSBEYXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQpAQCAtNzMsMjEgKzY4
LDE3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCBwMVN0cmluZywgYXNTdHJpbmcocDIpKSk7
CiAgICAgfQogCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IHAxLnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSBwMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3Mp
OwotICAgIH0KLQotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1l
cmljKSArIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgYXV0byBkb3VibGVP
cCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICBy
ZXR1cm4gbGVmdCArIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIENoZWNrZWQ8
aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAr
PSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICB9OworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEs
IHAyLCBKU0JpZ0ludDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAogSlNWYWx1ZSBq
c1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApp
bmRleCAyYzM2NWM0NDY3Zi4uYTM1MGY0ODIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0yMzksNiArMjM4LDM0IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21S
ZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlCiAgICAgcmV0dXJu
IHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdjEsIEpTVmFsdWUgcHJpbVZhbHVlKQoreworICAg
IEFTU0VSVChwcmltVmFsdWUuaXNQcmltaXRpdmUoKSk7CisgICAgQVNTRVJUKCFwcmltVmFsdWUu
aXNCaWdJbnQoKSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHByaW1WYWx1ZS5p
c1N0cmluZygpKSB7CisgICAgICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9i
YWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgICAgIGlmICghYmlnSW50VmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5l
ZDsKKworICAgICAgICBpZiAoYmlnSW50VmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmUodjEsIGJpZ0ludFZhbHVlLmFzSGVhcEJpZ0ludCgp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmlnSW50VmFsdWUuaXNCaWdJ
bnQzMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1c2Ugc29tZXRoaW5nIGxlc3MgaGFja3ks
IGUuZy4gc29tZSBraW5kIG9mIEpTQmlnSW50Ojpjb21wYXJlVG9JbnQzMgorICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0YXRpY19jYXN0PGRvdWJsZT4o
YmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0
OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBu
dW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlUmVzdWx0
KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQsIEpTQmlnSW50OjpD
b21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUg
PT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKQEAgLTI1NSw1MSArMjgyLDQ0
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAot
ICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBi
aWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJ
bnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7
Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAgICAgIGlmIChwcmltVmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJ
bnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFs
dWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQo
SlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRWYWx1ZSksIGNvbXBhcmlzb25N
b2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFz
QmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBhcmlzb25Nb2RlKTsKKyAgICBp
ZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAoY29t
cGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAgICAg
ICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQzMigp
OworICAgICAgICBBU1NFUlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25N
b2RlOjpMZXNzVGhhbk9yRXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMy
KCkgPD0gdjIuYmlnSW50MzJBc0ludDMyKCk7CisgICAgfQorCisgICAgSlNCaWdJbnQqIHYxSGVh
cEJpZ0ludCA9IG51bGxwdHI7CisgICAgSlNCaWdJbnQqIHYySGVhcEJpZ0ludCA9IG51bGxwdHI7
CisgICAgLy8gRklYTUU6IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRoIGZvciBhIGNvbXBhcmlzb24g
YmV0d2VlbiBhIHNtYWxsIGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAgICBpZiAodjEuaXNCaWdJbnQz
MigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjEu
YmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKQorICAg
ICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsKIAotICAgICAgICBkb3VibGUg
bnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAo
djIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UgaWYgKHYyLmlzSGVhcEJp
Z0ludCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsKKworICAg
IGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFwQmlnSW50KQorICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBCaWdJbnQsIHYySGVhcEJpZ0lu
dCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQpIHsKKyAgICAgICAg
YXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwgbnVtYmVyVmFsdWUpLCBjb21wYXJp
c29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25S
ZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZSBwcmltVmFs
dWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNCaWdJ
bnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwg
YXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29t
cGFyaXNvbk1vZGUpOwotICAgIH0KLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFz
QmlnSW50KHByaW1WYWx1ZSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAK
LSAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIHYySGVhcEJpZ0ludCwgdjEpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLQogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVj
YXVzZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29t
cGFyaXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBu
dW1iZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJp
c29uTW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVybiBjb21w
YXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8
fCBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsK
KworCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCB0b1ByaW1pdGl2ZU51bWVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2LCBKU1ZhbHVlJiBwLCBkb3VibGUmIG4pCkBA
IC0zNTcsNyArMzc3LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8
IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcy
KSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0
LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3
LDcgKzQyNyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2Fz
Tm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsK
ICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAx
LCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAt
NDUyLDcxICs0NzIsMjU2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpz
QWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFt
ZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3As
IERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAg
IEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOwotICAgICAgICB9CisgICAgaWYgKGxlZnROdW1lcmljLmlzTnVtYmVyKCkgJiYgcmln
aHROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihkb3VibGVPcChs
ZWZ0TnVtZXJpYy5hc051bWJlcigpLCByaWdodE51bWVyaWMuYXNOdW1iZXIoKSkpOwogCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CisgICAgaWYg
KGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlz
QmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmlnSW50MzJP
cChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgSlNC
aWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBC
aWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0lu
dE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZt
LCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50
LCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgaWYgKHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGds
b2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0SGVhcEJpZ0ludCkp
OworICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkKKyAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVj
dCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KSkpOwogICAgIH0KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91Ymxl
IGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgLSBy
aWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29y
ZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgLT0gcmlnaHQ7CisgICAg
ICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGlj
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpzdWIsIGRvdWJsZU9wLCBi
aWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRy
YWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworICAgICAgICBD
aGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICBy
ZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICB9OworCisgICAgcmV0dXJu
IGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRp
cGx5LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmln
aHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAg
ICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBK
U1ZhbHVlIHsKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGxlZnQgLyBy
aWdodCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpkaXZpZGUsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiJfcyk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JlbWFpbmRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBb
XSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJu
IGpzTW9kKGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChp
bnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0
aGluZyBtb3JlIGNsZXZlciBoZXJlLgorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIH07
CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBK
U0JpZ0ludDo6cmVtYWluZGVyLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIuIl9zKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwg
ZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0aFBv
dyhsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJf
dCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEV4cG9uZW50aWF0aW9uIG9uIGlu
dGVnZXJzIGlzIGJvdGggc29tZXdoYXQgc2xvdyBpbiB0aGUgYmVzdCBjYXNlLCBhbmQgdmVyeSBs
aWtlbHkgdG8gb3ZlcmZsb3cuCisgICAgICAgIC8vIFNvIGRvbid0IGJvdGhlciB0cnlpbmcgdG8g
YXZvaWQgYSBoZWFwIGFsbG9jYXRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlLCBkb3VibGVPcCwgYmlnSW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlv
bi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNJbmMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlz
TnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJl
cigpICsgMSk7CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCkpICsgMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcg
bmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBl
ciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPiBJTlRfTUFYKQorICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1Zh
bHVlKSk7CisgICAgfQorICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVj
dCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVm
dE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJpZ2h0TnVt
ZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworCisgICAgaWYgKG9wZXJhbmROdW1l
cmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5h
c051bWJlcigpIC0gMSk7CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgewor
ICAgICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xs
b3dpbmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBh
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+
KG5ld1ZhbHVlKSk7CisgICAgfQorICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJ
bnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVjKGdsb2Jh
bE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVy
aWMgPSB2LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwot
ICAgICAgICB9CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkpOwogCi0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVy
YW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQo
b3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgfm9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKICAg
ICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1l
IEludDMyT3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFw
QmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlLCBib29sIGJpZ0ludDMyTWF5T3ZlcmZsb3cgPSBmYWxzZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYg
KGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigpKQorICAgICAg
ICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCksIHJpZ2h0TnVt
ZXJpYy5hc0ludDMyKCkpKTsKIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91
YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91
YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFsdWUgKiByaWdo
dFZhbHVlKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkgJiYgIWJpZ0ludDMyTWF5T3ZlcmZsb3cpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51bWVyaWMuYmlnSW50MzJB
c0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIC8vIEZJWE1F
OiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQsIGFuZCBmb3IgSGVhcEJp
Z0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVzZSBjb3VsZCBiZSBtYWRl
IG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBzbWFsbCBiaWctaW50IGFu
ZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisKKyAgICBpZiAoIShsZWZ0TnVtZXJp
Yy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisKKyAg
ICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDog
bGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0lu
dCA9IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludE9wKGdsb2JhbE9iamVj
dCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogfQogCi1pbmxpbmUgYm9vbCBz
Y3JpYmJsZUZyZWVDZWxscygpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNMU2hpZnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBy
ZXR1cm4gIUFTU0VSVF9ESVNBQkxFRCB8fCBPcHRpb25zOjpzY3JpYmJsZUZyZWVDZWxscygpOwor
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAzMSk7CisgICAgfTsKKwor
ICAgIC8vIEZJWE1FOiB0aGlzIGlzIGtpbmQgb2YgYSBrbHVkZ2UsIHdlIGN1cnJlbnRseSBmb3Jj
ZSBoZWFwLWFsbG9jYXRpb25zIG9mIGJpZyBpbnRzIHdoZW5ldmVyIHRoZXkgZmxvdyBpbnRvIHRo
aXMgb3BlcmF0aW9uLgorICAgIGJvb2wgYmlnSW50MzJNYXlPdmVyZmxvdyA9IHRydWU7CisKKyAg
ICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6
bGVmdFNoaWZ0LCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiJfcywgYmlnSW50MzJNYXlPdmVyZmxvdyk7CiB9CiAK
LSNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9IFtdIChp
bnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4g
bGVmdCA+PiAocmlnaHQgJiAzMSk7CisgICAgfTsKKworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0LCBpbnQz
Mk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdo
dCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1
ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNl
X2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIGF1dG8gaW50MzJPcCA9IFtdIChp
bnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4g
bGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFp
cnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBhbmQgcmUtYm94IHRo
ZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAg
cmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJp
dHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKIH0KIAotaW5saW5lIHZvaWQgc2NyaWJi
bGUodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3
aXNlT3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7
IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVuc3Vy
ZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAgICAgc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlND
ZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50
MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxl
ZnQgfCByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJz
IG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94IHRoZW0u
CisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0
dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdp
c2VPciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBi
aXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKK3sKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90
IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9
OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1
bmJveCB0aGVtLCBkbyB0aGUgInhvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxk
IGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBh
biBvciB3aXRoIDB4MTIgYXQgdGhlIGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4g
Yml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhv
ciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3
aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogYmFzZSwgdWludDMyX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY3JpYmJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aWJibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2VkNWM5MzBj
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
YmJsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJPcHRp
b25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxs
cygpCit7CisgICAgcmV0dXJuICFBU1NFUlRfRElTQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVG
cmVlQ2VsbHMoKTsKK30KKworI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0
cl90PigweGJhZGJlZWYwKQorCitpbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUg
dmFsdWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6
ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Cit9CisKK2lubGlu
ZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQoreworICAgIGZvciAoc2l6
ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgeworICAgICAgICAv
LyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRo
ZSBjZWxsIGNoZWNrLgorICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2Up
W2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JE
KSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9XZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lIGIvV2ViS2l0Lnhjd29ya3NwYWNl
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQppbmRleCBiNzVmNGJk
MTk5ZC4uZTFjOTc0Y2FmM2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUJCisrKyBiL1dlYktpdC54Y3dvcmtz
cGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUJCkBAIC01Nyw3
ICs1Nyw3IEBACiAgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCiAgICAgICAgICAgICAg
ICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCiAgICAgICAgICAgICAgICBCbHVlcHJp
bnRJZGVudGlmaWVyID0gIkZCMzlEMEQwMTIwMEYwRTMwMDA4OEU2OSIKLSAgICAgICAgICAgICAg
IEJ1aWxkYWJsZU5hbWUgPSAibGliQU5HTEUuYSIKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5h
bWUgPSAibGliQU5HTEUtc2hhcmVkLmR5bGliIgogICAgICAgICAgICAgICAgQmx1ZXByaW50TmFt
ZSA9ICJBTkdMRSIKICAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFp
bmVyOlNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvaiI+CiAgICAgICAgICAg
ICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389215</attachid>
            <date>2020-01-29 18:39:40 -0800</date>
            <delta_ts>2020-02-12 18:04:56 -0800</delta_ts>
            <desc>WIP_rebased</desc>
            <filename>patch206182</filename>
            <type>text/plain</type>
            <size>159463</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZh
bHVlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUu
anMKaW5kZXggYzY5ZGJkYTMzZDMuLmY4MTJiMWNiYTQxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwpAQCAtMyw3ICszLDcgQEAK
IGFzc2VydCA9IHsKICAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKICAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlICsgIiBpbnB1dDogIiArIGlucHV0ICsgIiAhPSBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsK
ICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwt
bm90LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcwppbmRleCBhZjI4
YTcyYjFjMy4uZDAyZTU1MmY5YzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bG9naWNhbC1ub3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5q
cwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5CaWdJbnRFbmFibGVkCiAKLWZ1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbikgewogICAgIGlmIChhICE9PSBlKSB7
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBsb2dpY2FsIG5lZ2F0aW9uIGZvciAiICsgbik7CiAgICAgfQogfQogCkBAIC0xMiw5
ICsxMiw5IEBAIGZ1bmN0aW9uIGxvZ2ljYWxOb3QoYSkgewogbm9JbmxpbmUobG9naWNhbE5vdCk7
CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSk7Ci0g
ICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgt
MW4pLCBmYWxzZSk7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFsc2UsIDEwbik7Cisg
ICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSwgMW4pOworICAgIGFzc2VydChsb2dpY2Fs
Tm90KDBuKSwgdHJ1ZSwgMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlLCAt
MW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0YTUxNGM1N2Q3Li40
ZTYzMjdmYTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg2Niw2ICs4NjYs
NyBAQAogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3
RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJCTJBRjczODJE
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyNUJBMTMzN0U0
MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
MTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1Bh
dGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzM0IyQTU0
NzIyNjUzNDgxMDA1QTBGNzkgLyogQjNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1ZhbHVlSW5saW5lcy5oICovOyB9OwpAQCAtMzUwNSw2ICszNTA2LDcgQEAKIAkJMkFGNzM4MkIx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVy
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVy
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMxMTFCOEEyMzk3MjU2
NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09w
dGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0aCA9IGIzL0IzT3B0
aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNz
aW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM5NUM3MDQyMjU1NUY2
QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9CM0Vs
aW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MzUs
NiArNzUzNyw3IEBACiAJCQkJMEZFMDUwMjAxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlLmggKi8sCiAJCQkJMEZFMDUwMjExQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zm
c2V0LmNwcCAqLywKIAkJCQkwRkUwNTAyMjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCAqLywKKwkJCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLywKIAkJ
CQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5jcHAgKi8sCiAJ
CQkJMTQ3MzQxQ0QxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCAqLywKIAkJ
CQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hlci5oICovLApAQCAtODg5
Nyw2ICs4OTAwLDcgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3NjIwQjFEQjk1OUY5
MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzExMUI4
QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENF
MTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxvY2F0b3JGb3JNb2Rl
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCmluZGV4IGMxMDAyNDA0ZWY2Li4zNTc4NjgzYjU5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC00Njk4LDcgKzQ2
OTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCi0g
ICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlh
dGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KKyAgICAgICAgLy8gQW4gaW1tZWRpYXRl
IHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVl
biBlbWl0dGVkLgogICAgICAgICAvLyBUaGUgd3JpdGVzIGFyZSB1bmNoZWNrZWQgc2luY2UgdGhl
IG9wY29kZSBmb3JtYXR0ZXJzIGFib3ZlIHdpbGwgaGF2ZSBlbnN1cmVkIHNwYWNlLgogCiAgICAg
ICAgIHZvaWQgaW1tZWRpYXRlOChpbnQgaW1tKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCBmZWE2Njc0NWI2Mi4uNzU3NjExMjFlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3Bw
CkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRl
bXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyBy
ZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5
cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNo
b3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hv
dWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYm
ICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTcgQEAgdm9pZCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG5vdEJpZ0ludDMyOworICAgIGppdC5icmFu
Y2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNl
dEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90Qmln
SW50MzIubGluaygmaml0KTsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJy
YW5jaElmTm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJy
YW5jaElmTm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1pdFNldEJpZ0ludChq
aXQpOworICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQocmVn
cy5wYXlsb2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQpOwogICAgIGRvbmUu
YXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZqaXQpOwpAQCAtODgs
MTkgKzk2LDM1IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25O
dW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBC
aXRmaWVsZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0
U2V0QmlnSW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3Vs
ZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0Cit7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNl
cnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFz
azsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25zdAogewotICAg
IEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgQml0Zmll
bGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgcmV0dXJuICht
X2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKIHRlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29u
c3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAgICBlbWl0VW5jb25k
aXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsKKyAgICBpZiAoc2hvdWxk
RW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBP
YnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50
MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJ
bnQzMigpKQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0
czo6QmlnSW50MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0
KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4
ICsxNzMsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFy
aXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3Is
ICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAg
ICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRp
ZE9ic2VydmVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3Is
ICJIZWFwQmlnSW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAg
IG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9y
ID0gInwiOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi5iMWVmOGY0ZTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNzQsMjEg
Kzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwKICAg
ICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJPdmVyZmxvdyAg
ICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAg
SGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAgICAgICA9IDEg
PDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRl
ZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNzsK
IAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNpdCBPYnNlcnZl
ZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQogICAgIHsgfQog
Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50KTsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQgfCBCaWdJbnQz
Mik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9u
TmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9u
TmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3VibGU7IH0KICAg
ICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTmVnWmVy
b0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJldHVybiBtX2Jp
dHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4g
bV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4g
bV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRpZE9ic2VydmVI
ZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAgIGJvb2wgZGlk
T2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0KICAgICBib29s
IGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50MzJPdmVyZmxv
dzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMg
JiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1
bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5v
bk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1cm4g
b2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNl
cnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2Vy
dmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigpIGNvbnN0IHsg
cmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9CiAgICAgYm9v
bCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0
cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQ1
Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUlu
dDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9p
ZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5l
Z1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJp
dChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEJp
Z0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAgIHZvaWQgc2V0
T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9ic2VydmVkUmVz
dWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7
IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAgdm9pZCBzZXRP
YnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDUyT3Zl
cmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9i
aXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6
SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSB8IE9ic2Vy
dmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAg
bV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAodmFsdWUuaXNC
aWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJ
bnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUg
JiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZl
ZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAgLTEzOSwxOSAr
MTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMgKEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUp
IGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0IHNlZXMg
YSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYs
IEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAg
dm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVn
IHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKIAogICAgIC8v
IFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8
IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Owog
ICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAotICAgIC8vIFNl
dHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OwogCi0gICAg
Ly8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAgdm9pZCBlbWl0
U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRCaWdJ
bnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9v
bCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNl
dEJpZ0ludDMyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxT
ZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpAQCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVp
bnQxNl90OwogY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVu
YXJ5QXJpdGhQcm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJn
T2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAg
ICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBm
aXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4g
dGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sg
PSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJv
ZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNp
YWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlm
dCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0
aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3Rh
dGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxk
IGZpdCBpbiB0aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVj
aWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJp
dHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFz
dFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3Vs
ZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3BlY2lhbEZhc3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxC
aW5hcnlBcml0aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJU
aGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hv
dWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmlu
ZGV4IGRlNmNhOGRjOTEwLi5kYjU0Y2E5NmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNzc4MGMy
YTRkMS4uMmE2ZmVjOWU4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGlu
ZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKLSNpbmNsdWRl
ICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCmluZGV4IDcwMWMzMzA4OWI5Li44ODgyZGIwNjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRS
ZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKK3Zv
aWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJz
TW9kZSBtb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBOb25l
OgpAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6
ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS51bmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3Vs
dChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LmJpbmFyeUFyaXRo
UHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3Rl
cnMpOworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0
LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCBlOGI2NWVhZDQ2ZS4uNTMzOTJjNjI1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaApAQCAtODMsNyArODMsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBO
b25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVl
UmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFyeSByZWdpc3RlciBpcyBvbmx5IG5lZWRl
ZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3RpbmcgQmlnSW50MzIpLgorICAgIHZvaWQgZW1p
dFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwg
VGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpIGNvbnN0OwogICAgIHZvaWQgcmVw
b3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCAxMDUzYmE1MmI1NC4uYTcxZWEy
MjEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9u
RnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKICAgICAgICAgcmV0dXJu
IFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JpZ0ludDo6aW5mbygp
KQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmln
SW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAg
ICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC01MDAsNyArNTAwLDcgQEAgU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpCiAgICAgICAg
IHJldHVybiBTcGVjU3ltYm9sOwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IEJpZ0ludFR5cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgICAgICByZXR1
cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gRGVyaXZlZEFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJyYXk7CiAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
KTsKQEAgLTUzNiw2ICs1MzYsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1
ZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0RvdWJsZTsK
ICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CisgICAgaWYgKHZhbHVl
LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBpZiAodmFs
dWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DZWxsKHZhbHVlLmFz
Q2VsbCgpKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC02MzIsNiArNjM0LDEwIEBA
IFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3Vs
YXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAmIFNwZWNTdHJpbmcpCiAg
ICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBlICYgU3BlY0JpZ0ludCkK
KyAgICAgICAgdHlwZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXgg
NWRiMThjNjQ4MmQuLmZmMjY3MTMyYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtOTgsOCArOTgsMTAgQEAgc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMXVsbCA8PAogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5
IGVpdGhlciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwg
U3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3Ig
VW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNCaWdJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBzbWFsbCBCaWdJbnQgdGhhdCBpcyBpbmxpbmUgdGhlIEpTVmFs
dWUKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0lu
dCB0aGF0IGlzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JpZ0lu
dDMyIHwgU3BlY0hlYXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNw
ZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8v
IEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9i
amVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNw
ZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVj
dCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0
IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNw
ZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNw
ZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KIHN0YXRpYyBjb25zdGV4
cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBT
cGVjQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCkBAIC0xODUsOSArMTg3LDE5
IEBAIGlubGluZSBib29sIGlzU3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID09IFNwZWNTeW1ib2w7CiB9CiAKK2lubGluZSBib29sIGlzQmln
SW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFs
dWUgPT0gU3BlY0JpZ0ludDMyOworfQorCitpbmxpbmUgYm9vbCBpc0hlYXBCaWdJbnRTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPSBTcGVjSGVh
cEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wgaXNCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0JpZ0ludDsKKyAgICByZXR1
cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjQmlnSW50KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5l
IGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCBlMzIyMjA1ZGVlNy4uYjUzNWVhNmJmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yODc5LDcgKzI4NzksNyBAQCBKU1ZhbHVlIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJbnRD
b25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50OAogICAgIHJldHVybiBt
X2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRlbnRpZmllci5pbXBsKCksIHJhZGl4
LCBzaWduKSwgWyZdIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0oKSk7CiAgICAgICAgIGF1dG8gcGFyc2VJbnRTaWduID0gc2lnbiA/IEpTQmlnSW50OjpQYXJz
ZUludFNpZ246OlNpZ25lZCA6IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkOwotICAg
ICAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwg
dm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9k
ZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOworICAgICAgICBKU1ZhbHVlIGJpZ0lu
dEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlkZW50aWZpZXIuc3Ry
aW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywg
cGFyc2VJbnRTaWduKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAg
ICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MmM2
MzAyNjBlZS4uMzJhODNmYzI4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEwODgsNyArMTA4OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hNYXA8ZG91
YmxlLCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9IEhhc2hN
YXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNoPjsKLSAg
ICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnks
IEpTQmlnSW50Kj47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBIYXNoTWFw
PEJpZ0ludE1hcEVudHJ5LCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU2V0ID0gSGFzaFNldDxSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPj47CiAg
ICAgICAgIHVzaW5nIFRlbXBsYXRlRGVzY3JpcHRvck1hcCA9IEhhc2hNYXA8dWludDY0X3QsIEpT
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiwgV1RGOjpJbnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggZTk1ODAwYWZmMjYuLjcyYjEwY2Q1NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUg
IlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGMuLjdjYTRiMWI1YWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAj
aW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAppbmRleCBiOTI4ODEwZTEwMS4uZjgxNzBkOTJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR051bGxBYnN0cmFj
dFN0YXRlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmlu
ZGV4IDgzNGI2ODcwMTEzLi5lMWQ4NWU5ZGViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxNCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNv
bnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUgYSBz
cGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdSZWdpc3RlciwKICAgICAgICAgICAg
ICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0LgogICAgICAgICAgICAgICAg
IGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNl
LmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwotICAgICAgICAgICAg
ICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgbm90
Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdpc3RlciwgZm9yIHRoZSBzYW1lIHJl
YXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmluZCBhIGxlc3MgZ3Jvc3Mgd2F5IG9m
IGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcgdGhlc2Ugb3BlcmF0aW9ucyB1bnRp
bCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0ZXJzIGFyb3VuZD8KKyAgICAgICAg
ICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9Ob3RI
YXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVt
aXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigp
KSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpLCBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KTsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKGV4aXQubV9q
c1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJl
Z2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCkBAIC0zOTgsNyArNDAyLDcgQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBl
eGl0LCBjb25zdAogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRh
Zywgc2NyYXRjaFBheWxvYWQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpp
dC5sb2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwot
ICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7Cisg
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoLCBJbnZh
bGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQucG9wVG9S
ZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2Ny
YXRjaFBheWxvYWQpOwpAQCAtNDA3LDEwICs0MTEsMTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25z
dAogICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwogICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlLCBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwog
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFs
dWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOworICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpLCBJ
bnZhbGlkR1BSUmVnKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZk
YjljOWQ3NjcuLjI5ZjVjMDMwY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5SW5s
aW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00u
aD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFC
TEUoREZHX0pJVCkKQEAgLTIyMSw1NiArMjIwLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9p
ZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWwK
ICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBz
bG90KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBO
dW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaW5h
cnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYm
IGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRpb24mJiBudW1iZXJPcCwgY29uc3QgY2hhciogZXJyb3JN
ZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQot
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFs
dWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9w
Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9y
TWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihudW1iZXJPcChXVEY6OmdldDxkb3VibGU+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKSkpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgotc3RhdGlj
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMy
T3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b0JpZ0lu
dE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b0JpZ0ludE9y
SW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihpbnQzMk9wKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQogc3RhdGljIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFyc2VJbnRSZXN1bHQoZG91YmxlIGlucHV0KQogewogICAg
IGludCBhc0ludCA9IHN0YXRpY19jYXN0PGludD4oaW5wdXQpOwpAQCAtNDcwLDcxICs0MTksMzQg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJp
Z2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihn
bG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9
IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1
cm4ganNNb2QobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xv
YmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVy
YXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JlbWFpbmRlcihnbG9iYWxP
YmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5j
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJp
YykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
QmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1l
cmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51
bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgKyAxKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0luYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihv
cGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJs
ZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
dmFsdWUgLSAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RlYyhnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAg
IEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0gICAgYXV0byBv
cGVyYW5kTnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Yml0
d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih+V1RGOjpnZXQ8aW50
MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jp
dHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NDMsMTUgKzQ1NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCog
ewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQs
IGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0
OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0s
IGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXgg
b2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU2MCwxNSArNDY0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0Jp
Z0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3Qs
IGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IHwg
cmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0
LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4i
X3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NzcsMTUgKzQ3Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBK
U0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQz
Ml90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVm
dCBeIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0
aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VYb3IoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01OTQsMTUgKzQ4Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiBy
aWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICBy
ZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdp
c2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJ
bnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBs
ZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNM
U2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02
MTEsMTUgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmln
SW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQs
IEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0K
LSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBp
bnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsK
LQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjU3LDE1ICs1MjksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50
KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBk
b3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7Ci0g
ICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3Ax
LCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24gb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNEaXYoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC02NzQsMTUgKzUzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1
dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQq
IGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsK
LQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4g
ZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOwot
ICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJhdGlvbi4iX3MpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNQb3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBkb3VibGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEFicyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQpAQCAtMTYyOCw3ICsxNDg0LDcgQEAgc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CisgICAgcmV0dXJuIEpT
VmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CiB9CiAK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBhcmcxLCBFbmNvZGVkSlNWYWx1ZSBhcmcyKQpA
QCAtMTY3MywxMCArMTUyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1
dG8gdmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPih2YXJpYW50KSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXVEY6OmdldDxKU0JpZ0ludCo+KHZhcmlh
bnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJs
ZT4odmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2NDJiMTYzNTZm
OS4uNzU1NDAyNzI4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0xMDU4MCw3ICsxMDU4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2UpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQogewotICAgIERGR19UWVBFX0NI
RUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVj
ayB8IFNwZWNCaWdJbnQsIG1faml0LmJyYW5jaElmTm90QmlnSW50KGNlbGwpKTsKKyAgICBERkdf
VFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgflNwZWND
ZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQpA
QCAtMTMxMTEsNyArMTMxMTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1l
cmljKE5vZGUqIG5vZGUpCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsK
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoYXJndW1lbnRSZWdzKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
QmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChhcmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAg
ICBub3RDZWxsLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAyMTcxNWQzZGQyMi4uOWJiYTc0MzliY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAK
QEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2ln
bmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAg
ICAgIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgZXhpdC5tX2Rlc2Ny
aXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQ
UkluZm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFs
aXplIGFsbCBvYmplY3RzLiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
CmluZGV4IGNlMDM5YmE3N2U5Li45ZjZhYjUxMTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQxNSw3ICs0MTUsNyBA
QCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBI
ZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNz
ID0gMDsKICAgICAgICAgdW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9k
ZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAg
aWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkp
IHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1
cmUodm0pOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFs
T2JqZWN0KCkpCiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KE5vZGVGbGFnczo6SW50ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2su
aCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNp
bmNsdWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUg
IlZNLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VB
bGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0
aW9uLmNwcAppbmRleCA2Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUg
IlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1
ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lk
IEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBoZWFwT2JqZWN0SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAg
aWYgKGNlbGwtPmlzQmlnSW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6
OnRyeUdldFN0cmluZyh2bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNI
ZWFwQmlnSW50KCkpIHsKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0
cmluZyh2bSwgYXNIZWFwQmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRl
eCBlYjgwODJlOWI3Yi4uNDdmMTFhM2JlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZQogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZs
b3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlm
ICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFs
dWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1
bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBk
byBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC02OTgsNiArNjk4
LDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0m
IHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAg
Ly8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2
YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIo
dmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNU
cnVlCiAgICAgLy8gfQpAQCAtNzA2LDcgKzcwOCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
CiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8g
aXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8g
aXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8g
aXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAK
ICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFT
U0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxp
ZEdQUlJlZyk7CkBAIC03MjksNyArNzMxLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRD
b252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAg
ICBjb21wYXJlUHRyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIo
KSwgcmVzdWx0LCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0Jp
Z0ludC5saW5rKHRoaXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIGxvYWQz
MihBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkp
LCByZXN1bHQpOwogICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1
bHQsIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwpA
QCAtNzUzLDYgKzc1NSwxMyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1
ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogCiAgICAgbm90RG91
YmxlLmxpbmsodGhpcyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBhdXRvIGlzTm90QmlnSW50
MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHJlc3Vs
dCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKICAgICBjb21wYXJlNjQo
aW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vsc2UKICAgICBtb3ZlKGludmVydCA/IFRydXN0
ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKQEAgLTc2Nyw3ICs3NzYsNyBA
QCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1
ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxv
d2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7
Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAg
IC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAg
Ly8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAg
ICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVk
CkBAIC03NzcsNiArNzg2LDggQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAvLyAgICAg
cmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMg
bnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAg
Ly8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAh
IXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0
ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5Nyw3IEBAIEFzc2VtYmx5
SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwg
SlNWYWx1ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFs
dWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BS
KCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BS
KCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBh
eWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyArODI4LDcgQEAgQXNzZW1ibHlIZWxw
ZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1Zh
bHVlUmVncyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZlcnQgPyBFcXVhbCA6
IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIoanNFbXB0eVN0cmlu
Zyh2bSkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50Lmxpbmso
dGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChi
cmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9h
ZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVuZChq
dW1wKCkpOwogCkBAIC04NDMsNiArODU0LDEzIEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3Qg
QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAK
ICAgICBub3REb3VibGUubGluayh0aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGF1dG8g
aXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5n
cHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJh
bmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5h
cHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKICAgICB0cnV0
aHkuYXBwZW5kKGJyYW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigp
LCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CiAjZWxz
ZQogICAgIGF1dG8gbm90Qm9vbGVhbiA9IGJyYW5jaElmTm90Qm9vbGVhbih2YWx1ZSwgSW52YWxp
ZEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApp
bmRleCA3MjlmNTg0NjM3ZC4uMDc0ZDE0MTMzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtOTI5LDcgKzkyOSwzNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2hJZk5vdEJvb2xlYW4ocmVncy50YWdHUFIoKSwgdGVtcEdQUik7CiAj
ZW5kaWYKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEp1bXAgYnJhbmNo
SWZCaWdJbnQzMihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBt
b2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICB7CisgICAgICAgIEp1bXAgbnVtYmVyID0gYnJh
bmNoSWZOdW1iZXIoZ3ByLCBtb2RlKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5jaElm
QmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICBudW1iZXIubGlu
ayh0aGlzKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwg
dGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAg
IEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJlZ3Ms
IEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90QmlnSW50
MzJLbm93bk5vdE51bWJlcihyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVtcCBi
cmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBH
UFIpCisgICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAg
ICAgICAgbW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5v
dEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAg
ICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworICAgIC8vIEZJWE1FOiByZW5hbWUgdGhl
c2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0byBiZSBh
IGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKICAgICB7CiAg
ICAgICAgIHJldHVybiBicmFuY2g4KApAQCAtOTUxLDEzICs5ODEsMTQgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAgICAgfQot
ICAgIAorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQg
dGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElm
U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3Ry
aW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7
IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1w
IGJyYW5jaElmU3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2Vs
bEdQUiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBj
ZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0K
LSAgICBKdW1wIGJyYW5jaElmQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJ
ZlR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50
KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgQmlnSW50
VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFu
Y2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlw
ZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBl
KTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAt
MTcxMCw3ICsxNzQxLDcgQEAgcHVibGljOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJu
IHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJl
dHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAg
cmV0dXJuIHN5bWJvbApAQCAtMTcyMSw2ICsxNzUyLDggQEAgcHVibGljOgogICAgICAgICAvLyAg
ICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKICAg
ICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmln
aW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNl
IHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRlZmluZWQKICAgICAgICAgLy8gfQpAQCAtMTc1
MiwxMCArMTc4NSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7
CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBicmFuY2hJZk5vdEJpZ0ludChjZWxsR1BSKTsK
KyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0gYnJhbmNoSWZOb3RIZWFwQmlnSW50KGNlbGxH
UFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOwogCi0gICAg
ICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAgICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhp
cyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6U3ltYm9sLCBmYWxzZSk7CiAgICAgICAg
IAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7CkBAIC0xNzcxLDYgKzE4MDQsMTIgQEAgcHVi
bGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4gPSBicmFuY2hJZk5vdEJvb2xlYW4ocmVncywg
dGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwog
ICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBKdW1wIG5vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVy
KHJlZ3MsIHRlbXBHUFIpOworICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFs
c2UpOworICAgICAgICBub3RCaWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlmCiAgICAgICAgIAog
ICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggN2YzNThjMTIwM2IuLjhk
NDY5NzhiOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAg
LTU3MSw5ICs1NzEsMTAgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7CiAgICAgCi0gICAgLy8g
SnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvLyBK
dW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQg
QmlnSW50cykuCisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNp
c2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNs
b3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAg
IG9yNjQocmVnVDEsIHJlZ1QyKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwogICAgIAogICAgIC8vIEp1bXAgc2xvdyBpZiBl
aXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBp
cyBmaW5lLCBhbmQgdGhlbiB0ZXN0CkBAIC02MTQsOSArNjE1LDEwIEBAIHZvaWQgSklUOjpjb21w
aWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
Q29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3Jj
MiwgcmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3Zl
ciBzdHJpbmdzKS4KKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAo
dG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRv
IHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBv
bmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCiAgICAgbW92
ZShyZWdUMCwgcmVnVDIpOwotICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyAgICBhbmQ2NChyZWdU
MSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwogCiAgICAg
Ly8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFu
IGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRlc3QKQEAgLTY4Niw3ICs2ODgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7
CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7Ci0gICAgYWRk
U2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwog
CiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggY2Q2NjdiMmU1ODcuLmRjMWUyYzg1YTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC04NjYs
NyArODY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsK
IAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAK
ICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3Li4yM2RiZDg5OTJmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNzg1LDggKzI3ODUs
MTUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3Bl
cmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZh
bHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKyAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFs
dWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51
cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0g
cHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODA4LDEwICsyODE1LDE5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChw
cmltVmFsdWUpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBp
bnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAo
dmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyAgICBpZiAocHJpbVZh
bHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg0Myw4ICsyODU5LDE4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0CiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0g
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJ
bnQocHJpbVZhbHVlKSk7CisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAg
ICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAg
aWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgYXJpdGhQcm9maWxl
LT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZh
bHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHBy
aW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAg
IGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMjg3NSw5ICsyOTAxLDE3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9Q
cmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFz
QmlnSW50KHByaW1WYWx1ZSkpKTsKKworICAgIC8vIEZJWE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0
aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBub3QgdGhlIHJlc3VsdD8KKyAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVl
LmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMy
LCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5h
cnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVt
YmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGI2ZWU5OWUz
NjNhLi5mZjEwNWY0Nzc5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTg1MSw3ICs4NTEsNyBAQCBtYWNybyBz
dHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAg
ICAgICAgb3JxIHQxLCB0MgorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6IHQyLCBu
b3RDZWxsTWFzaywgLnNsb3cKICAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwog
ICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwpAQCAtODg1LDcgKzg4NSw3IEBAIG1h
Y3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxp
dHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQw
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQzLCB0MSkKICAgICAgICAg
bW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBhbmRxIHQxLCB0MgogICAg
ICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKICAgICAgICAgYnFhZXEgdDAsIG51bWJl
clRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwpAQCAtOTE2
LDI0ICs5MTYsMjYgQEAgc3RyaWN0RXF1YWxpdHlKdW1wT3Aoam5zdHJpY3RlcSwgT3BKbnN0cmlj
dGVxLAogbWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0
aW9uKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAg
ICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2Zp
bGU6Om1fYml0c1t0MV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAg
ICAgICAgZW5kCiAKLSAgICAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2Nm
ciwgdDAsIDhdLCB0MwotICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRh
dGEgaW4gdDEsIHNyY0RzdCBpbiB0MwotICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cK
LSAgICAgICAgaW50ZWdlck9wZXJhdGlvbih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJU
YWcsIHQzCi0gICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDAsIDhdCi0gICAgICAgIHVwZGF0ZUFy
aXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCi0gICAgICAgIGRpc3BhdGNoKCkKKyAgICBnZXQo
bV9zcmNEc3QsIHQwKQorICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDEKKyAgICBtZXRhZGF0YSh0
MiwgdDMpCisgICAgIyBzcmNEc3QgaW4gdDEsIG1ldGFkYXRhIGluIHQyCisgICAgIyBGSVhNRTog
dGhlIG5leHQgbGluZSBqdW1wcyB0byB0aGUgc2xvdyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291
bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNhdGVkIHBhdGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICBi
cWIgdDEsIG51bWJlclRhZywgLnNsb3cKKyAgICBpbnRlZ2VyT3BlcmF0aW9uKHQxLCAuc2xvdykK
KyAgICBvcnEgbnVtYmVyVGFnLCB0MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCisgICAg
dXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKKyAgICBkaXNwYXRjaCgpCiAKICAg
ICAuc2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQog
ICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQorCiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxl
KG9wX3RvX251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAK
ICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmZmM2Y3OTcyMGIuLjhiNDY5N2Zl
MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29u
c3RydWN0b3IuY3BwCkBAIC03NSwxOCArNzUsNiBAQCB2b2lkIEJpZ0ludENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgYm9vbCBpc1NhZmVJbnRlZ2VyKEpTVmFsdWUgYXJn
dW1lbnQpCi17Ci0gICAgaWYgKGFyZ3VtZW50LmlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBpZiAoIWFyZ3VtZW50LmlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGRvdWJsZSBudW1iZXIgPSBhcmd1bWVudC5hc0RvdWJsZSgpOwotICAgIHJldHVy
biB0cnVuYyhudW1iZXIpID09IG51bWJlciAmJiBzdGQ6OmFicyhudW1iZXIpIDw9IG1heFNhZmVJ
bnRlZ2VyKCk7Ci19Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogewogICAgIEFTU0VSVChhcmd1
bWVudC5pc1ByaW1pdGl2ZSgpKTsKQEAgLTk0LDIwICs4MiwxOSBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1
bWVudCkKICAgICAKICAgICBpZiAoYXJndW1lbnQuaXNCaWdJbnQoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhcmd1bWVudCk7Ci0gICAgCi0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIAorCiAgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAgCi0gICAg
aWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8
fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9w
ZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwotICAg
IAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVj
dCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOwotICAg
IH0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisKKyAgICBpZiAoYXJndW1lbnQuaXNT
dHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJn
dW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkg
fHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBUb0Jp
Z0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzEwNiwxNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewotICAgICAgICBpZiAoIWlz
U2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qg
c2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkp
OworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcHJpbWl0aXZlLmFzSW50MzIoKSkp
OwogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc1VJ
bnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJs
ZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAgICAgICAgaWYgKHRydW5jKG51bWJl
cikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBtYXhTYWZlSW50ZWdlcigpKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUgaW50ZWdlciJfcykpOwogCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMk9ySGVhcCwgdm0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KLSAgICAK
KwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJp
bWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYuLjZhN2ZkNTAyMDZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEJpZ0ludE9i
amVjdCk7CiBjb25zdCBDbGFzc0luZm8gQmlnSW50T2JqZWN0OjpzX2luZm8gPSB7ICJCaWdJbnQi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJp
Z0ludE9iamVjdCkgfTsKIAogCi1CaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGJpZ0ludCkKK0Jp
Z0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCaWdJbnRPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0uaGVhcCkpIEJp
Z0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSk7CiAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgYmlnSW50KTsKQEAgLTQ5LDcgKzQ5LDcgQEAg
QmlnSW50T2JqZWN0OjpCaWdJbnRPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKIH0KIAotdm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNCaWdJ
bnQqIGJpZ0ludCkKK3ZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
VmFsdWUgYmlnSW50KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRPYmplY3QuaAppbmRleCA0NGZjNzZmYmRmOS4uMTI2ZWM2OGU2ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCkBAIC0yNiw3ICsyNiw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJK
U1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAg
ICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3Jh
cHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCBkYjRh
NjE4ODk5ZC4uYTg0MzQ2OTk5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtNzksMTIgKzc5LDIwIEBAIHZvaWQgQmlnSW50
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNW
YWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgLy8gRklYTUU6IGhlYXAtYWxsb2NhdGluZyBhbGwgYmln
IGludHMgaXMgaW5uZWZpY2llbnQsIGJ1dCByZS1pbXBsZW1lbnRpbmcgdG9TdHJpbmcgZm9yIHNt
YWxsIEJpZ0ludHMgaXMgZW5vdWdoIHdvcmsgdGhhdCBJJ20gZGVmZXJyaW5nIGl0IHRvIGEgbGF0
ZXIgcGF0Y2guCisgICAgaWYgKHRoaXNWYWx1ZS5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVy
biBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdGhpc1ZhbHVlLmJpZ0ludDMyQXNJbnQzMigpKTsK
KwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKEpTQmlnSW50KiBi
aWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkp
CiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAgICAgaWYgKEJpZ0lu
dE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwg
dGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRPYmplY3QtPmlu
dGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJbnRPYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKSB7
CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+aW50ZXJuYWxWYWx1
ZSgpOworICAgICAgICAgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnQuYmlnSW50MzJBc0ludDMy
KCkpOworICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTksOCArMTA3LDYgQEAgc3RhdGlj
IEpTVmFsdWUgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmEKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmln
SW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CiAKLSAgICBBU1NFUlQodmFsdWUpOwotCiAgICAgaW50
MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIApAQCAtMTE4LDYgKzEyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAorLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24g
c2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNhbmRzIGFuZCBz
aW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9G
dW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1
bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDJhMzNiZDMz
NTZkLi45YjA2OWYwMGYxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTQ3MCwxMyArNDY5LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbmM+KCk7
CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVl
KCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFudCA9IGFyZ3Vt
ZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNJbmMo
Z2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNW
YWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
ZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmpl
Y3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVsc2UKLSAgICAg
ICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSArIDEp
OwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHJl
c3VsdCwgeyB9KTsKIH0KIApAQCAtNDg1LDEzICs0NzksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERl
Yz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpz
VmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0g
YXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6ZGVjKGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQot
ICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQp
IC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0Rz
dCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcsNiArNDk2LDcgQEAgc3RhdGljIHZvaWQgdXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRh
dGEsIEpTVmEKIHsKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1f
YXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKKyAgICAvLyBG
SVhNRTogdGhpcyBhc3NlcnRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxhc3QgY2FzZSAo
Tm9uTnVtZXJpYykuCiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0Jp
Z0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFyZXN1
bHQuaXNJbnQzMigpKSB7CkBAIC01MjgsOCArNTE4LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFy
aXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBK
U1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0Jp
Z0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNl
IGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmln
SW50MzIoKTsKKyAgICBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHBy
b2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CiAgICAgZWxzZQogICAgICAgICBwcm9maWxl
LnNldE9ic2VydmVkTm9uTnVtZXJpYygpOwogfQpAQCAtNTQ2LDggKzUzOCwxOSBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFu
ZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFs
dWUpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90
IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUg
IT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6
OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkco
cmVzdWx0LCB7CisgICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0
aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9wZXJhbmQpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQo
KSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0s
IHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElO
RyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhP
cChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01ODUsOCArNTg4
LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAg
ICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsKKyAgICBlbHNlIGlmIChyZXN1bHQu
aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7
CiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0K
QEAgLTYwOCwxMyArNjEzLDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMp
CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigp
OwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFs
dWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJn
dW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1
bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+
KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RG
OjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3Vs
dCk7CiB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRk
KQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9u
cyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRz
IGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVt
ZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNh
bGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkg
c2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpA
QCAtNjcyLDI0ICs2NzIsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0
ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJp
Z2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAg
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAg
fQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdo
dCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVl
IGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmln
aHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVy
aWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsK
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0
LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlz
aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51
bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BS
T0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJp
dGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwog
ICAgIH0pOwpAQCAtNzMyLDI0ICs2OTgsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9k
KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0
ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0g
R0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0g
bGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9u
LiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsK
LSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1OCwyNSArNzA5LDkgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1Zh
bHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVl
KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAg
IFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUg
YSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpn
ZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlv
bk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzIwLDEwIEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4o
KTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwog
ICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAg
IGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwot
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRV
Uk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChX
VEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzMyLDEwIEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4o
KTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwog
ICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAg
IGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwot
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAg
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwot
ICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90Pihs
ZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwog
fQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg1MCw3OSArNzYxLDQ3
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51
bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIG9wZXJh
bmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KLQotICAgIFJF
VFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMp
KSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5k
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGds
b2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVy
aWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9i
YWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xo
cykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNW
YWx1ZSgpOwogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVy
YXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6Omdl
dDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMp
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJ
TigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMy
KGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9G
SUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMp
LmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBv
cGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6
OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVy
aWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQo
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBC
RUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byBy
aWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0g
R0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BS
T0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMzNDU0NDJm
NTQuLmExMGRjNzUzYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwCkBAIC0xODgsMzQgKzE4OCwyMSBAQCBKU1ZhbHVlIEpTQmlnSW50Ojp0b1ByaW1pdGl2
ZShKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0CiAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKTsKIH0KIAotT3B0aW9uYWw8dWludDhfdD4g
SlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKQotewotICAgIGlmIChpc1plcm8o
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKGxlbmd0aCgpID09IDEgJiYgIXNp
Z24oKSkgewotICAgICAgICBEaWdpdCByRGlnaXQgPSBkaWdpdCgwKTsKLSAgICAgICAgaWYgKHJE
aWdpdCA8PSA5KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJEaWdp
dCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzLCBFcnJvclBh
cnNlTW9kZSBwYXJzZXJNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzLCBFcnJvclBhcnNlTW9kZSBwYXJzZXJN
b2RlKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xv
YmFsT2JqZWN0LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIHBhcnNlck1vZGUpOwogICAg
IHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3Ro
KCksIHBhcnNlck1vZGUpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJh
ZGl4LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlLCBQYXJzZUludFNpZ24gc2lnbikKK0pTVmFs
dWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2Rl
LCBQYXJzZUludFNpZ24gc2lnbikKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAgICAgICAgcmV0
dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgo
KSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0
eVN0cmluZyk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIHMuY2hhcmFj
dGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJzZUlu
dE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnN0
cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcykK
K0pTVmFsdWUgSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cmluZ1ZpZXcgcykKIHsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0
LCBzLCBFcnJvclBhcnNlTW9kZTo6SWdub3JlRXhjZXB0aW9ucyk7CiB9CkBAIC00NTQsMTYgKzQ0
MSwyMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJlbWFpbmRlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJbgogCiBKU0JpZ0ludCogSlNCaWdJbnQ6Omlu
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBG
SVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNp
ZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIGFk
ZChnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAo
IXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwg
eCwgU2lnbk9wdGlvbjo6VW5zaWduZWQpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBhYnNvbHV0
ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHgsIHgtPmxlbmd0aCgpKTsKKyAgICByZXN1bHQtPnNldFNp
Z24odHJ1ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50Ojpk
ZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgpCiB7Ci0gICAgLy8g
RklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJpdCBtb3JlIGVmZmlj
aWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBz
dWIoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSk7CisgICAgaWYg
KHgtPmlzWmVybygpKQorICAgICAgICByZXR1cm4gY3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZt
KCksIDEpOworICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJP
bmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRk
T25lKGdsb2JhbE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQq
IEpTQmlnSW50OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KQpAQCAtNTMyLDcgKzUyMyw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0
d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJ
CiAgICAgaWYgKHgtPnNpZ24oKSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAg
IC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkp
ID09IHggJiB+KHktMSkKICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxP
YmplY3QsIHksIHktPmxlbmd0aCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKICAgICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQs
NyArMTYzNSw3IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRv
U3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiB4LCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1
c2FnZSBvZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1
bHRTdHJpbmc7CiAKICAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0x
ODAyLDcgKzE3OTMsNyBAQCBib29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVy
cm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMTgxMCw3ICsxODAxLDcgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRh
dGEsIHVuc2kKICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtw
XSkpCiAgICAgICAgICsrcDsKIAotICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFj
dGVycworICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0
aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwoZGF0YVtwICsgMV0sICdiJykpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xv
YmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBh
cnNlSW50U2lnbjo6VW5zaWduZWQsIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7
CkBAIC0xODI0LDI0ICsxODE1LDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQ
YXJzZUludFNpZ24gc2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBs
ZW5ndGgpIHsKLSAgICAgICAgaWYgKGRhdGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytwOwot
ICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtwXSA9
PSAnLScpIHsKICAgICAgICAgICAgIHNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAgICAg
ICAgICAgICsrcDsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysn
KQorICAgICAgICAgICAgKytwOwogICAgIH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9k
ZSwgc2lnbik7Ci0KLSAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAgICAg
ICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRh
LCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUg
ZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2Rl
KQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBh
cnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VSVChs
ZW5ndGggPj0gMCk7CiAgICAgdW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4
MzcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJv
d0V4Y2VwdGlvbnMpCiAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmlu
ZyB0byBCaWdJbnQiKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgIH0KIAogICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4
NjcsNDMgKzE4NTIsNzYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICBsZW5ndGggPSBl
bmRJbmRleCArIDE7CiAKICAgICBpZiAocCA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBjcmVh
dGVaZXJvKHZtKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
MCk7CisKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNo
IHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1
bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAg
ICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmln
SW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhM
aW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAogICAgIHVuc2lnbmVkIGxpbWl0
MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRh
ID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRp
eCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmpl
Y3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0
IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJv
dyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5
cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkr
KywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAoZGF0YVtpXSA+
PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAt
ICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0
YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAgICAgICBlbHNl
IGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAgICAgICAgZGln
aXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJyZWFr
OworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRp
eCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHN0YXRpY19jYXN0PGludDMy
X3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gbGVuZ3RoIC0g
cDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBpbnQzMl90IGRpZ2l0ID0gMDsK
KyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZsb3c+IG11bHRpcGxpZXIgPSAx
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoTGltaXRGb3JCaWdJbnQz
MiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAgICAgIGRpZ2l0ICo9IHJhZGl4
OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAgICAgICAgICAgIGlmIChkYXRh
W3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9
IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdhJyAmJiBk
YXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnYScg
KyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ0EnICYmIGRhdGFbcF0gPCBs
aW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdBJyArIDEwOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVy
cm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQg
dG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdldCgpKTsKIAotICAgICAgICBy
ZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4ocmFkaXgpLCBzdGF0
aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7CisgICAg
ICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQ
YXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgZGlnaXQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaGVh
cFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBpbml0aWFsTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOworICAgICAgICAgICAgICAgIC8vIHJlc3VsdCBjYW4gc3RpbGwgYmUgbnVsbCBpZiB3ZSBk
b24ndCBoYXZlIGFjY2VzcyB0byBnbG9iYWwgb2JqZWN0LCBhcyBhbGxvY2F0ZUZvciBjYW5ub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgICAgICBpZiAoIWhl
YXBSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgaGVhcFJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGha
ZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoZWFwUmVzdWx0LT5pbnBs
YWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KG11bHRpcGxpZXIudW5zYWZlR2V0KCkp
LCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKICAgICB9CiAKLSAgICByZXN1bHQtPnNldFNp
Z24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRydWUgOiBmYWxzZSk7Ci0gICAgaWYg
KHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOwotCi0g
ICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9y
UGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8g
cGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIGhl
YXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAgcmV0
dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6RGln
aXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCkBAIC0xOTI3LDE4ICsxOTQ1LDIwIEBAIGJv
b2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAgQVNT
RVJUKG51bVZhbHVlLmlzTnVtYmVyKCkpOwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0ludDMy
KCkpIHsKLSAgICAgICAgaW50IHZhbHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAgICBp
ZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAgICAg
IHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUg
PCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhz
dGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1ZS5p
c0ludDMyKCkpCisgICAgICAgIHJldHVybiBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50MzIo
KSk7CiAgICAgCiAgICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAgICBy
ZXR1cm4gY29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpF
cXVhbDsKIH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVlKQor
eworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAgICBy
ZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwg
MCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIHsK
ICAgICAvLyBUaGlzIGFsZ29yaXRobSBleHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJ
RUVFIDc1NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0
ZTYwOTlmNDcuLmMxM2VmNjAxNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKQEAgLTkwLDEzICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJz
ZUludE1vZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAg
ZW51bSBjbGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0
aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1
aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2Vw
dGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRp
YyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBh
cnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBK
U0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAg
ICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmll
dywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9y
UGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGlj
IEpTVmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAog
ICAgIHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCBy
YWRpeCk7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5n
KCk7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgp
OwogICAgIAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzExMiw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVh
bHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1
ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwog
ICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50
KiB5KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIyMiwxMCBA
QCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAg
ICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1
ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hh
clR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWdu
ZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNp
Z25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAg
ICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFk
aXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwg
UGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0
YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVk
IHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjU4LDkgQEAgcHJpdmF0
ZToKICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRh
OwogfTsKIAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5l
IEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFs
dWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNI
ZWFwQmlnSW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggNTQ4MDEwZWIxYzAuLmJiOWM4NzYzMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAorI2luY2x1ZGUgIkJpZ0ludE9iamVj
dC5oIgogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKQEAgLTcxLDYgKzcy
LDEyIEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlzRG91YmxlKCkp
OwogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
b252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsK
KyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9CiAgICAgaWYgKGlzVHJ1ZSgpKQogICAgICAgICBy
ZXR1cm4gMS4wOwogICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gUE5hTiA6IDA7IC8vIG51bGwg
YW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgpAQCAtMTAxLDYgKzEwOCw4IEBAIEpTT2JqZWN0
KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1Zh
bHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVl
KCkpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7CiAKICAgICBBU1NFUlQoaXNVbmRlZmlu
ZWRPck51bGwoKSk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0xMTgsNiArMTI3
LDExIEBAIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RO
dW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0Zh
bHNlKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xl
YW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAg
ICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6
OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAg
ICAgICAvLyBGSVhNRTogdGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGZpbmQgdG9UaGlz
IGZvciBKU0JpZ0ludCwgYnV0IEkgY2FuJ3QgZXZlbiBmaW5kIHdoZXJlIGl0IGlzIGRlZmluZWQu
CisgICAgICAgIHJldHVybiBoZWFwQmlnSW50LT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmpl
Y3QpKS0+dG9UaGlzKGhlYXBCaWdJbnQsIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAgIH0K
ICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+Z2xvYmFsVGhpcygpOwogfQpAQCAtMTMwLDcgKzE0NCw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVl
OjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7Ci0gICAgICAgIGlmIChp
c0JpZ0ludCgpKQorICAgICAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKICAgICAgICAgQVNTRVJUKGlzU3lt
Ym9sKCkpOwogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsK
QEAgLTE0MCw2ICsxNTQsOCBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAoaXNCb29sZWFuKCkpCiAgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyAgICBpZiAoaXNC
aWdJbnQzMigpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUo
KTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVj
dCwgKnRoaXMpKTsKQEAgLTI4Niw2ICszMDIsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRl
eHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAgIG91dC5wcmludCgiU3ltYm9sOiAiLCBS
YXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoIlN0cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxs
KCkpLCBjb250ZXh0KSk7CisgICAgICAgIGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgpKQorICAgICAg
ICAgICAgb3V0LnByaW50KCJCaWdJbnRbaGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIsIFJhd1BvaW50
ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+
aXNTdWJDbGFzc09mKEpTT2JqZWN0OjppbmZvKCkpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQo
Ik9iamVjdDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50
KCIgd2l0aCBidXR0ZXJmbHkgIiwgUmF3UG9pbnRlcihhc09iamVjdChhc0NlbGwoKSktPmJ1dHRl
cmZseSgpKSk7CkBAIC0zMDUsNiArMzIzLDggQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0
QXNzdW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2Ug
aWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisgICAg
ZWxzZSBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBvdXQucHJpbnRmKCJCaWdJbnRbaW5saW5l
XTogJWQiLCBiaWdJbnQzMkFzSW50MzIoKSk7CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQo
IklOVkFMSUQiKTsKIH0KQEAgLTM0Nyw2ICszNjcsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBGb3JC
YWNrdHJhY2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCJOdWxs
Iik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0LnByaW50KCJVbmRl
ZmluZWQiKTsKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYo
IkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKICAgICBlbHNlCiAgICAg
ICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAtMzg0LDE4ICs0MDYsMjMgQEAgSlNTdHJp
bmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgYm9vbCByZXR1cm5FbXAKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5udWxsU3Ry
aW5nKCk7CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7Ci0gICAgaWYgKGlzU3ltYm9sKCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3lt
Ym9sIHRvIGEgc3RyaW5nIl9zKTsKLSAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyAgICBp
ZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0ludDMyQXNJbnQz
MigpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIpIDw9IDkpCisg
ICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhp
bnRlZ2VyICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdm0u
bnVtZXJpY1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlzQmlnSW50KCkp
IHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKLSAgICAgICAg
aWYgKGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpk
aWdpdCArICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkpOworICAgIGlm
IChpc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNIZWFwQmln
SW50KCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcmF0aGVyIGhhdmUgdHdvIGNhc2Vz
IGhlcmU6IG9uZS1jaGFyYWN0ZXIgc3RyaW5nIHZzIGpzTm9uVHJpdmlhbFN0cmluZyBmb3IgZXZl
cnl0aGluZyBlbHNlLgorICAgICAgICBKU1N0cmluZyogcmV0dXJuU3RyaW5nID0gSlNTdHJpbmc6
OmNyZWF0ZSh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKS5yZWxlYXNlSW1w
bCgpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlcnJvclZhbHVlKCkpOwogICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwogICAgIH0KKyAg
ICBpZiAoaXNTeW1ib2woKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOworICAgICAg
ICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFBy
ZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
aW5kZXggZmUwMTgwZGQ2MGMuLjRiNGZjZmE3MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xNzUsNiArMTc1LDEwIEBAIHB1YmxpYzoKICAgICBl
bnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OwogICAgIGVudW0gSlNGYWxzZVRhZyB7IEpTRmFsc2Ug
fTsKICAgICBlbnVtIEpTQ2VsbFRhZyB7IEpTQ2VsbFR5cGUgfTsKKyAgICBlbnVtIEpTQmlnSW50
VGFnIHsgSlNCaWdJbnQzMk9ySGVhcCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW51bSBK
U0JpZ0ludDMyVGFnIHsgSlNCaWdJbnQzMiB9OworI2VuZGlmCiAgICAgZW51bSBFbmNvZGVBc0Rv
dWJsZVRhZyB7IEVuY29kZUFzRG91YmxlIH07CiAKICAgICBKU1ZhbHVlKCk7CkBAIC0xODQsNiAr
MTg4LDExIEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlKEpTRmFsc2VUYWcpOwogICAgIEpTVmFsdWUo
SlNDZWxsKiBwdHIpOwogICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgor
ICAgIC8vIFJldHVybnMgZWl0aGVyIGEgQmlnSW50MzIgb3IgYSBIZWFwQmlnSW50LgorICAgIEpT
VmFsdWUoSlNCaWdJbnRUYWcsIFZNJiwgaW50NjRfdCk7CiAKICAgICAvLyBOdW1iZXJzCiAgICAg
SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxNyw2ICsyMjYsOSBAQCBw
dWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4o
KSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qgb25seSBiZSBj
YWxsZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBhc0ludDMyRm9y
QXJpdGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBidXQgb3RoZXJ3
aXNlIGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzYsNiArMjQ4LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgIGJv
b2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBpc0JpZ0ludDMyKCkgY29uc3Q7CisjZW5kaWYKICAg
ICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0Owog
ICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKQEAgLTI0NCw3ICsyNjAsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAg
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0gICAgICAgIAor
CiAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBXVEY6OlN0cmluZyYpIGNvbnN0OwogICAgIFdURjo6U3RyaW5nIGdldFN0cmlu
ZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcK
QEAgLTI2Myw5ICsyNzksMTAgQEAgcHVibGljOgogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24g
aXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCiAg
ICAgLy8gYmVlbiBzZXQgaW4gdGhlIENhbGxGcmFtZSBhbHJlYWR5LgogICAgIGRvdWJsZSB0b051
bWJlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQq
LCBkb3VibGU+IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIFZhcmlhbnQ8
SlNCaWdJbnQqLCBpbnQzMl90PiB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25z
dDsKKworICAgIEpTVmFsdWUgdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAg
SlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU0Jp
Z0ludCogYXNIZWFwQmlnSW50KCkgY29uc3Q7CiAKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9u
IGlmIGl0IGNhbiBiZSBkb25lIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgogICAgIE9wdGlvbmFsPGRv
dWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CkBAIC0zMTQsOCArMzMxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGlj
IGJvb2wgc3RyaWN0RXF1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93
Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAg
IHN0YXRpYyBib29sIHN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IHYxLCBKU0NlbGwqIHYyKTsKICAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKQEAgLTQx
MywxMSArNDI5LDIwIEBAIHB1YmxpYzoKICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9s
bG93aW5nIHByb3BlcnRpZXM6CiAgICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3Ig
YWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBx
dWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5n
IHRoZXNlIGludmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBv
dXQgKFVuZGVmaW5lZFRhZykgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0g
V2l0aCBiaXQgMyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpLCBVbmRlZmluZWQgYW5kIE51bGwg
c2hhcmUgdGhlCiAgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVk
IHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCiAgICAgICoKICAgICAgKiBObyB2YWxpZCBKU1ZhbHVl
IHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50
IGFycmF5CiAgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5n
LiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgorICAgICAqCisgICAgICog
V2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBhcmUgc21h
bGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAg
ICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0
aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJ
bnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25m
dXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBz
ZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVy
IHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0g
SXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNl
dCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVm
aW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAgICAvLyBUaGlz
IHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNv
ZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQzMiw2ICs0NTcsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQzMl90IE90aGVyVGFnICAgICAgID0gMHgyOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50MzJfdCBCb29sVGFnICAgICAgICA9IDB4NDsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGludDMyX3QgVW5kZWZpbmVkVGFnICAgPSAweDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQzMl90IEJpZ0ludDMyVGFnICAgID0gMHgxMjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0
X3QgQmlnSW50MzJNYXNrICAgPSBOdW1iZXJUYWcgfCBCaWdJbnQzMlRhZzsKICAgICAvLyBDb21i
aW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8
IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUgICAgICA9IE90
aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uYWJmZDNlNjgyNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMjQwLDYgKzIzOSwxOCBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25z
dCBKU0NlbGwqIHB0cikKICAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxp
bnQzMl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOwogfQogCitpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KQoreworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50VGFnLCBW
TSYgdm0sIGludDY0X3QgdmFsKQoreworICAgIHUuYXNCaXRzLnRhZyA9IENlbGxUYWc7CisgICAg
YXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2YWwpOworICAgIHUuYXNCaXRzLnBheWxv
YWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7
Cit9CisKIGlubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3QKIHsKICAgICBBU1NF
UlQodGFnKCkgIT0gRGVsZXRlZFZhbHVlVGFnKTsKQEAgLTMyOSw2ICszNDAsMTIgQEAgQUxXQVlT
X0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0JpdHMucGF5bG9hZCk7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0JpZ0ludCo+
KHUuYXNCaXRzLnBheWxvYWQpOworfQorCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUo
RW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQogewogICAgIEFTU0VSVCghaXNJbXB1cmVOYU4o
ZCkpOwpAQCAtNDY0LDYgKzQ4MSwyMiBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0ZhbHNl
VGFnKQogICAgIHUuYXNJbnQ2NCA9IFZhbHVlRmFsc2U7CiB9CiAKK2lubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QgdmFsdWUpCit7CisgICAgLy8gVGhlICYgfk51
bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2ZSBudW1iZXJzLCBvdGhlcndpc2UgdGhleSBnZXQg
c2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50NjQgPSAoKHZhbHVlIDw8IDE2KSAmIH5OdW1iZXJU
YWcpIHwgQmlnSW50MzJUYWc7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50
VGFnLCBWTSYgdm0sIGludDY0X3QgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIDw9IElOVF9NQVgg
JiYgdmFsdWUgPj0gSU5UX01JTikKKyAgICAgICAgdS5hc0ludDY0ID0gKHZhbHVlIDw8IDE2KSB8
IEJpZ0ludDMyVGFnOworICAgIGVsc2UgeworICAgICAgICBKU0NlbGwqIHB0ciA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihwdHIpOworICAgIH0KK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewogICAgIC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBz
aGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVu
ZGVkIHRhZy4KQEAgLTUyMiw2ICs1NTUsMTIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFs
dWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQogCitBTFdBWVNfSU5MSU5F
IEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChp
c0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odS5wdHIp
OworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogaW5saW5lIGludDY0X3QgdHJ5Q29u
dmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKQEAgLTYxMCw3ICs2NDksMjcgQEAgaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Jp
Z0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0lu
dCgpOworICAgIHJldHVybiBpc0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lu
bGluZSBib29sIEpTVmFsdWU6OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1
cm4gKHUuYXNJbnQ2NCAmIEJpZ0ludDMyTWFzaykgPT0gQmlnSW50MzJUYWc7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpiaWdJ
bnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOwogfQogCiBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CkBAIC02MjAsNyArNjc5LDcgQEAgaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c1ByaW1pdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+
aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+aXNCaWdJbnQo
KTsKKyAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2Vs
bCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0KIAogaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdApAQCAtNzYwLDggKzgxOSwxNyBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlJiBudQogICAgICAgICB2YWx1ZSA9ICp0aGlzOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAgIG51
bWJlciA9IFBOYU47CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgbnVtYmVyID0g
UE5hTjsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJ
bnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfcyk7CisgICAgbnVtYmVyID0gMC4wOwog
ICAgIHZhbHVlID0gKnRoaXM7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03NzUsNDQgKzg0Myw0
NSBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiB0b051bWJlclNsb3dDYXNlKGdsb2Jh
bE9iamVjdCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4g
SlNWYWx1ZTo6dG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJu
IGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGFzRG91Ymxl
KCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7
CisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpIHx8IGlzQmlnSW50KCkpCisgICAgICAg
IHJldHVybiAqdGhpczsKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBwcmlt
VmFsdWUgPSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0Jp
Z0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzRG91YmxlKCkg
fHwgcHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7CisKICAg
ICBkb3VibGUgdmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwge30pOworCisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVl
KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gSlNWYWx1
ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIGFzSW50MzIoKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiAqdGhpczsKICAgICBpZiAoaXNEb3VibGUoKSAmJiBjYW5CZUludDMyKGFzRG91
YmxlKCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7
Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7Cisg
ICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7
CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAg
ICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwge30pOworCisgICAgaWYgKHByaW1WYWx1ZS5pc0ludDMyKCkgfHwgcHJpbVZhbHVlLmlz
QmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7CisKICAgICBpbnQzMl90IHZhbHVl
ID0gcHJpbVZhbHVlLnRvSW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwge30pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKIGlubGluZSBK
U09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKQEAgLTEwMzUsMzIgKzExMDQsMzMgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6
OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAg
ICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAKKyAgICAgICAgaWYgKHYxLmlz
QmlnSW50MzIoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm4gdjEgPT0g
djI7CisKICAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7CiAgICAgICAgIGJvb2wgczIg
PSB2Mi5pc1N0cmluZygpOwogICAgICAgICBpZiAoczEgJiYgczIpCiAgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBh
c1N0cmluZyh2MikpKTsKIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgeworICAg
ICAgICAvLyBGSVhNRTogYSBsb3Qgb2YgdGhlc2UgY2FuIGxpa2VseSBiZSBzaW1wbGlmaWVkIGJ5
IHN3YXBwaW5nIHYxIGFuZCB2MiBpbiBzb21lIGNhc2VzLgorCisgICAgICAgIGlmIChzMiAmJiB2
MS5pc0JpZ0ludCgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdjJTdHJpbmcgPSBhc1N0cmluZyh2
MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJp
bmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKKyAgICAgICAgICAgIHYyID0gSlNC
aWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFu
KQorICAgICAgICAgICAgaWYgKCF2MikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIHYyID0gSlNWYWx1ZShuKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHMxICYmIHYyLmlzQmlnSW50KCkpIHsK
ICAgICAgICAgICAgIFN0cmluZyB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dmFsdWUoZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
LSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2Jh
bE9iamVjdCwgdjFTdHJpbmcpOworICAgICAgICAgICAgdjEgPSBKU0JpZ0ludDo6c3RyaW5nVG9C
aWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0cmluZyk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICBp
ZiAoIXYxKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgdjEgPSBKU1ZhbHVlKG4pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtMTEzMCwyOCArMTIwMCwzOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6
ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQo
KSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMo
YXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlz
QmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2
MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKKyAgICAgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYm
IHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMo
djEuYXNIZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKTsKKworICAgICAgICBpZiAodjEu
aXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJuIHYx
LmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKwor
ICAgICAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMy
QXNJbnQzMigpKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2MS5pc051bWJlcigp
KQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9OdW1iZXIodjEpOwor
ICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAg
ICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9OdW1iZXIodjIpOworCisgICAg
ICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQorICAgICAgICAgICAg
cmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2MSk7CisKKyAgICAgICAg
aWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm4g
djEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigpOworCisgICAgICAgIGlmICh2Mi5p
c0JpZ0ludDMyKCkgJiYgdjEuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJuIHYyLmJpZ0lu
dDMyQXNJbnQzMigpID09IHYxLmFzSW50MzIoKTsKIAogICAgICAgICByZXR1cm4gdjEgPT0gdjI7
CiAgICAgfSB3aGlsZSAodHJ1ZSk7CiB9CiAKIC8vIEVDTUEgMTEuOS4zCi1BTFdBWVNfSU5MSU5F
IGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorQUxXQVlTX0lOTElORSBib29s
IEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2MikKIHsKLSAgICBBU1NFUlQodjEuaXNDZWxsKCkgJiYg
djIuaXNDZWxsKCkpOwotCi0gICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFz
Q2VsbCgpLT5pc1N0cmluZygpKQorICAgIGlmICh2MS0+aXNTdHJpbmcoKSAmJiB2Mi0+aXNTdHJp
bmcoKSkKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBh
c1N0cmluZyh2MikpOwotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0g
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIp
KTsKKyAgICBpZiAodjEtPmlzSGVhcEJpZ0ludCgpICYmIHYyLT5pc0hlYXBCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MSks
IHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odjIpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAK
QEAgLTExNjMsMTAgKzEyNDMsMTYgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWwKICAgICBpZiAo
djEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdjEuYXNOdW1i
ZXIoKSA9PSB2Mi5hc051bWJlcigpOwogCi0gICAgaWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXND
ZWxsKCkpCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICBpZiAodjEuaXNIZWFwQmlnSW50
KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCkt
PmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworCisgICAgaWYgKHYxLmlzQmln
SW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJp
Z0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKworICAgIGlmICh2
MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9y
Q2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOwogCi0gICAgcmV0
dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAg
IHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMkZv
ckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwxNSArMTI3MCwyMiBAQCBpbmxpbmUgVHJpU3Rh
dGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAg
aWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlzQ2Vs
bCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsK
LSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmlu
Zyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0
cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGlmICghdjFT
dHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci0g
ICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7
CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0lu
dDMyQXNJbnQzMigpKSk7CisKKyAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzSGVhcEJp
Z0ludCgpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjIuYXNIZWFwQmlnSW50KCktPmVxdWFs
c1RvSW50MzIodjEuYmlnSW50MzJBc0ludDMyKCkpKTsKKworICAgIGlmICh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYg
djIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwq
IHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAg
IGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUlt
cGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQorICAgICAgICAg
ICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRl
KFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxzKHYxLmFz
SGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAKICAgICByZXR1
cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMjk5LDggQEAgaW5saW5lIFRyaVN0
YXRlIEpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogICAgICAgICByZXR1cm4gaXNOb3Ra
ZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0Nl
bGwoKS0+cHVyZVRvQm9vbGVhbigpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJl
dHVybiBiaWdJbnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAg
ICAgcmV0dXJuIGlzVHJ1ZSgpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMjcxMzUyYjIxNzQu
LmU4YzY3MGI0NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
QEAgLTEwOCw3ICsxMDgsNyBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogCiBib29sIEpTQ2VsbDo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
LSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlz
QmlnSW50KCkpCisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8
fCBjZWxsLT5pc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0
VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CiAKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBA
IC0xMTgsNyArMTE4LDcgQEAgYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGkKIGJvb2wgSlNDZWxsOjpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkg
fHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKSB7CisgICAgaWYgKGNlbGwt
PmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0hlYXBCaWdJbnQoKSkg
ewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJvdyk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKICAgICB9CkBAIC0x
NTEsNyArMTUxLDcgQEAgSlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCwgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBwcmVmZXJyZWRUeXBlKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmln
SW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMp
LT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmpl
Y3QsIHByZWZlcnJlZFR5cGUpOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgSlNDZWxsOjpn
ZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBu
dW1iZXIsIEpTCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRo
aXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKICAg
ICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJv
bCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVl
KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT5nZXRQcmltaXRpdmVO
dW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVj
dCwgbnVtYmVyLCB2YWx1ZSk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgZG91YmxlIEpTQ2VsbDo6
dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBTeW1ib2wqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNC
aWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b051bWJlcihnbG9i
YWxPYmplY3QpOwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2Jq
ZWN0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIEFTU0VSVCgh
aXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwotICAg
IGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBTeW1ib2wqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQuLjRkMjczOTI1NWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHBy
b3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29sIGlz
U3RyaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNI
ZWFwQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wg
aXNPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggMmRhZjdi
YzBkZGIuLjE2MTgxYmNjOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCkBAIC0yMDUsNyArMjA1LDcgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjpp
c1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCi1p
bmxpbmUgYm9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29uc3QKK2lubGluZSBib29sIEpTQ2VsbDo6
aXNIZWFwQmlnSW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBlID09IEJpZ0ludFR5cGU7
CiB9CkBAIC0zNDEsNyArMzQxLDcgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjp0b0Jvb2xlYW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9v
bGVhbigpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVh
bigpOwogICAgIHJldHVybiAhc3RydWN0dXJlKGdldFZNKGdsb2JhbE9iamVjdCkpLT5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0zNTAsNyArMzUwLDcgQEAgaW5s
aW5lIFRyaVN0YXRlIEpTQ2VsbDo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiB7CiAgICAgaWYgKGlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRo
aXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7Ci0gICAgaWYg
KGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3Rh
dGUgOiBGYWxzZVRyaVN0YXRlOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4g
VHJ1ZVRyaVN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5k
ZXggMjJjMDEyMDVjMmYuLmZlMDEyZjhjN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKQEAgLTEwMzgsNiArMTAzOCw4IEBAIGlubGluZSBib29sIEpTVmFsdWU6
OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBy
ZXR1cm4gYXNEb3VibGUoKSA+IDAuMCB8fCBhc0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxzZSBmb3Ig
TmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVh
bihnbG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiAh
IWJpZ0ludDMyQXNJbnQzMigpOwogICAgIHJldHVybiBpc1RydWUoKTsgLy8gZmFsc2UsIG51bGws
IGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQgdG8gZmFsc2UuCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZS5jcHAKaW5kZXggYzRlYmJlYzUwMzUuLjI3YTIyMWMyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
LmNwcApAQCAtMjYsOSArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCIKIAotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJT
Y3JpYmJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA0OTA1ZDViYWYwNy4uYjU1NTYyYmFmYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC0zNiwx
MSArMzYsNiBAQCBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBlcXVhbFNsb3dD
YXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotYm9vbCBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCi17Ci0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xv
YmFsT2JqZWN0LCB2MSwgdjIpOwotfQotCiBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
CiB7CiAgICAgLy8gZXhjZXB0aW9uIGZvciB0aGUgRGF0ZSBleGNlcHRpb24gaW4gZGVmYXVsdFZh
bHVlKCkKQEAgLTczLDIxICs2OCwxNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVgogICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGdsb2JhbE9iamVjdCwgcDFTdHJp
bmcsIGFzU3RyaW5nKHAyKSkpOwogICAgIH0KIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBwMS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcDIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gYWRkaXRpb24uIl9zKTsKLSAgICB9Ci0KLSAgICByZXR1cm4ganNOdW1iZXIoV1RGOjpn
ZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgKyBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykp
OworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4g
ZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodDsKKyAgICB9OworICAgIGF1dG8g
YmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUg
eworICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0
OworICAgICAgICByZXN1bHQgKz0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQu
aGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7
CisgICAgfTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFyaXRobWV0aWNCaW5hcnlP
cChnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OmFkZCwgZG91YmxlT3AsIGJpZ0ludDMy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9z
KSk7CiB9CiAKIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJiZTIzYzA3MjUuLmEzNTBmNDgyMGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0yNSw3ICsyNSw2IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjM5LDYgKzIzOCwzNCBAQCBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZQogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CiB9CiAKK0FMV0FZU19J
TkxJTkUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZUJpZ0ludFRvT3RoZXJQcmlt
aXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHYxLCBKU1ZhbHVl
IHByaW1WYWx1ZSkKK3sKKyAgICBBU1NFUlQocHJpbVZhbHVlLmlzUHJpbWl0aXZlKCkpOworICAg
IEFTU0VSVCghcHJpbVZhbHVlLmlzQmlnSW50KCkpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBKU1ZhbHVlIGJpZ0ludFZh
bHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJp
bVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgICAg
ICBpZiAoIWJpZ0ludFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJp
c29uUmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgaWYgKGJpZ0ludFZhbHVlLmlzSGVhcEJp
Z0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlKHYxLCBiaWdJbnRW
YWx1ZS5hc0hlYXBCaWdJbnQoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJU
KGJpZ0ludFZhbHVlLmlzQmlnSW50MzIoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogdXNlIHNv
bWV0aGluZyBsZXNzIGhhY2t5LCBlLmcuIHNvbWUga2luZCBvZiBKU0JpZ0ludDo6Y29tcGFyZVRv
SW50MzIKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBz
dGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0lu
dDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmNv
bXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wg
YmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29u
UmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNvbk1vZGUpCiB7CiAgICAg
aWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4p
CkBAIC0yNTUsNTEgKzI4Miw0NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgp
KQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShh
c0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBp
ZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYyOwotICAg
ICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBi
aWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3Ry
aW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFiaWdJbnRWYWx1
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiBi
aWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYmlnSW50
VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAocHJpbVZh
bHVlLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChK
U0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHByaW1WYWx1ZSkpLCBjb21w
YXJpc29uTW9kZSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0JpZ0ludDMyKCkp
IHsKKyAgICAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9k
ZTo6TGVzc1RoYW4pCisgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPCB2
Mi5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGNvbXBhcmlzb25Nb2RlID09IEpT
QmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKTsKKyAgICAgICAgcmV0dXJu
IHYxLmJpZ0ludDMyQXNJbnQzMigpIDw9IHYyLmJpZ0ludDMyQXNJbnQzMigpOworICAgIH0KKwor
ICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIEpTQmlnSW50KiB2Mkhl
YXBCaWdJbnQgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBoYXZlIHNvbWUgZmFzdC1pc2ggcGF0
aCBmb3IgYSBjb21wYXJpc29uIGJldHdlZW4gYSBzbWFsbCBhbmQgYSBsYXJnZSBiaWctaW50Cisg
ICAgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICBlbHNlIGlmICh2MS5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFwQmlnSW50KCk7
CiAKLSAgICAgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7CisgICAgaWYgKHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICBl
bHNlIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50ID0gdjIuYXNI
ZWFwQmlnSW50KCk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50ICYmIHYySGVhcEJpZ0ludCkKKyAg
ICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUodjFIZWFw
QmlnSW50LCB2MkhlYXBCaWdJbnQpLCBjb21wYXJpc29uTW9kZSk7CisKKyAgICBpZiAodjFIZWFw
QmlnSW50KSB7CisgICAgICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRU
b090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjFIZWFwQmlnSW50LCB2Mik7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIGJpZ0lu
dENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MSksIG51
bWJlclZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOworICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJpc29uTW9kZSk7CiAgICAgfQotICAgIAot
ICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0Jp
Z0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVj
dCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAg
IGlmICghYmlnSW50VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYmlnSW50VmFsdWUs
IGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChK
U0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludChwcmltVmFsdWUpLCBhc0JpZ0ludCh2MikpLCBjb21w
YXJpc29uTW9kZSk7Ci0gICAgCi0gICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFy
ZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJbnQsIHYxKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0KICAgICAvLyBIZXJlIHdl
IGNoZWNrIGludmVydGVkIGJlY2F1c2UgQmlnSW50IGlzIHRoZSB2MgotICAgIEpTQmlnSW50OjpD
b21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQgPSBKU0JpZ0ludDo6Y29tcGFyZVRvRG91
YmxlKGFzQmlnSW50KHYyKSwgbnVtYmVyVmFsdWUpOwogICAgIGlmIChjb21wYXJpc29uTW9kZSA9
PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQogICAgICAgICByZXR1cm4gY29t
cGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47
Ci0KICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFy
aXNvblJlc3VsdDo6RXF1YWw7CisKKwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgdG9QcmltaXRp
dmVOdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdiwgSlNWYWx1
ZSYgcCwgZG91YmxlJiBuKQpAQCAtMzU3LDcgKzM3Nyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBq
c0xlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAg
aWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CisgICAgaWYgKHdhc05vdFN0cmlu
ZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAgICAgICBpZiAocDEuaXNCaWdJbnQoKSB8fCBwMi5p
c0JpZ0ludCgpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRD
b21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxl
c3NUaGFuKSk7CiAKQEAgLTQwNyw3ICs0MjcsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wganNMZXNz
RXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mgog
ICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAo
d2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8
fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmln
SW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBh
cmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1Ro
YW5PckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSArNDcyLDI1NiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MgogICAgIHJldHVybiBqc0FkZE5vbk51bWJlcihnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9
CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQordGVtcGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0lu
dE9wZXJhdGlvbiwgdHlwZW5hbWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBCaWdJbnQzMk9w
PgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGFyaXRobWV0aWNCaW5hcnlPcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0
aW9uJiYgaGVhcEJpZ0ludE9wLCBEb3VibGVPcGVyYXRpb24mJiBkb3VibGVPcCwgQmlnSW50MzJP
cCYmIGJpZ0ludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBsZWZ0
TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQorICAgIGlmIChsZWZ0TnVtZXJp
Yy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4g
anNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFz
TnVtYmVyKCkpKTsKIAotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFj
dGlvbi4iX3MpOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aWYgKHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVl
IHJlc3VsdCA9IGJpZ0ludDMyT3AobGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBK
U0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdo
dEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAg
ICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0lu
dCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJp
Yy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgp
LCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNI
ZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBC
aWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51
bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4ganNOdW1iZXIoV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
YykpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdWIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgQ2hl
Y2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVz
dWx0IC09IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc092ZXJmbG93ZWQo
KSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworICAgIH07CisKKyAg
ICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0lu
dDo6c3ViLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmln
aHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgfTsKKyAg
ICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBK
U1ZhbHVlIHsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0
ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0ICo9IHJpZ2h0OworICAgICAgICBpZiAocmVzdWx0Lmhh
c092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7Cisg
ICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwg
djIsIEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAv
IHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwg
aW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIGlmICghcmlnaHQpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCBsZWZ0IC8gcmlnaHQpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRp
Y0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3VibGVP
cCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBk
aXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1haW5kZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAg
ICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJs
ZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRv
IGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAg
IC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9i
YWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3AsIGJpZ0ludDMy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyLiJf
cyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3Ag
PSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBiaWdJ
bnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBF
eHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhlIGJl
c3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAvLyBTbyBkb24n
dCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRoYXQgY2FzZS4K
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0
aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZSwg
ZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
SW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
IChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIob3Bl
cmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0
X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJ
WE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWlu
ZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5U
X01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFs
dWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNf
Y2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyAgICBBU1NFUlQob3BlcmFuZE51bWVy
aWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJ
bnQ6OmluYyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9
CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0RlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFZhcmlhbnQ8SlNC
aWdJbnQqLCBkb3VibGU+IGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50
KiwgZG91YmxlPiByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKwor
ICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1i
ZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSAtIDEpOworICAgIGlmIChvcGVyYW5kTnVtZXJp
Yy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0
PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSAtIDE7CisgICAgICAg
IC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJv
bSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVl
IDwgSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
bmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBz
dGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyAgICBBU1NFUlQob3BlcmFu
ZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgp
KSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0lu
dDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcih+b3BlcmFuZE51bWVyaWMuYXNJbnQzMigp
KTsKIAotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIG11bHRpcGxpY2F0aW9uLiJfcyk7Ci0g
ICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgp
KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpiaXR3aXNlTm90
KGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVtZXJpYy5iaWdJ
bnQzMkFzSW50MzIoKSk7CiAgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50
T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJh
dGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSwgYm9vbCBiaWdJbnQzMk1h
eU92ZXJmbG93ID0gZmFsc2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gbGVm
dE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmlj
LmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGludDMyT3AobGVmdE51bWVyaWMu
YXNJbnQzMigpLCByaWdodE51bWVyaWMuYXNJbnQzMigpKSk7CiAKLSAgICBkb3VibGUgbGVmdFZh
bHVlID0gIFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSByaWdodFZh
bHVlID0gIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICByZXR1cm4ganNOdW1i
ZXIobGVmdFZhbHVlICogcmlnaHRWYWx1ZSk7CisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50
MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpICYmICFiaWdJbnQzMk1heU92ZXJmbG93
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBpbnQzMk9wKGxl
ZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpKTsKKyAgICAvLyBGSVhNRTogYWRkIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgLyBIZWFwQmln
SW50LCBhbmQgZm9yIEhlYXBCaWdJbnQgLyBCaWdJbnQzMgorICAgIC8vIEluIG1hbnkgY2FzZXMg
dGhlc2UgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXAtYWxsb2NhdGluZyB0
aGUgc21hbGwgYmlnLWludCBhbmQgZ29pbmcgdGhyb3VnaCB0aGUgZ2VuZXJpYyBwYXRoLgorCisg
ICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQo
KSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBl
cnJvck1lc3NhZ2UpOworCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVy
aWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmln
SW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdo
dE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBi
aWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsK
IH0KIAotaW5saW5lIGJvb2wgc2NyaWJibGVGcmVlQ2VsbHMoKQorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzTFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmli
YmxlRnJlZUNlbGxzKCk7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50
MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0IDw8IChyaWdodCAm
IDMxKTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IHRoaXMgaXMga2luZCBvZiBhIGtsdWRnZSwg
d2UgY3VycmVudGx5IGZvcmNlIGhlYXAtYWxsb2NhdGlvbnMgb2YgYmlnIGludHMgd2hlbmV2ZXIg
dGhleSBmbG93IGludG8gdGhpcyBvcGVyYXRpb24uCisgICAgYm9vbCBiaWdJbnQzMk1heU92ZXJm
bG93ID0gdHJ1ZTsKKworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpsZWZ0U2hpZnQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIl9zLCBiaWdJbnQzMk1h
eU92ZXJmbG93KTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0
cl90PigweGJhZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0
byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7
CisgICAgICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDMxKTsKKyAgICB9OworCisgICAgcmV0
dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnNpZ25l
ZFJpZ2h0U2hpZnQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworfQogCi1pbmxpbmUgYm9v
bCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNCaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1
ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgYXV0
byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7
CisgICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBj
dXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJh
bmQiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0
aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEs
IHYyLCBKU0JpZ0ludDo6Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOwogfQogCi1p
bmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc0JpdHdpc2VPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgewotICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWdu
ZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgotICAgICAg
ICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAgfQorICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewor
ICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3Vy
cmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAib3Ii
IGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUg
SlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYy
LCBKU0JpZ0ludDo6Yml0d2lzZU9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKK30KKworQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQz
Ml90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVm
dCBeIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMg
b2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAieG9yIiBhbmQgcmUtYm94IHRoZW0u
CisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUsIGFuZCBqdXN0
IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGggMHgxMiBhdCB0aGUgZW5kIHRvIHJlc3RvcmUgdGhl
IHRhZworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpT
QmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi40NzdlNjVhNzA0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29s
IHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0
aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKK30KKworI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0
YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorCitpbmxpbmUgYm9vbCBpc1NjcmliYmxl
ZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JE
KSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQor
eworICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0t
OykgeworICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRo
YXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgorICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVk
SlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwq
PihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQorfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390604</attachid>
            <date>2020-02-12 18:04:56 -0800</date>
            <delta_ts>2020-02-20 18:40:51 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>215383</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZh
bHVlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUu
anMKaW5kZXggYzY5ZGJkYTMzZDMuLmY4MTJiMWNiYTQxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwpAQCAtMyw3ICszLDcgQEAK
IGFzc2VydCA9IHsKICAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKICAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlICsgIiBpbnB1dDogIiArIGlucHV0ICsgIiAhPSBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsK
ICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwt
bm90LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcwppbmRleCBhZjI4
YTcyYjFjMy4uZDAyZTU1MmY5YzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bG9naWNhbC1ub3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5q
cwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5CaWdJbnRFbmFibGVkCiAKLWZ1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbikgewogICAgIGlmIChhICE9PSBlKSB7
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBsb2dpY2FsIG5lZ2F0aW9uIGZvciAiICsgbik7CiAgICAgfQogfQogCkBAIC0xMiw5
ICsxMiw5IEBAIGZ1bmN0aW9uIGxvZ2ljYWxOb3QoYSkgewogbm9JbmxpbmUobG9naWNhbE5vdCk7
CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSk7Ci0g
ICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgt
MW4pLCBmYWxzZSk7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFsc2UsIDEwbik7Cisg
ICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSwgMW4pOworICAgIGFzc2VydChsb2dpY2Fs
Tm90KDBuKSwgdHJ1ZSwgMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlLCAt
MW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0YTUxNGM1N2Q3Li40
ZTYzMjdmYTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg2Niw2ICs4NjYs
NyBAQAogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3
RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJCTJBRjczODJE
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyNUJBMTMzN0U0
MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
MTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1Bh
dGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzM0IyQTU0
NzIyNjUzNDgxMDA1QTBGNzkgLyogQjNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1ZhbHVlSW5saW5lcy5oICovOyB9OwpAQCAtMzUwNSw2ICszNTA2LDcgQEAKIAkJMkFGNzM4MkIx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVy
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVy
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMxMTFCOEEyMzk3MjU2
NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09w
dGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0aCA9IGIzL0IzT3B0
aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNz
aW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM5NUM3MDQyMjU1NUY2
QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9CM0Vs
aW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MzUs
NiArNzUzNyw3IEBACiAJCQkJMEZFMDUwMjAxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlLmggKi8sCiAJCQkJMEZFMDUwMjExQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zm
c2V0LmNwcCAqLywKIAkJCQkwRkUwNTAyMjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCAqLywKKwkJCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLywKIAkJ
CQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5jcHAgKi8sCiAJ
CQkJMTQ3MzQxQ0QxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCAqLywKIAkJ
CQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hlci5oICovLApAQCAtODg5
Nyw2ICs4OTAwLDcgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3NjIwQjFEQjk1OUY5
MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzExMUI4
QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENF
MTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxvY2F0b3JGb3JNb2Rl
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCmluZGV4IGMxMDAyNDA0ZWY2Li4zNTc4NjgzYjU5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC00Njk4LDcgKzQ2
OTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCi0g
ICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlh
dGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KKyAgICAgICAgLy8gQW4gaW1tZWRpYXRl
IHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVl
biBlbWl0dGVkLgogICAgICAgICAvLyBUaGUgd3JpdGVzIGFyZSB1bmNoZWNrZWQgc2luY2UgdGhl
IG9wY29kZSBmb3JtYXR0ZXJzIGFib3ZlIHdpbGwgaGF2ZSBlbnN1cmVkIHNwYWNlLgogCiAgICAg
ICAgIHZvaWQgaW1tZWRpYXRlOChpbnQgaW1tKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCBmZWE2Njc0NWI2Mi4uNzU3NjExMjFlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3Bw
CkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRl
bXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyBy
ZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5
cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNo
b3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hv
dWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYm
ICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTcgQEAgdm9pZCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG5vdEJpZ0ludDMyOworICAgIGppdC5icmFu
Y2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNl
dEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90Qmln
SW50MzIubGluaygmaml0KTsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJy
YW5jaElmTm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJy
YW5jaElmTm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1pdFNldEJpZ0ludChq
aXQpOworICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQocmVn
cy5wYXlsb2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQpOwogICAgIGRvbmUu
YXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZqaXQpOwpAQCAtODgs
MTkgKzk2LDM1IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25O
dW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBC
aXRmaWVsZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0
U2V0QmlnSW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3Vs
ZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0Cit7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNl
cnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFz
azsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25zdAogewotICAg
IEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgQml0Zmll
bGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgcmV0dXJuICht
X2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCisjaWYgVVNFKEpTVkFMVUU2NCkKIHRlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29u
c3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAgICBlbWl0VW5jb25k
aXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsKKyAgICBpZiAoc2hvdWxk
RW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBP
YnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50
MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJ
bnQzMigpKQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0
czo6QmlnSW50MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0
KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4
ICsxNzMsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFy
aXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3Is
ICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAg
ICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRp
ZE9ic2VydmVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3Is
ICJIZWFwQmlnSW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAg
IG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9y
ID0gInwiOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi5iMWVmOGY0ZTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNzQsMjEg
Kzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwKICAg
ICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJPdmVyZmxvdyAg
ICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAg
SGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAgICAgICA9IDEg
PDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRl
ZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNzsK
IAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNpdCBPYnNlcnZl
ZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQogICAgIHsgfQog
Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50KTsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQgfCBCaWdJbnQz
Mik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9u
TmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9u
TmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3VibGU7IH0KICAg
ICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTmVnWmVy
b0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJldHVybiBtX2Jp
dHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4g
bV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4g
bV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRpZE9ic2VydmVI
ZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAgIGJvb2wgZGlk
T2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0KICAgICBib29s
IGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50MzJPdmVyZmxv
dzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMg
JiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1YmxpYzoKICAgICBi
b29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1
bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5v
bk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1cm4g
b2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNl
cnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2Vy
dmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigpIGNvbnN0IHsg
cmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9CiAgICAgYm9v
bCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0
cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQ1
Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUlu
dDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9p
ZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5l
Z1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJp
dChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEJp
Z0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAgIHZvaWQgc2V0
T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9ic2VydmVkUmVz
dWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7
IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAgdm9pZCBzZXRP
YnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDUyT3Zl
cmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9i
aXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6
SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSB8IE9ic2Vy
dmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAg
bV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAodmFsdWUuaXNC
aWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJ
bnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUg
JiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZl
ZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAgLTEzOSwxOSAr
MTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMgKEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUp
IGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0IHNlZXMg
YSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYs
IEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAg
dm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVn
IHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKIAogICAgIC8v
IFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8
IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Owog
ICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAotICAgIC8vIFNl
dHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OwogCi0gICAg
Ly8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAgdm9pZCBlbWl0
U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRCaWdJ
bnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9v
bCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNl
dEJpZ0ludDMyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxT
ZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpAQCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVp
bnQxNl90OwogY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVu
YXJ5QXJpdGhQcm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJn
T2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAg
ICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBm
aXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4g
dGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sg
PSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJv
ZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNp
YWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlm
dCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0
aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3Rh
dGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxk
IGZpdCBpbiB0aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVj
aWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJp
dHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFz
dFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3Vs
ZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3BlY2lhbEZhc3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxC
aW5hcnlBcml0aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJU
aGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hv
dWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmlu
ZGV4IGRlNmNhOGRjOTEwLi5kYjU0Y2E5NmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiNzc4MGMy
YTRkMS4uMmE2ZmVjOWU4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGlu
ZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMuaCIKLSNpbmNsdWRl
ICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EYXRhRm9ybWF0LmgKaW5kZXggMzJmNTg4ZGJmZjYuLmY3ZWIyYWFhYmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKQEAgLTQ0LDEyICs0
NCwxNCBAQCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVh
biA9IDUsCiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0g
NywKLSAgICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisg
ICAgRGF0YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0
SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1h
dEpTIHwgRGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1h
dEpTIHwgRGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3Jt
YXRKUyB8IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMy
ID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRl
bGltaW5hdGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0
cy4KICAgICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44ODgyZGIwNjg1NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykg
Y29uc3QKK3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVl
KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFn
UmVnaXN0ZXJzTW9kZSBtb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAg
Y2FzZSBOb25lOgpAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAg
ICAgfQogICAgICAgICAKICAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAg
ICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05v
dEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2Jz
ZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LmJp
bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVS
ZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCBlOGI2NWVhZDQ2ZS4uNTMzOTJj
NjI1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaApAQCAtODMsNyArODMsOCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMm
LCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFyeSByZWdpc3RlciBpcyBv
bmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3RpbmcgQmlnSW50MzIpLgorICAg
IHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcg
dGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpIGNvbnN0OwogICAg
IHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCAxMDUzYmE1MmI1
NC4uY2RhN2RiMjBkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKICAgICAg
ICAgcmV0dXJuIFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JpZ0lu
dDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAgICAgcmV0dXJuIFNw
ZWNIZWFwQmlnSW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZv
KCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC00OTksOCArNDk5LDggQEAg
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBpZiAoc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsK
LSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQotICAg
ICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50Owog
ICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2ZWRBcnJheVR5cGUp
CiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVybiBzcGVjdWxhdGlv
bkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01MzYsNiArNTM2LDgg
QEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAgIHJldHVybiBTcGVj
Tm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkpCisgICAg
ICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAg
ICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKHZh
bHVlLmlzQm9vbGVhbigpKQpAQCAtNTk1LDggKzU5Nyw4IEBAIE9wdGlvbmFsPFNwZWN1bGF0ZWRU
eXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBT
cGVjU3RyaW5nOwogICAgIGNhc2UgU3ltYm9sVHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNTeW1i
b2w7Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAg
ICBjYXNlIEhlYXBCaWdJbnRUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAg
ICAgY2FzZSBBcnJheVR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjQXJyYXk7CiAgICAgY2FzZSBE
ZXJpdmVkQXJyYXlUeXBlOgpAQCAtNjMyLDYgKzYzNCwxMCBAQCBTcGVjdWxhdGVkVHlwZSBsZWFz
dFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlw
ZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0eXBlIHw9IFNwZWNT
dHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAgIHR5cGUgfD0gU3Bl
Y0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkLi5mZjI2NzEz
MmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKQEAgLTk4LDggKzk4LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwKIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgMzk7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRl
ZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBk
ZWZpbml0ZWx5IGVpdGhlciBhIGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJr
ZXIuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJ
bnQuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Rh
dGFWaWV3Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
c21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQg
b24gdGhlIGhlYXAKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCaWdJbnQzMiB8IFNwZWNIZWFwQmlnSW50
Oworc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRh
Vmlldy4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAg
ICAgICAgICAgICAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVj
b2RlTnVtYmVyIHwgU3BlY01pc2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0
IEpTVmFsdWUuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBT
cGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwg
U3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0
IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBT
cGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNw
ZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVj
RGF0YVZpZXdPYmplY3Q7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQg
b2Ygb2JqZWN0IHByZWRpY3Rpb24uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0
cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsLgpAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9vbCBpc1N5
bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQzMjsK
K30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID0gU3BlY0hlYXBCaWdJbnQ7Cit9CisKIGlubGlu
ZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQ7CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVl
ICYgU3BlY0JpZ0ludCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBib29sIGlzQXJyYXlTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTMyMjIwNWRl
ZTcuLjU3MzY2ZTg3Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTY2OSwxMSArMTY2OSwxMiBA
QCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZQogICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5
cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTeW1ib2xUeXBlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgeworICAgICAgICAgICAgLyppZiAo
T3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKICAgICAgICAgICAg
ICAgICByZXdpbmQoKTsKICAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRo
aXMsIGRzdCwgb3AubV92YWx1ZSwgQmlnSW50VHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9Ki8KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBhZGQgYSBjYXNlIGZvciBCaWdJbnQuIEl0IHdpbGwgcHJvYmFibHkgcmVxdWlyZSBhZGRp
bmcgYSBuZXcgT3BJc0JpZ0ludCBvcGNvZGUsIG5vdyB0aGF0IHdlIGhhdmUgYm90aCBCaWdJbnQz
MiBhbmQgSGVhcEJpZ0ludCAoc28gT3BJc0NlbGxXaXRoVHlwZSBjYW5ub3QgYmUgdXNlZCkuCiAg
ICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICByZXdp
bmQoKTsKICAgICAgICAgICAgICAgICBPcElzT2JqZWN0T3JOdWxsOjplbWl0KHRoaXMsIGRzdCwg
b3AubV92YWx1ZSk7CkBAIC0yODc5LDcgKzI4ODAsNyBAQCBKU1ZhbHVlIEJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50
OAogICAgIHJldHVybiBtX2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRlbnRpZmll
ci5pbXBsKCksIHJhZGl4LCBzaWduKSwgWyZdIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0oKSk7CiAgICAgICAgIGF1dG8gcGFyc2VJbnRTaWduID0gc2lnbiA/
IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlNpZ25lZCA6IEpTQmlnSW50OjpQYXJzZUludFNpZ246
OlVuc2lnbmVkOwotICAgICAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFy
c2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50
OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOworICAgICAg
ICBKU1ZhbHVlIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCks
IGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRo
cm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCA0MmM2MzAyNjBlZS4uMzJhODNmYzI4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEw
ODgsNyArMTA4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVzaW5nIE51bWJlck1h
cCA9IEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0
cmluZ01hcCA9IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZp
ZXJSZXBIYXNoPjsKLSAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8
QmlnSW50TWFwRW50cnksIEpTQmlnSW50Kj47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJ
bnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcg
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU2V0ID0gSGFzaFNldDxSZWY8VGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yPj47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlRGVzY3JpcHRvck1hcCA9IEhhc2hN
YXA8dWludDY0X3QsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiwgV1RGOjpJbnRIYXNoPHVp
bnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTk1ODAwYWZmMjYuLjNhNjc2OWRjOWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3Ry
dWN0b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hl
LmgiCkBAIC0yMTQsNyArMjEzLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRl
bnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAg
Ym9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3Ry
dWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAg
ICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAg
ICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8
IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7
CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0
cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBI
ZWFwQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKICAgICAgICAg
ICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgpA
QCAtNTAyLDcgKzUwMSwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBC
aWdJbnQzMlVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQz
Mik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQp
OworICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNl
KQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzIsNyArNTM1LDEyIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEJpbmFy
eUJpdHdpc2VPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogdGhpcyB1
c2Ugb2YgYmluYXJ5VXNlS2luZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVjaWFsaXplIHRvIChm
b3IgZXhhbXBsZSkgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdo
dC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyAg
ICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCiAgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTcyMiwxMSArNzMwLDE0IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIFZhbHVlU3ViOgogICAgIGNhc2UgVmFsdWVBZGQ6IHsK
LSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAg
ICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNl
dFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmln
SW50KTsKICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5v
ZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZCgpOworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNw
ZWNTdHJpbmcgaGVyZSBmb3IgVmFsdWVTdWI/IEl0IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0
IGZvciBWYWx1ZUFkZC4KICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJp
bmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTg4Niw2ICs4OTcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
IH0KICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZU5lZ2F0ZTogeworICAgICAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gbXVjaCBzbWFydGVyIHRoaW5ncyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRk
L1ZhbHVlU3ViLgogICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtOTU4LDcgKzk3MCwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBj
YXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2Rl
LCB0eXBlT2ZEb3VibGVJbmNPckRlYyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAg
ICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6
CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtOTgyLDcgKzk5OCw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTIsNyAr
MTAxMCwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2UgVmFs
dWVNdWw6IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2Up
CisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBWYWx1
ZVN1Yj8KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAg
ICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlIHx8IG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2Ji
ZXJXb3JsZCgpOwpAQCAtMTA1Niw3ICsxMDc3LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAg
ICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNl
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OwpAQCAtMTkzNiwxMyArMTk1OSwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNoZWNr
IGhlcmUsIGFuZCBub3QgbGF0ZXIgKGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxhY2VtZW50cyBi
eSBmYWxzZS90cnVlKS4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVk
VXNlKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hl
biBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlNDLgotICAgICAgICAgICAgYXV0byBpc05vblN0cmlu
Z0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpOworICAgICAg
ICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUg
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkg
JiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAg
ICAgfTsKIAotICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KGxlZnQpIHx8
IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGlzTm9u
U3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25TdHJpbmdPckJpZ0ludENl
bGxDb25zdGFudChyaWdodCkpIHsKICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRy
eUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZv
ck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2
NCw3ICsxOTg4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAgICBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8CiAgICAgICAgICAgICAgICAg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlz
QmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fAorICAgICAgICAgICAgICAgIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fCAvLyBGSVhNRTogSSBh
bSBjb25mdXNlZCwgaG93IGNhbiB3ZSBldmVyIGhhdmUgdHdvIGRpZmZlcmVudCB1c2Uga2luZHMs
IHdoZW4gdGhleSBhcmUgbGl0dGVyYWxseSB0aGUgc2FtZSBjaGlsZD8KICAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkgfHwKICAgICAgICAg
ICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1Zh
clVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5n
VmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKaW5kZXggYjIzMThmZTAzYWUuLjI4MjQ4MWUzYjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgVmFsdWVCaXRO
b3Q6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7
CisgICAgICAgIGlmIChpc0luKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgQmlnSW50VXNlKSkg
ewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTY4NSw2ICs2ODUsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICBjYXNlIEJpZ0ludFVzZToKICAgICAgICAgICAg
IGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzA3LDcgKzcw
OSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBWYWx1ZVBvdzoKICAgICBj
YXNlIFZhbHVlQml0TFNoaWZ0OgogICAgIGNhc2UgVmFsdWVCaXRSU2hpZnQ6Ci0gICAgICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgeworICAgICAgICAvLyBGSVhNRTog
dGhpcyB1c2Ugb2Ygc2luZ2xlLWFyZ3VtZW50IGlzQmluYXJ5VXNlS2luZCB3b3VsZCBwcmV2ZW50
IHVzIGZyb20gc3BlY2lhbGl6aW5nIChmb3IgZXhhbXBsZSkgZm9yIGEgSGVhcEJpZ0ludCBsZWZ0
LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAg
ICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAppbmRleCBiNDNmN2NmNTRlMS4uYWM2ODM0MzMwZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBK
U0MuCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25z
dGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVl
LmlzQmlnSW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFs
dWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgp
OwogICAgICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChpc05v
blN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjLi43Y2E0YjFiNWFi
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEs
NiBAQAogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgog
I2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggN2ZmYTM4ZTY2ZDIuLmE1YjVlNDg1OGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTIwMSwxNCArMjAxLDIy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dCgpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6
aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2
ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgogICAgICAgICAg
ICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOwotICAg
ICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJ
bmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CisgICAg
ICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSht
X2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50
T25lKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICAgICAgICAgIC8vIEJpZ0ludHMgYXJlIGN1cnJlbnRseSBjZWxscywgc28gdGhlIGRl
ZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhl
YXBCaWdJbnRzIGFyZSBjdXJyZW50bHkgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1
bHRKUyBpcyBnb29kIGhlcmUKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2Rl
Q29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBT
cGVjQmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJl
ZXplKEpTVmFsdWUoSlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBU
aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCByZXByZXNlbnRh
dGlvbiBmb3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBlbHNlIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewogICAgICAgICAgICAgICAg
IG5vZGUtPnNldE9wKG9wID09IEluYyA/IEFyaXRoQWRkIDogQXJpdGhTdWIpOwogICAgICAgICAg
ICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CkBAIC0yMzQs
NiArMjQyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5j
aGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisg
ICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9k
ZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQy
Lm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKQEAgLTI2Nyw4ICsy
ODEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNl
IFZhbHVlQml0QW5kOiB7CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmln
SW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC0zMTIsNyArMzM0LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGlmIChvcGVy
YW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGlmIChvcGVy
YW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQo
KSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRn
ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kRWRn
ZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JCaXRPcHMoKSkKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG9wZXJhbmRFZGdlKTsKICAgICAgICAgICAgIGVsc2Ug
ewpAQCAtNDU3LDcgKzQ4NCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChj
aGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2Rl
KCksIGNoaWxkMi5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+
KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CiAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtNTQ1LDggKzU3OCwxNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hp
bGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIo
bGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQu
bm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC02NTcsOCArNjk4LDE2IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBWYWx1ZVBv
dzogewogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQu
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMjg2Niw3ICsyOTE1LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkp
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAg
LTI5MzksNyArMjk5MywxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIHBy
ZWRpY3Rpb24gb2YgdGhlIGNoaWxkIGlzIEJpZ0ludCwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0IFRv
TnVtZXJpYyB0byBJZGVudGl0eSwgc2luY2UgaXQgY2FuIG9ubHkgcmV0dXJuIGEgQmlnSW50IHdo
ZW4gZmVkIGEgQmlnSW50LgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVC
aWdJbnQzMigpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MTks
MTMgKzM0NzgsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAg
IGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBj
YXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICBjYXNl
IFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToK
ICAgICAgICAgICAgIGlmIChhbHdheXNVbmJveFNpbXBsZVByaW1pdGl2ZXMoKQogICAgICAgICAg
ICAgICAgIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAg
ICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQ
cm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBG
SVhNRTogd2hhdCBzaG91bGQgd2UgZG8gYWJvdXQgQmlnSW50MzJVc2UgYW5kIEJpZ0ludFVzZSA/
CisgICAgICAgIC8vIEFsc28gbW9yZSBicm9hZGx5LCB3aGF0IGFib3V0IGFsbCBvZiB0aGUgVXNl
S2luZHMgd2hpY2ggYXJlIG5vdCBsaXN0ZWQgaW4gdGhhdCBzd2l0Y2g/CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzkzNSw2ICszOTk2LDE4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJl
U3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVT
dHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29t
cGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBiOTI4
ODEwZTEwMS4uZjgxNzBkOTJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVk
ZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR051bGxBYnN0cmFjdFN0YXRlLmgiCi0jaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTM0NTViNWMyOWYuLmRmMjM0NGU1ZDBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjU0Miw2ICsyNTQyLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzU3ltYm9sU3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKICAgICB9CiAgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpCisgICAg
eworICAgICAgICByZXR1cm4gaXNCaWdJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpCisgICAgewor
ICAgICAgICByZXR1cm4gaXNIZWFwQmlnSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGlzQmlnSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKQEAgLTI3NDEsNyAr
Mjc1MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpOwogICAgIH0KLSAg
ICAKKworICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwg
Tm9kZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmln
SW50MzIoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorCisgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChOb2RlKiBvcDEsIE5vZGUqIG9w
MikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKTsKKyAgICB9CisKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlKiBvcDEsIE5vZGUqIG9wMikK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkg
JiYgb3AyLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggODM0YjY4NzAxMTMuLmUxZDg1ZTlkZWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTM4MywxMCArMzgzLDE0
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBi
ZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2UgdGhlIG51bWJlclRh
Z1JlZ2lzdGVyLAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3Rv
cmUgaXQuCiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFkZHJl
c3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBK
U1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAgICAg
IC8vIFdlIGFsc28gdXNlIHRoZSBub3RDZWxsTWFza1JlZ2lzdGVyIGFzIHRoZSBzY3JhdGNoIHJl
Z2lzdGVyLCBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBm
aW5kIGEgbGVzcyBncm9zcyB3YXkgb2YgZG9pbmcgdGhpcywgbWF5YmUgdGhyb3VnaCBkZWxheWlu
ZyB0aGVzZSBvcGVyYXRpb25zIHVudGlsIHdlIGFjdHVhbGx5IGhhdmUgc29tZSBzcGFyZSByZWdp
c3RlcnMgYXJvdW5kPworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpLCBHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICAgICAgICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRh
ZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhp
dC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1f
anNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzayksIEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KQEAgLTM5OCw3
ICs0MDIsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBW
TSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5h
c0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRW
YWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAg
ICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00MDcsMTAgKzQxMSwxMCBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUo
c2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsKICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BU
b1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3Mo
KSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1f
anNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCAyZmRiOWM5ZDc2Ny4uMjg5M2ExZGNmZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtODYsNyArODYsNiBAQAog
I2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAj
aW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNp
ZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjIxLDU2ICsyMjAsNiBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbAogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJ
bnRPcGVyYXRpb24sIHR5cGVuYW1lIE51bWJlck9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIGJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIE51bWJlck9wZXJhdGlvbiYmIG51bWJl
ck9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
Mik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGF1dG8gcmlnaHROdW1lcmljID0gb3AyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmpl
Y3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxl
YXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9wKFdU
Rjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
YykpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUg
SW50MzJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaXR3
aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVy
YXRpb24mJiBiaWdJbnRPcCwgSW50MzJPcGVyYXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBl
cnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAg
SlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHRO
dW1lcmljID0gb3AyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGludDMyT3AoV1RGOjpnZXQ8
aW50MzJfdD4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSkp
OwotfQotCiBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBwYXJzZUludFJlc3Vs
dChkb3VibGUgaW5wdXQpCiB7CiAgICAgaW50IGFzSW50ID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1
dCk7CkBAIC00NzAsNzEgKzQxOSwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTW9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAg
ICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVy
biBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07
Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+
IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQot
ICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVk
T3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBv
cDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RG
OjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcih2YWx1ZSArIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzSW5j
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFu
ZE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmpl
Y3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91Ymxl
IHZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih2YWx1ZSAtIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRGVjKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSk7CiAKLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihv
cGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKH5XVEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3ApKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU0MywxNSAr
NDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0g
W10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0lu
dCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lz
ZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQz
Mk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAg
ICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lz
ZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0
d2lzZUFuZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTYw
LDE1ICs0NjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
Qml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRv
IGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsK
LSAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdp
c2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJ
bnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBi
aXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAg
LTU3NywxNSArNDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJp
Z0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0
LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAg
YXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJf
dCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IF4gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQml0d2lzZVhvcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikKQEAgLTU5NCwxNSArNDgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9
OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IDw8IChyaWdodCAmIDB4MWYpOwotICAg
IH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0xTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikKQEAgLTYxMSwxNSArNDkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewot
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxl
ZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA+PiAo
cmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9i
YWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hp
ZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JTaGlmdChn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NTcsMTUg
KzUyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3Ag
PSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmln
SW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZp
ZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVy
T3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAg
cmV0dXJuIGxlZnQgLyByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVyYXRp
b24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RpdihnbG9iYWxPYmplY3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY3NCwxNSArNTM4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0lu
dCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3Qs
IGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUg
bGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gb3BlcmF0aW9u
TWF0aFBvdyhsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9i
YWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24g
b3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1BvdyhnbG9iYWxP
YmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpKSk7CiB9CiAKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCkBA
IC0xNDc5LDcgKzEzMzUsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgcmVnZXhwLT50ZXN0KGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE0OTEsNyArMTM0Nyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAg
cmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0x
NTAyLDcgKzEzNTgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90Qmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0Jp
Z0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUx
NCw3ICsxMzcwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJ
bnQ6Om11bHRpcGx5KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9
CiAgICAgCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTUyNiw3ICsxMzgyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
ICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUzOCw3ICsxMzk0LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3Qs
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU1MCw3ICsxNDA2LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50
aWF0ZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMTU2Miw3ICsxNDE4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmln
aHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlm
dEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NzQsNyArMTQzMCw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xv
YmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1ODYs
NyArMTQ0Miw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50
OjphZGQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE1OTgsNyArMTQ1NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
CiAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYxMCw3ICsxNDY2LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VP
cihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMTYyOCw3ICsxNDg0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0
LCBvcDEsIG9wMik7CisgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xv
YmFsT2JqZWN0LCBvcDEsIG9wMik7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBh
cmcxLCBFbmNvZGVkSlNWYWx1ZSBhcmcyKQpAQCAtMTY3MywxMCArMTUyOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gdmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPih2YXJpYW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShXVEY6OmdldDxKU0JpZ0ludCo+KHZhcmlhbnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4odmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVj
dCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
V2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkU3Vic2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApp
bmRleCAwZjFjODc1NGNkNi4uN2MxMmYwYzIwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xODEsMTggKzE4MSwxOCBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2Jq
ZWN0KiwgSgogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChKU0dsb2Jh
bE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRP
ckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkSGVhcEJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KFZNKiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5
bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyhWTSosIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0
aCwgdWludDMyX3QgbWluQ2FwYWNpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4
NThiMzhjMS4uNDNiZmM2Y2Q2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01MzMsNiAr
NTMzLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOWQ1MzM1MGE2NTMuLmMxNzRlZTY1ODYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtODAsNiArODAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAgICAgICAgY2Fz
ZSBTeW1ib2xVc2U6CiAgICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5n
T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAg
ICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQyYjE2MzU2ZjkuLmI5NzM1YzY2NmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MzU3MCwxNyArMzU3MCwzNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRO
b3QoTm9kZSogbm9kZSkKIHsKICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKIAot
ICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAg
U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUob3BlcmFuZC5ncHIoKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5ub3QzMihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihy
ZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAg
ICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBm
b3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmIChjaGlsZDEu
dXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEpOwogICAgICAgICBHUFJSZWcgb3BlcmFuZEdQUiA9IG9w
ZXJhbmQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQ
Uik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoY2hpbGQxLCBvcGVyYW5kR1BSKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAKQEAgLTM3MjIsMTYg
KzM3MzksNDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJp
Z0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOworCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSAm
JiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisKKyAgICAgICAgbV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworCisg
ICAgICAgIHN3aXRjaChvcCkgeworICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgorICAgICAgICAg
ICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0
aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAgICAgICAgICAgIG1faml0LmFuZDY0KHJpZ2h0Lmdw
cigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVC
aXRPcjoKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gvYm94OiBvciBkb2VzIG5vdCBp
bnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAgICAgICAgICAgIG1faml0
Lm9yNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBWYWx1ZUJpdFhvcjoKKyAgICAgICAgICAgIC8vIFhvciByZW1vdmVzIHRoZSB0YWcs
IHNvIHdlIG11c3QgYWRkIGl0IGJhY2sgYWZ0ZXIgZG9pbmcgdGhlIG9wZXJhdGlvbgorICAgICAg
ICAgICAgbV9qaXQueG9yNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBt
X2ppdC5vcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdEdQUik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBm
b3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50CisjZW5kaWYKKworICAgIEFTU0VSVChsZWZ0
Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkg
PT0gSGVhcEJpZ0ludFVzZSk7CiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAg
ICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIHNwZWN1bGF0ZUJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0z
NzM5LDEzICszNzg4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdp
c2VPcChOb2RlKiBub2RlKQogCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRB
bmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhv
ckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zODk2
LDI2ICszOTQ1LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9w
KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAg
RWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQz
MgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1
bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAvLyBGSVhN
RTogcmVzdG9yZSB0aGlzIG9uY2Ugc3VwcG9ydGluZyBCaWdJbnQzMiBBU1NFUlQobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpOwogICAgIGVtaXRVbnR5cGVkQml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVy
YXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKQEAgLTM5MjQsMjYgKzM5NzQsMjcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAg
ICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGls
ZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnRVc2UpKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVm
dC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAg
ICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdo
dENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJT
aGlmdEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQu
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOworICAgIC8vIEZJWE1FOiByZXN0b3JlIHRoaXMgb25j
ZSBzdXBwb3J0aW5nIEJpZ0ludDMyIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgZW1pdFVu
dHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CiB9CiAKQEAgLTEwNTc4LDE4ICsxMDYyOSwxOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlKQogICAgIHNw
ZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7
Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVk
Z2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQo
Y2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNl
bGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJ
Zk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJp
Z0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmln
SW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFu
ZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7
CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdz
IHJlZ3MpCkBAIC0xMzExMSw3ICsxMzE2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb051bWVyaWMoTm9kZSogbm9kZSkKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5j
aElmTm90Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2Fk
R1BSKCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0JpZ0ludCA9IG1faml0Lmp1bXAo
KTsKIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5iNWRjNTdmMzYwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAt
MzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShF
ZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZp
bGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UpOworICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50
MzIoRWRnZSk7CiAgICAgR2VuZXJhdGVkT3BlcmFuZFR5cGUgY2hlY2tHZW5lcmF0ZWRUeXBlRm9y
VG9JbnQzMihOb2RlKik7CiAKICAgICB2b2lkIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4pOwpAQCAtMTYyOCw4ICsxNjI5LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoRWRnZSk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRl
U3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UsIEdQUlJlZyBjZWxs
KTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhl
YXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0lu
dChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwgSlNWYWx1ZVJlZ3MpOwog
ICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVy
KEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjA3LDYgKzI2MDgsNTQgQEAg
cHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCitjbGFzcyBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCog
aml0LCBFZGdlIGVkZ2UpCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShl
ZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlZGdlLnVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisg
ICAgICAgICAgICBncHIoKTsKKyAgICB9CisKKyAgICB+U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorCisgICAg
RWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQor
CisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5v
ZGUoKTsKKyAgICB9CisKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dw
ck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQg
PSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UoKSk7CisgICAgICAgIHJldHVybiBt
X2dwck9ySW52YWxpZDsKKyAgICB9CisKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBt
X2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklU
KiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9
OworCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3Vy
Y2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAg
IEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBlY2ZjOTAzOTBiNi4uMDUz
MjBkMjdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTIyMyw2ICsxMjIzLDExIEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIH0KIH0KIAorR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90
aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENo
aWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDM3MjhiODUzZmFiLi4yNjg5ZDEzYmI0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xMDAzLDYgKzEw
MDMsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFs
KEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3Jh
Z2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0
SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5v
ZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzQs
NiArMTIzNiw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRn
ZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9y
bWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsK
ICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTEsNiArMTMxNSw4IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0
YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCks
IG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTEzMTksNiArMTMyNSw4NyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBBYnN0cmFjdFZhbHVl
JiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gdmFsdWUubV90eXBlOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bkJvb2xl
YW5Vc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Jvb2xlYW4pKTsKKworICAgIG1faW50ZXJw
cmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQm9vbGVhbik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIo
KSkgeworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAg
ICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgMCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsK
KyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBh
bGxvY2F0ZSgpOworCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAg
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1f
Z3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7Cisg
ICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzVmFsdWUpKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHJldHVy
biBncHI7CisgICAgICAgIH0KKworICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJl
Z2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8u
ZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIGlmICh0
eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsK
KyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJh
bmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAg
ICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdw
cjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFG
b3JtYXRKU0JpZ0ludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAg
ICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAg
IGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwor
ICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBpZiAodHlwZSAmIH5TcGVjQmlnSW50
MzIpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
Z3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIoZ3ByKSk7CisgICAgICAgICAgICBHUFJS
ZWcgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzJL
bm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpKTsKKyAgICAgICAgICAgIHVubG9jayh0ZW1wR1BS
KTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBE
YXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Cisg
ICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBo
KCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBk
YXRhIGZvcm1hdCIpOworICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9i
amVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
b3AxKHRoaXMsIG9iamVjdENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IGIzZTQxZDhkN2UxLi40
N2I3ZTA1OGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0xMjUsNyArMTI1LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgogICAg
ICAgICBjYXNlIFZhbHVlQml0WG9yOiB7Ci0gICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBt
YXliZSBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvcGVyYW5kIGlzIGFsd2F5cyBIZWFwQmln
SW50IGFuZCB0aGUgb3RoZXIgaXMgYWx3YXlzIEJpZ0ludDMyPworICAgICAgICAgICAgaWYgKG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmNwcAppbmRleCA4ZWY3M2I2ZjJlOC4uNTNmNTAxYjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmNwcApAQCAtMTQ4LDYgKzE0OCwxMiBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgQmlnSW50
VXNlOgogICAgICAgICBvdXQucHJpbnQoIkJpZ0ludCIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIG91dC5wcmludCgi
QmlnSW50MzIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgog
ICAgICAgICBvdXQucHJpbnQoIlN0cmluZ09iamVjdCIpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDljMTNjNWJjZDM1Li4xMDNlZDQ0
NzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTY3LDYgKzY3
LDggQEAgZW51bSBVc2VLaW5kIHsKICAgICBLbm93blByaW1pdGl2ZVVzZSwgLy8gVGhpcyBiaXph
cnJlIHR5cGUgYXJpc2VzIGZvciBvcF9zdHJjYXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2RlIGd1YXJh
bnRlZSB0aGF0IGl0IHdpbGwgb25seSBzZWUgcHJpbWl0aXZlcyAoaS5lLiBub3Qgb2JqZWN0cyku
CiAgICAgU3ltYm9sVXNlLAogICAgIEJpZ0ludFVzZSwKKyAgICBIZWFwQmlnSW50VXNlLAorICAg
IEJpZ0ludDMyVXNlLAogICAgIERhdGVPYmplY3RVc2UsCiAgICAgTWFwT2JqZWN0VXNlLAogICAg
IFNldE9iamVjdFVzZSwKQEAgLTk1LDYgKzk3LDExIEBAIGVudW0gVXNlS2luZCB7CiAgICAgTGFz
dFVzZUtpbmQgLy8gTXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgZW50cnkgaW4gdGhlIGVudW0sIGFz
IGl0IGlzIHVzZWQgdG8gZGVub3RlIHRoZSBudW1iZXIgb2YgZW51bSBlbGVtZW50cy4KIH07CiAK
K2lubGluZSBib29sIGlzSW4oVXNlS2luZCB1c2VLaW5kMSwgVXNlS2luZCB1c2VLaW5kMikKK3sK
KyAgICByZXR1cm4gKHVzZUtpbmQxICYgdXNlS2luZDIpID09IHVzZUtpbmQxOworfQorCiBpbmxp
bmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAg
c3dpdGNoICh1c2VLaW5kKSB7CkBAIC0xNTQsNiArMTYxLDEwIEBAIGlubGluZSBTcGVjdWxhdGVk
VHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAgICAgcmV0dXJuIFNwZWNT
eW1ib2w7CiAgICAgY2FzZSBCaWdJbnRVc2U6CiAgICAgICAgIHJldHVybiBTcGVjQmlnSW50Owor
ICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50Owor
ICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAg
Y2FzZSBQcm9taXNlT2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7
CiAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgpAQCAtMjEyLDI0ICsyMjMsNiBAQCBpbmxpbmUgYm9v
bCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKICAgICByZXR1cm4gIXNob3VsZE5vdEhh
dmVUeXBlQ2hlY2soa2luZCk7CiB9CiAKLWlubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQg
a2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEludDMyVXNlOgotICAgIGNh
c2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIFJlYWxOdW1i
ZXJVc2U6Ci0gICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAg
ICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6Ci0gICAgY2FzZSBBbnlJbnRVc2U6Ci0gICAgY2FzZSBE
b3VibGVSZXBBbnlJbnRVc2U6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIGlubGluZSBib29sIGlzRG91YmxlKFVz
ZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTI2MSw3ICsyNTQsNyBAQCBp
bmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU3RyaW5nVXNlOgogICAg
IGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNl
OgogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBEYXRlT2JqZWN0
VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwCmluZGV4IDIxNzE1ZDNkZDIyLi45YmJhNzQzOWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBA
IHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2Rl
KiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5t
X2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0
b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUklu
Zm86OnJlZ1QwKSk7CisgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgfQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERv
bid0IG1hdGVyaWFsaXplIGFuIG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggY2UwMzliYTc3ZTku
LjlmNmFiNTExNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIFN0cmluZyBIZWFwU25hcHNo
b3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4g
YWxsb3dOCiAKICAgICAgICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNp
Z25lZCBsYWJlbEluZGV4ID0gMDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkg
JiYgIW5vZGUuY2VsbC0+aXNCaWdJbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNT
dHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAg
ICBpZiAoIXN0cnVjdHVyZSB8fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAg
ICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5h
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
CmluZGV4IDk5ZmE0MGViYjQ0Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgi
CiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDZjYmFl
YzE2NDQzLi4wMzI0NjlmZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1ByZWNpc2VBbGxvY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAu
aCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNs
dWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmNwcAppbmRleCA4MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SGVhcEFnZW50LmNwcApAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50
OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwK
ICAgICB9CiAKICAgICAvLyBCaWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQo
KSkgewotICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBh
c0JpZ0ludChjZWxsKSwgMTApOworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAg
ICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJ
bnQoY2VsbCksIDEwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZmYzNjhhNDRi
NzMuLjBhMTczODdkN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZW
YXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1
aW50MzJfdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBT
eW1ib2xUeXBlOgotICAgIGNhc2UgQmlnSW50VHlwZToKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBl
OgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgIGFyZ3VtZW50cykp
OwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZWI4MDgyZTliN2IuLjQ3ZjExYTNiZWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC02
ODgsNyArNjg4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jv
b2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIHsKICAgICAvLyBJbXBsZW1l
bnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFs
dWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlz
IEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFw
QmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8g
ICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVz
LWFzLXVuZGVmaW5lZApAQCAtNjk4LDYgKzY5OCw4IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2Ug
aWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91Ymxl
KHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAg
ICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAg
Ly8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAgLTcwNiw3ICs3MDgs
NyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNo
SWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFs
dWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFs
dWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJp
Z0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzI5LDcgKzczMSw3IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgY29tcGFyZVB0cihpbnZlcnQgPyBFcXVhbCA6
IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIHJlc3VsdCwgcmVzdWx0KTsKICAgICBkb25l
LmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBC
aWdJbnQubGluayh0aGlzKTsKICAgICBsb2FkMzIoQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCks
IEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0KTsKICAgICBjb21wYXJlMzIoaW52
ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7
CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKQEAgLTc1Myw2ICs3NTUsMTMgQEAgdm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmUKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3du
Tm90TnVtYmVyKHZhbHVlLmdwcigpLCByZXN1bHQpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHJl
c3VsdCk7CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgY29t
cGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDAp
LCByZXN1bHQpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMy
LmxpbmsodGhpcyk7CiAgICAgY29tcGFyZTY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZh
bHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVzdWx0KTsKICNl
bHNlCiAgICAgbW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdCk7CkBAIC03NjcsNyArNzc2LDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIHsK
ICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToK
ICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3Ry
aW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBv
ciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+
bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGluZ3Mg
Zm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNzc3LDYgKzc4Niw4IEBAIEFzc2VtYmx5
SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwg
SlNWYWx1ZVJlZ3MgdmFsCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkK
ICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8vICAgICByZXN1bHQg
PSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50
MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZhbHVlKQogICAgIC8v
IH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgIC8vIH0K
QEAgLTc4Niw3ICs3OTcsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVs
cGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogCiAgICAgYXV0byBu
b3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlzU3RyaW5nID0gYnJh
bmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlzQmlnSW50ID0gYnJh
bmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9
IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAgICAgaWYgKHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NFUlQoc2NyYXRjaElm
U2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwpAQCAt
ODE3LDcgKzgyOCw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgdHJ1dGh5LmFwcGVu
ZChicmFuY2hQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigp
LCBUcnVzdGVkSW1tUHRyKGpzRW1wdHlTdHJpbmcodm0pKSkpOwogICAgIGRvbmUuYXBwZW5kKGp1
bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5r
KHRoaXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBO
b25aZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVu
Z3RoKCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIApAQCAtODQzLDYgKzg1NCwxMyBA
QCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1
ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJp
Z0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIG1vdmUodmFs
dWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBzY3Jh
dGNoKTsKKyAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9u
WmVybywgc2NyYXRjaCkpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJp
Z0ludDMyLmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2g2NChpbnZlcnQgPyBO
b3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOwogI2Vsc2UKICAgICBhdXRvIG5vdEJvb2xlYW4gPSBicmFu
Y2hJZk5vdEJvb2xlYW4odmFsdWUsIEludmFsaWRHUFJSZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNzI5ZjU4NDYzN2QuLjc1MDE3NjRjNTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTky
OSw3ICs5MjksMzcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCb29sZWFu
KHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlmCiAgICAgfQotICAgIAorCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdwciwgR1BSUmVn
IHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAg
eworICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9kZSk7CisgICAg
ICAgIEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0
ZW1wR1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJldHVybiBiaWdJ
bnQzMjsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcihH
UFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BS
ICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7CisgICAgICAg
IGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBHUFIpOworICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncy5ncHIoKSwg
dGVtcEdQUik7CisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVt
YmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRl
bXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAg
ICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7
CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
CisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5
IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNoSWZPYmpl
Y3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOCgKQEAgLTk1
MSwxMyArOTgxLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2g4KE5v
dEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiByZW5hbWUg
dGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0byBi
ZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJ
Zk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxH
UFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9CiAgICAgSnVt
cCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RU
eXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkJpZ0ludChHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9
Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJh
bmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZkhl
YXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBI
ZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0ludChHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBl
KTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4g
YnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1bXAgYnJhbmNo
SWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNl
bGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTMzOCw2ICsxMzY5LDE3IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9CisgICAgCisg
ICAgdm9pZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICB1cnNoaWZ0
NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICB9CisKKyAgICB2
b2lkIGJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBsc2hpZnQ2NCh0cnVz
dGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAgICBvcjY0KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQogI2VuZGlmCiAKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQpAQCAtMTcxMCw3ICsxNzUyLDcgQEAgcHVibGljOgogICAgICAgICAv
LyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAg
ICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChp
cyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewog
ICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcyMSw2ICsxNzYzLDggQEAg
cHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2Ug
aWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisgICAgICAg
IC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdp
bnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRlZmluZWQK
ICAgICAgICAgLy8gfQpAQCAtMTc1MiwxMCArMTc5NiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAg
bm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBicmFuY2hJ
Zk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0gYnJhbmNo
SWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJp
Z0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAgICAgICBu
b3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6U3lt
Ym9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7CkBAIC0x
NzcxLDYgKzE4MTUsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4gPSBicmFu
Y2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlw
ZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7CisKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1wIG5vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgICAgICBmdW5jdG9yKFR5
cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RCaWdJbnQzMi5saW5rKHRoaXMp
OworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlVuZGVmaW5l
ZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
aW5kZXggN2YzNThjMTIwM2IuLjhkNDY5NzhiOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTU3MSw5ICs1NzEsMTAgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVP
cFN0cmkKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCBy
ZWdUMSk7CiAgICAgCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3Zl
ciBzdHJpbmdzKS4KKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAo
dG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRv
IHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBv
bmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCiAgICAgbW92
ZShyZWdUMCwgcmVnVDIpOwotICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyAgICBhbmQ2NChyZWdU
MSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwogICAgIAog
ICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQn
cyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CkBAIC02MTQsOSArNjE1
LDEwIEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGJv
dGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQg
bGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAg
Ly8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVy
ZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3Ro
IGFyZSBzdHJpbmdzCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIG9yNjQocmVnVDEsIHJl
Z1QyKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Q2VsbChyZWdUMikpOwogCiAgICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4g
Rmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRl
c3QKQEAgLTY4Niw3ICs2ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihzcmNWUmVnLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsK
KyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1w
IGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggY2Q2NjdiMmU1
ODcuLmRjMWUyYzg1YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVt
ZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2Fk
KHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAg
aXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3Li4y
M2RiZDg5OTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC0yNzg1LDggKzI3ODUsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpT
VmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZl
ck51bWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkp
KTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZh
bHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0g
SU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJp
bVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYg
KHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAK
ICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODA4
LDEwICsyODE1LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmlt
VmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFy
eU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmln
SW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJ
bnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOwor
ICAgIH0KKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJp
Z0ludCgpKTsKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0K
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg0
Myw4ICsyODU5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgSlNWYWx1ZSBwcmlt
VmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCi0gICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisgICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQz
MkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAg
ICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVl
KTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hl
YXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMjg3
NSw5ICsyOTAxLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHBy
aW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKworICAgIC8vIEZJWE1F
OiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBub3QgdGhl
IHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFs
dWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9Cisg
ICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgp
KSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IGI2ZWU5OWUzNjNhLi5mZjEwNWY0Nzc5NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTg1
MSw3ICs4NTEsNyBAQCBtYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwg
ZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwg
dDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkKICAg
ICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBhbmRxIHQxLCB0
MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKICAgICAgICAgYnFhZXEgdDAs
IG51bWJlclRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwpA
QCAtODg1LDcgKzg4NSw3IEBAIG1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQzLCB0MSkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAg
ICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKICAg
ICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0MCwgbnVt
YmVyVGFnLCAuc2xvdwpAQCAtOTE2LDI0ICs5MTYsMjYgQEAgc3RyaWN0RXF1YWxpdHlKdW1wT3Ao
am5zdHJpY3RlcSwgT3BKbnN0cmljdGVxLAogbWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKLSAg
ICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9m
aWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICAgICAgICAgIG9yaCB0eXBl
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFBy
b2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAgZW5kCiAKLSAgICAgICAgZ2V0KG1fc3JjRHN0LCB0
MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MwotICAgICAgICBtZXRhZGF0YSh0MSwg
dDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4gdDEsIHNyY0RzdCBpbiB0MwotICAgICAgICBicWIg
dDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAgICAgaW50ZWdlck9wZXJhdGlvbih0MywgLnNsb3cp
Ci0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDAs
IDhdCi0gICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCi0gICAgICAg
IGRpc3BhdGNoKCkKKyAgICBnZXQobV9zcmNEc3QsIHQwKQorICAgIGxvYWRxIFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBtZXRhZGF0YSh0MiwgdDMpCisgICAgIyBzcmNEc3QgaW4gdDEsIG1ldGFkYXRh
IGluIHQyCisgICAgIyBGSVhNRTogdGhlIG5leHQgbGluZSBqdW1wcyB0byB0aGUgc2xvdyBwYXRo
IGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNhdGVkIHBhdGggaW4g
aGVyZSBmb3IgdGhlbS4KKyAgICBicWIgdDEsIG51bWJlclRhZywgLnNsb3cKKyAgICBpbnRlZ2Vy
T3BlcmF0aW9uKHQxLCAuc2xvdykKKyAgICBvcnEgbnVtYmVyVGFnLCB0MQorICAgIHN0b3JlcSB0
MSwgW2NmciwgdDAsIDhdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkK
KyAgICBkaXNwYXRjaCgpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQorCiBlbmQK
IAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmpl
Y3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MmZmM2Y3OTcyMGIuLjhiNDY5N2ZlMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC03NSwxOCArNzUsNiBAQCB2b2lk
IEJpZ0ludENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEJpZ0ludFByb3RvdHlw
ZSogYmlnSW50UHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgYm9vbCBpc1Nh
ZmVJbnRlZ2VyKEpTVmFsdWUgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFyZ3VtZW50LmlzSW50MzIo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWFyZ3VtZW50LmlzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRvdWJsZSBudW1iZXIgPSBhcmd1bWVudC5h
c0RvdWJsZSgpOwotICAgIHJldHVybiB0cnVuYyhudW1iZXIpID09IG51bWJlciAmJiBzdGQ6OmFi
cyhudW1iZXIpIDw9IG1heFNhZmVJbnRlZ2VyKCk7Ci19Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50
KQogewogICAgIEFTU0VSVChhcmd1bWVudC5pc1ByaW1pdGl2ZSgpKTsKQEAgLTk0LDIwICs4Miwx
OSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICAKICAgICBpZiAoYXJndW1lbnQuaXNCaWdJ
bnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudCk7Ci0gICAgCi0g
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAorCiAgICAgaWYg
KGFyZ3VtZW50LmlzQm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29s
ZWFuKCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwg
YXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVu
dCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3Vt
ZW50LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9T
dHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2Jh
bE9iamVjdCwgdmlldykpOwotICAgIH0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisK
KyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdW
aWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxP
YmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50
LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5p
c1N5bWJvbCgpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
YXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzEw
NiwxNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0g
dmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIo
KSkgewotICAgICAgICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cHJpbWl0aXZlLmFzSW50MzIoKSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
cHJpbWl0aXZlLmFzSW50MzIoKSkpOwogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIo
KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHByaW1pdGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJs
ZSgpKSB7CisgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAg
ICAgICAgaWYgKHRydW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBt
YXhTYWZlSW50ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUg
aW50ZWdlciJfcykpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgp
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMk9ySGVhcCwgdm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJs
ZSgpKSkpOwogICAgIH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmln
SW50KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYu
LjZhN2ZkNTAyMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEJpZ0ludE9iamVjdCk7CiBjb25zdCBDbGFzc0luZm8gQmlnSW50T2JqZWN0
OjpzX2luZm8gPSB7ICJCaWdJbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEJpZ0ludE9iamVjdCkgfTsKIAogCi1CaWdJbnRPYmplY3QqIEJp
Z0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNCaWdJbnQqIGJpZ0ludCkKK0JpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAg
ICBCaWdJbnRPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0lu
dE9iamVjdD4odm0uaGVhcCkpIEJpZ0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRP
YmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgYmlnSW50
KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgQmlnSW50T2JqZWN0OjpCaWdJbnRPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNCaWdJbnQqIGJpZ0ludCkKK3ZvaWQgQmlnSW50T2JqZWN0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAppbmRleCA0NGZjNzZmYmRmOS4u
MTI2ZWM2OGU2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9i
amVjdC5oCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNC
aWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2Jq
ZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9i
amVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAg
IEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6
aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3Rl
ZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJ
bnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNW
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJl
Kik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJv
dG90eXBlLmNwcAppbmRleCBkYjRhNjE4ODk5ZC4uYTg0MzQ2OTk5YzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtNzksMTIg
Kzc5LDIwIEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRvVGhpc0Jp
Z0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgLy8gRklYTUU6IGhl
YXAtYWxsb2NhdGluZyBhbGwgYmlnIGludHMgaXMgaW5uZWZpY2llbnQsIGJ1dCByZS1pbXBsZW1l
bnRpbmcgdG9TdHJpbmcgZm9yIHNtYWxsIEJpZ0ludHMgaXMgZW5vdWdoIHdvcmsgdGhhdCBJJ20g
ZGVmZXJyaW5nIGl0IHRvIGEgbGF0ZXIgcGF0Y2guCisgICAgaWYgKHRoaXNWYWx1ZS5pc0JpZ0lu
dDMyKCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdGhpc1ZhbHVl
LmJpZ0ludDMyQXNJbnQzMigpKTsKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAg
ICAgICAgaWYgKEpTQmlnSW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0s
IHRoaXNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAg
ICAKLSAgICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJl
dHVybiBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50
T2JqZWN0KiBiaWdJbnRPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0
aGlzVmFsdWUuYXNDZWxsKCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0lu
dE9iamVjdC0+aW50ZXJuYWxWYWx1ZSgpOworICAgICAgICAgICAgaWYgKGJpZ0ludC5pc0JpZ0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBi
aWdJbnQuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC5hc0hl
YXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAt
OTksOCArMTA3LDYgQEAgc3RhdGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICBpZiAoIXZhbHVlKQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlz
JyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CiAKLSAgICBBU1NF
UlQodmFsdWUpOwotCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4QXJn
dW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29wZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTE4LDYgKzEyNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQ
cm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAorLy8g
RklYTUU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9y
cyBmb3IgdGhvdXNhbmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCmluZGV4IDJhMzNiZDMzNTZkLi45YjA2OWYwMGYxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OSw3ICs2OSw2
IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVy
TG9nLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3MCwxMyArNDY5LDggQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BJbmM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVj
b2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4g
cmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNJbmMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNC
aWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFu
dCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91Ymxl
PihyZXN1bHRWYXJpYW50KSArIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00o
Ynl0ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNDg1LDEzICs0NzksOCBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcERlYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91
YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQg
PSBKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRW
YXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxk
b3VibGU+KHJlc3VsdFZhcmlhbnQpIC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NV
U1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcsNiArNDk2
LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVn
YXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKIHsKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYg
cHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFy
ZyhvcGVyYW5kKTsKKyAgICAvLyBGSVhNRTogdGhpcyBhc3NlcnRpb24gaXMgaW5jb21wYXRpYmxl
IHdpdGggdGhlIGxhc3QgY2FzZSAoTm9uTnVtZXJpYykuCiAgICAgQVNTRVJUKHJlc3VsdC5pc051
bWJlcigpIHx8IHJlc3VsdC5pc0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkp
IHsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01MjgsOCArNTE4LDEwIEBA
IHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6
TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0
T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVk
QmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsKKyAgICBlbHNlIGlmIChyZXN1bHQuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CiAgICAg
ZWxzZQogICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygpOwogfQpAQCAtNTQ2
LDggKzUzOCwxOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51
bWJlcik7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmln
SW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVz
KHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigp
OworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBS
RVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CisgICAgICAgICAgICAgICAgdXBkYXRlQXJp
dGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9wZXJhbmQpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZh
bHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHBy
aW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRo
UHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAg
ICAgfSk7CkBAIC01ODUsOCArNTg4LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQot
ICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1
bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsK
KyAgICBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0
T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNl
cnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwOCwxMyArNjEzLDggQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRl
Y29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91Ymxl
PiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQg
PSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAg
cmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMg
YW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJl
cigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlz
IGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVy
YW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4g
ZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcyLDI0ICs2NzIsOCBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAg
SlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1Zh
bHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJl
c3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRo
T3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBz
dWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihX
VEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1l
cmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRh
dGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBw
YywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY4NSw4IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwot
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5f
V0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9m
aWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwg
bGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJP
VyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdU
Rjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91
YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIp
OwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJp
dGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJl
c3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs2OTgsOSBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+
KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsK
ICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFs
T2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAg
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAg
IFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBX
VEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRv
dWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsK
KyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykK
QEAgLTc1OCwyNSArNzA5LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9D
KGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5
dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byBy
aWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VY
Q0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25l
bnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAg
IH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwot
ICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVU
VVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzIw
LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29k
ZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojps
ZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIp
KTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJf
dD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEp
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzMy
LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29k
ZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpz
aWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwot
ICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hp
ZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJp
Z2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVS
Tl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlm
dCkKQEAgLTg1MCw3OSArNzYxLDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3Qp
CiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90Pigp
OwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpz
VmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFs
dWUoKTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFu
ZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lz
ZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsK
LSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50
MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3Qo
Z2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFu
ZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+
KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVl
KCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAg
ICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICBhdXRvIGxlZnQg
PSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9G
SUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxp
bnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VB
bmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BC
aXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpz
VmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1Zh
bHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBs
ZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0g
R0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9Q
Uk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6Omdl
dDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdp
c2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhz
KS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3Jocyku
anNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3Io
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAg
ICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAg
ICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJF
VFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBX
VEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAKaW5kZXggOWMzNDU0NDJmNTQuLjQ5MGY2ZWM5NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJ
bnQ6OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUq
IEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZN
JiB2bSkKQEAgLTE4OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZl
KEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1
cm4gY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBK
U0JpZ0ludDo6c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygp
KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2ln
bigpKSB7Ci0gICAgICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRp
Z2l0IDw9IDkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJz
ZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFy
c2VNb2RlIHBhcnNlck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1v
ZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9i
YWxPYmplY3QsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAg
cmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgo
KSwgcGFyc2VyTW9kZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFk
aXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1
ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUs
IFBhcnNlSW50U2lnbiBzaWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1
cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgp
LCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5
U3RyaW5nKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0
ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50
TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQor
SlNWYWx1ZSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RyaW5nVmlldyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQx
LDIwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5j
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJ
WE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2ll
bnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRk
KGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgh
eC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4
LCBTaWduT3B0aW9uOjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRl
U3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2ln
bih0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRl
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBG
SVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNp
ZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1
YihnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAo
eC0+aXNaZXJvKCkpCisgICAgICAgIHJldHVybiBjcmVhdGVGcm9tKGdsb2JhbE9iamVjdC0+dm0o
KSwgMSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZVN1Yk9u
ZShnbG9iYWxPYmplY3QsIHgsIHgtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBZGRP
bmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpTaWduZWQpOwogfQogCiBKU0JpZ0ludCog
SlNCaWdJbnQ6OmFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwg
SlNCaWdJbnQqIHkpCkBAIC01MzIsNyArNTIzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3
aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0kK
ICAgICBpZiAoeC0+c2lnbigpKQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCi0gICAg
Ly8geCAmICgteSkgPT0geCAmIH4oeS0xKSA9PSB4ICYgfih5LTEpCisgICAgLy8geCAmICgteSkg
PT0geCAmIH4oeS0xKQogICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9i
amVjdCwgeSwgeS0+bGVuZ3RoKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwogICAgIHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgeTEpOwpAQCAtMTY0NCw3
ICsxNjM1LDcgQEAgU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0Jhc2VQb3dlck9mVHdvKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIFN0cmluZyBKU0JpZ0ludDo6dG9T
dHJpbmdHZW5lcmljKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJ
bnQqIHgsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIC8vIEZJWE1FOiBbSlNDXSBSZXZpc2l0IHVz
YWdlIG9mIFZlY3RvciBpbnRvIEpTQmlnSW50Ojp0b1N0cmluZwotICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA2NworICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA2NzEKICAgICBWZWN0b3I8TENoYXI+IHJlc3Vs
dFN0cmluZzsKIAogICAgIEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKQEAgLTE4
MDIsNyArMTc5Myw3IEBAIGJvb2wgSlNCaWdJbnQ6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJy
b3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogCkBAIC0xODEwLDcgKzE4MDEsNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0
YSwgdW5zaQogICAgIHdoaWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShkYXRhW3Bd
KSkKICAgICAgICAgKytwOwogCi0gICAgLy8gQ2hlY2sgUmFkaXggZnJvbSBmcmlzdCBjaGFyYWN0
ZXJzCisgICAgLy8gQ2hlY2sgUmFkaXggZnJvbSBmaXJzdCBjaGFyYWN0ZXJzCiAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihwKSArIDEgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3Ro
KSAmJiBkYXRhW3BdID09ICcwJykgewogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChkYXRhW3AgKyAxXSwgJ2InKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9i
YWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAyLCBlcnJvclBhcnNlTW9kZSwgUGFy
c2VJbnRTaWduOjpVbnNpZ25lZCwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsK
QEAgLTE4MjQsMjQgKzE4MTUsMTggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKIAogICAgIFBh
cnNlSW50U2lnbiBzaWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZDsKICAgICBpZiAocCA8IGxl
bmd0aCkgewotICAgICAgICBpZiAoZGF0YVtwXSA9PSAnKycpCi0gICAgICAgICAgICArK3A7Ci0g
ICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CisgICAgICAgIGlmIChkYXRhW3BdID09
ICctJykgewogICAgICAgICAgICAgc2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkOwogICAgICAg
ICAgICAgKytwOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZGF0YVtwXSA9PSAnKycp
CisgICAgICAgICAgICArK3A7CiAgICAgfQogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNl
SW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCwgMTAsIGVycm9yUGFyc2VNb2Rl
LCBzaWduKTsKLQotICAgIGlmIChyZXN1bHQgJiYgIXJlc3VsdC0+aXNaZXJvKCkpCi0gICAgICAg
IHJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEs
IGxlbmd0aCwgcCwgMTAsIGVycm9yUGFyc2VNb2RlLCBzaWduKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSBl
cnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24sIFBhcnNlSW50TW9kZSBwYXJzZU1vZGUp
CitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0
SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSwgUGFy
c2VJbnRTaWduIHNpZ24sIFBhcnNlSW50TW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgQVNTRVJUKGxl
bmd0aCA+PSAwKTsKICAgICB1bnNpZ25lZCBwID0gc3RhcnRJbmRleDsKQEAgLTE4NTIsNyArMTgz
Nyw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QpOwogICAgICAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93
RXhjZXB0aW9ucykKICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5n
IHRvIEJpZ0ludCIpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgfQogCiAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcwpAQCAtMTg2
Nyw0MyArMTg1Miw3NiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdAogICAgIGxlbmd0aCA9IGVu
ZEluZGV4ICsgMTsKIAogICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZVplcm8odm0pOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAw
KTsKKworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgbnVtYmVyIHN1Y2gg
dGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMyX01BWAorICAgIHVu
c2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChyYWRpeCkgeworICAg
IGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMwOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAxMDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJ
bnQzMiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAgIGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwogCiAgICAgdW5zaWduZWQgbGltaXQw
ID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBsaW1pdGEg
PSAnYScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHJhZGl4
IC0gMTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVj
dCwgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3Qg
aGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93
IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlw
ZTo6V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0aDsgaSsr
LCBwKyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRhW2ldID49
ICcwJyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0g
JzAnOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRh
KQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAgIGVsc2Ug
aWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAgICBkaWdp
dCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7
CisgICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHN0YXRpY19jYXN0PGludDMyX3Q+KHJhZGl4
KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdEEgPSAnQScgKyAoc3RhdGljX2Nhc3Q8aW50MzJf
dD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSBsZW5ndGggLSBw
OworICAgIHdoaWxlIChwIDwgbGVuZ3RoKSB7CisgICAgICAgIGludDMyX3QgZGlnaXQgPSAwOwor
ICAgICAgICBDaGVja2VkPGludDMyX3QsIENyYXNoT25PdmVyZmxvdz4gbXVsdGlwbGllciA9IDE7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGhMaW1pdEZvckJpZ0ludDMy
ICYmIHAgPCBsZW5ndGggOyArK2ksICsrcCkgeworICAgICAgICAgICAgZGlnaXQgKj0gcmFkaXg7
CisgICAgICAgICAgICBtdWx0aXBsaWVyICo9IHJhZGl4OworICAgICAgICAgICAgaWYgKGRhdGFb
cF0gPj0gJzAnICYmIGRhdGFbcF0gPCBsaW1pdDApCisgICAgICAgICAgICAgICAgZGlnaXQgKz0g
ZGF0YVtwXSAtICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ2EnICYmIGRh
dGFbcF0gPCBsaW1pdGEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdhJyAr
IDEwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnQScgJiYgZGF0YVtwXSA8IGxp
bWl0QSkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ0EnICsgMTA7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJy
b3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0
byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIEFTU0VSVChkaWdpdCA8IG11bHRpcGxpZXIudW5zYWZlR2V0KCkpOwogCi0gICAgICAgIHJl
c3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRp
Y19jYXN0PERpZ2l0PihkaWdpdCkpOworICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAg
ICAgICAgIGlmIChwID09IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBh
cnNlSW50U2lnbjo6U2lnbmVkKQorICAgICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBkaWdpdCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBoZWFw
UmVzdWx0ID0gYWxsb2NhdGVGb3IoZ2xvYmFsT2JqZWN0LCB2bSwgcmFkaXgsIGluaXRpYWxMZW5n
dGgpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisgICAgICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRv
bid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0
aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgICAgIGlmICghaGVh
cFJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICBoZWFwUmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFpl
cm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxh
Y2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSks
IHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOwogICAgIH0KIAotICAgIHJlc3VsdC0+c2V0U2ln
bihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICBpZiAo
cCA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7Ci0KLSAg
ICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQ
YXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucykKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBw
YXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVh
cFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1
cm4gaGVhcFJlc3VsdC0+cmlnaHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdp
dCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikKQEAgLTE5MjcsMTggKzE5NDUsMjAgQEAgYm9v
bCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NF
UlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIo
KSkgewotICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlm
ICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAg
cmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8
IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0
YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlz
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigp
KTsKICAgICAKICAgICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJl
dHVybiBjb21wYXJlVG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVx
dWFsOwogfQogCitib29sIEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJl
dHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAw
KSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0
aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewog
ICAgIC8vIFRoaXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElF
RUUgNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRl
NjA5OWY0Ny4uYzEzZWY2MDE1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaApAQCAtOTAsMTMgKzkwLDEyIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNl
SW50TW9kZSB7IERpc2FsbG93RW1wdHlTdHJpbmcsIEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBl
bnVtIGNsYXNzIFBhcnNlSW50U2lnbiB7IFVuc2lnbmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRp
YyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVp
bnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0
aW9ucywgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGlj
IEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFy
c2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpT
QmlnSW50KiBzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAg
IHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3
LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4
Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0
YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQ
YXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMg
SlNWYWx1ZSBzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAg
ICAgc3RhdGljIFN0cmluZyB0cnlHZXRTdHJpbmcoVk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJh
ZGl4KTsKIAotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmco
KTsKICAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7
CiAgICAgCiAgICAgZW51bSBjbGFzcyBDb21wYXJpc29uTW9kZSB7CkBAIC0xMTMsNiArMTEyLDcg
QEAgcHVibGljOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFs
cyhKU0JpZ0ludCosIEpTQmlnSW50Kik7CiAgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAg
ICAgc3RhdGljIENvbXBhcmlzb25SZXN1bHQgY29tcGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQq
IHkpOwogCiAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3Vi
bGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25zdDsKQEAgLTIyMiwxMCArMjIyLDEwIEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAg
IHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVl
IHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIEVycm9yUGFyc2VNb2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
LSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFy
VHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2ln
bmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAg
IHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRp
eCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQ
YXJzZUludE1vZGUgPSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3Rh
dGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQg
cmFkaXgsIHVuc2lnbmVkIGNoYXJjb3VudCk7CiAKQEAgLTI1OCw5ICsyNTgsOSBAQCBwcml2YXRl
OgogICAgIENhZ2VkVW5pcXVlUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7
CiB9OwogCi1pbmxpbmUgSlNCaWdJbnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUg
SlNCaWdJbnQqIGFzSGVhcEJpZ0ludChKU1ZhbHVlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1
ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hl
YXBCaWdJbnQoKSk7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApp
bmRleCA1NDgwMTBlYjFjMC4uYmI5Yzg3NjMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0
LmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAtNzEsNiArNzIs
MTIgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7
CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNv
bnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOwor
ICAgICAgICByZXR1cm4gMC4wOworICAgIH0KICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJl
dHVybiAxLjA7CiAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBh
bmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCkBAIC0xMDEsNiArMTA4LDggQEAgSlNPYmplY3Qq
IEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFs
dWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUo
KSk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICp0aGlzKTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5l
ZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMjcs
MTEgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51
bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFs
c2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVh
bihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAg
ICAgICBKU0NlbGwqIGhlYXBCaWdJbnQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihKU0JpZ0ludDo6
Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIGJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAg
ICAgIC8vIEZJWE1FOiB0aGVyZSBtdXN0IGJlIGEgc2ltcGxlciB3YXkgdG8gZmluZCB0b1RoaXMg
Zm9yIEpTQmlnSW50LCBidXQgSSBjYW4ndCBldmVuIGZpbmQgd2hlcmUgaXQgaXMgZGVmaW5lZC4K
KyAgICAgICAgcmV0dXJuIGhlYXBCaWdJbnQtPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVj
dCkpLT50b1RoaXMoaGVhcEJpZ0ludCwgZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7CisgICAgfQog
ICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTQ0LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6
OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKGlz
QmlnSW50KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQoaXNTeW1i
b2woKSk7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwpA
QCAtMTQwLDYgKzE1NCw4IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPm51bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOworICAgIGlmIChpc0Jp
Z0ludDMyKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgp
OwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0
LCAqdGhpcykpOwpAQCAtMjg2LDYgKzMwMiw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4
dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJh
d1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5w
cmludCgiU3RydWN0dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwo
KSksIGNvbnRleHQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAg
ICAgICBvdXQucHJpbnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRl
cihhc0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5p
c1N1YkNsYXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgi
T2JqZWN0OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQo
IiB3aXRoIGJ1dHRlcmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVy
Zmx5KCkpKTsKQEAgLTMwNSw2ICszMjMsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRB
c3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBp
ZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyAgICBl
bHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVd
OiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKICAgICBlbHNlCiAgICAgICAgIG91dC5wcmludCgi
SU5WQUxJRCIpOwogfQpAQCAtMzQ3LDYgKzM2Nyw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJh
Y2t0cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIk51bGwi
KTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVm
aW5lZCIpOworICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50Zigi
QmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOwogICAgIGVsc2UKICAgICAg
ICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zODQsMTggKzQwNiwyMyBAQCBKU1N0cmlu
ZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBib29sIHJldHVybkVtcAogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJp
bmcoKTsKICAgICBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy51bmRlZmluZWRTdHJpbmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1i
b2wgdG8gYSBzdHJpbmciX3MpOwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIGlm
IChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAg
ICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGlu
dGVnZXIgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5u
dW1lcmljU3RyaW5ncy5hZGQoaW50ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkg
ewotICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBp
ZiAoYXV0byBkaWdpdCA9IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRp
Z2l0ICsgJzAnKTsKLSAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisgICAgaWYg
KGlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBCaWdJ
bnQoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2FzZXMg
aGVyZTogb25lLWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBldmVy
eXRoaW5nIGVsc2UuCisgICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBKU1N0cmluZzo6
Y3JlYXRlKHZtLCBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApLnJlbGVhc2VJbXBs
KCkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVycm9yVmFsdWUoKSk7CiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7CiAgICAgfQorICAg
IGlmIChpc1N5bWJvbCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7CisgICAgICAg
IHJldHVybiBlcnJvclZhbHVlKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJl
ZmVyU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApp
bmRleCBmZTAxODBkZDYwYy4uNGI0ZmNmYTcwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTE3NSw2ICsxNzUsMTAgQEAgcHVibGljOgogICAgIGVu
dW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9
OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworICAgIGVudW0gSlNCaWdJbnRU
YWcgeyBKU0JpZ0ludDMyT3JIZWFwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbnVtIEpT
QmlnSW50MzJUYWcgeyBKU0JpZ0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91
YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4NCw2ICsx
ODgsMTEgQEAgcHVibGljOgogICAgIEpTVmFsdWUoSlNGYWxzZVRhZyk7CiAgICAgSlNWYWx1ZShK
U0NlbGwqIHB0cik7CiAgICAgSlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpOworI2VuZGlmCisg
ICAgLy8gUmV0dXJucyBlaXRoZXIgYSBCaWdJbnQzMiBvciBhIEhlYXBCaWdJbnQuCisgICAgSlNW
YWx1ZShKU0JpZ0ludFRhZywgVk0mLCBpbnQ2NF90KTsKIAogICAgIC8vIE51bWJlcnMKICAgICBK
U1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUpOwpAQCAtMjE3LDYgKzIyNiw5IEBAIHB1
YmxpYzoKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAgICBib29sIGFzQm9vbGVhbigp
IGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0OworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5IGJlIGNh
bGxlZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50MzJGb3JB
cml0aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBvdGhlcndp
c2UgbGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzNiw2ICsyNDgsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9v
bCBpc0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKKyNlbmRpZgogICAg
IGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpAQCAtMjQ0LDcgKzI2MCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGluaGVyaXRzKFZNJiwgY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0PiBib29sIGluaGVyaXRzKFZNJikgY29uc3Q7CiAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Pck51bGwoVk0mKSBjb25zdDsKLSAgICAgICAgCisK
ICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KICAgICBib29sIGdldFN0cmluZyhKU0dsb2Jh
bE9iamVjdCosIFdURjo6U3RyaW5nJikgY29uc3Q7CiAgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5n
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwpA
QCAtMjYzLDkgKzI3OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBp
cyBleHBlY3RlZCB0byBiZSBzaWRlIGVmZmVjdCBmcmVlIGlmIGFuIGV4Y2VwdGlvbiBoYXMKICAg
ICAvLyBiZWVuIHNldCBpbiB0aGUgQ2FsbEZyYW1lIGFscmVhZHkuCiAgICAgZG91YmxlIHRvTnVt
YmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgCi0gICAgVmFyaWFudDxKU0JpZ0ludCos
IGRvdWJsZT4gdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgVmFyaWFudDxK
U0JpZ0ludCosIGludDMyX3Q+IHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0
OworCisgICAgSlNWYWx1ZSB0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBK
U1ZhbHVlIHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTQmln
SW50KiBhc0hlYXBCaWdJbnQoKSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24g
aWYgaXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCiAgICAgT3B0aW9uYWw8ZG91
YmxlPiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKQEAgLTMxNCw4ICszMzEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxp
bmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMg
Ym9vbCBzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
OwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dD
YXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAg
c3RhdGljIGJvb2wgc3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
djEsIEpTQ2VsbCogdjIpOwogICAgIHN0YXRpYyBUcmlTdGF0ZSBwdXJlU3RyaWN0RXF1YWwoSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAKICAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwpAQCAtNDEz
LDExICs0MjksMjAgQEAgcHVibGljOgogICAgICAqIFRoZXNlIHZhbHVlcyBoYXZlIHRoZSBmb2xs
b3dpbmcgcHJvcGVydGllczoKICAgICAgKiAtIEJpdCAxIChPdGhlclRhZykgaXMgc2V0IGZvciBh
bGwgZm91ciB2YWx1ZXMsIGFsbG93aW5nIHJlYWwgcG9pbnRlcnMgdG8gYmUKICAgICAgKiAgIHF1
aWNrbHkgZGlzdGluZ3Vpc2hlZCBmcm9tIGFsbCBpbW1lZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcg
dGhlc2UgaW52YWxpZCBwb2ludGVycy4KLSAgICAgKiAtIFdpdGggYml0IDMgaXMgbWFza2VkIG91
dCAoVW5kZWZpbmVkVGFnKSBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCisgICAgICogLSBX
aXRoIGJpdCAzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZyksIFVuZGVmaW5lZCBhbmQgTnVsbCBz
aGFyZSB0aGUKICAgICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQg
dG8gYmUgcXVpY2tseSBkZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFsdWUg
d2lsbCBoYXZlIHRoZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQg
YXJyYXkKICAgICAgKiBob2xlcywgYW5kIGFzIGEgQysrICdubyB2YWx1ZScgcmVzdWx0IChlLmcu
IEpTVmFsdWUoKSBoYXMgYW4gaW50ZXJuYWwgdmFsdWUgb2YgMCkuCisgICAgICoKKyAgICAgKiBX
ZSBoYXZlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFs
bCAoMzItYml0IGF0IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAg
ICAqIFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRo
aW5nczoKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIElu
dGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1
c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNl
dCB0byB0cnVlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIg
dG8gd2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJ
dCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0
IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZp
bmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMg
dmFsdWUgaXMgMl40OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29k
ZWQgdmFsdWUgd2lsbCBiZWdpbgpAQCAtNDMyLDYgKzQ1Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIGludDMyX3QgT3RoZXJUYWcgICAgICAgPSAweDI7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQzMl90IEJvb2xUYWcgICAgICAgID0gMHg0OwogICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50MzJfdCBVbmRlZmluZWRUYWcgICA9IDB4ODsKKyAgICBzdGF0aWMgY29uc3RleHByIGlu
dDMyX3QgQmlnSW50MzJUYWcgICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBCaWdJbnQzMk1hc2sgICA9IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOwogICAgIC8vIENvbWJp
bmVkIGludGVnZXIgdmFsdWUgZm9yIG5vbi1udW1lcmljIGltbWVkaWF0ZXMuCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlRmFsc2UgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwg
ZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlVHJ1ZSAgICAgID0gT3Ro
ZXJUYWcgfCBCb29sVGFnIHwgdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlLi5hYmZkM2U2ODI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0yNDAsNiArMjM5LDE4IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0
IEpTQ2VsbCogcHRyKQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGlu
dDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7CiB9CiAKK2lubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZN
JiB2bSwgaW50NjRfdCB2YWwpCit7CisgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKKyAgICBh
dXRvIHB0ciA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZhbCk7CisgICAgdS5hc0JpdHMucGF5bG9h
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsK
K30KKwogaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VS
VCh0YWcoKSAhPSBEZWxldGVkVmFsdWVUYWcpOwpAQCAtMzI5LDYgKzM0MCwxMiBAQCBBTFdBWVNf
SU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElO
RSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4o
dS5hc0JpdHMucGF5bG9hZCk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShF
bmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihk
KSk7CkBAIC00NjQsNiArNDgxLDIyIEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VU
YWcpCiAgICAgdS5hc0ludDY0ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpT
VmFsdWUoSlNCaWdJbnQzMlRhZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVt
YmVyVGFnIHBhcnQgaXMgZm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBz
aWduLWV4dGVuZGVkLgorICAgIHUuYXNJbnQ2NCA9ICgodmFsdWUgPDwgMTYpICYgfk51bWJlclRh
ZykgfCBCaWdJbnQzMlRhZzsKK30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRU
YWcsIFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPD0gSU5UX01BWCAm
JiB2YWx1ZSA+PSBJTlRfTUlOKQorICAgICAgICB1LmFzSW50NjQgPSAodmFsdWUgPDwgMTYpIHwg
QmlnSW50MzJUYWc7CisgICAgZWxzZSB7CisgICAgICAgIEpTQ2VsbCogcHRyID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICAgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHB0cik7CisgICAgfQorfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0CiB7CiAgICAgLy8gVW5kZWZpbmVkIGFuZCBudWxsIHNo
YXJlIHRoZSBzYW1lIHZhbHVlLCBiYXIgdGhlICd1bmRlZmluZWQnIGJpdCBpbiB0aGUgZXh0ZW5k
ZWQgdGFnLgpAQCAtNTIyLDYgKzU1NSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1
ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gdS5wdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUg
SlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
SGVhcEJpZ0ludCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih1LnB0cik7
Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiBpbmxpbmUgaW50NjRfdCB0cnlDb252
ZXJ0VG9JbnQ1Mihkb3VibGUgbnVtYmVyKQpAQCAtNjEwLDcgKzY0OSwyNyBAQCBpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQmln
SW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50
KCk7CisgICAgcmV0dXJuIGlzQmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJbnQoKTsKK30KKworaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXND
ZWxsKCkgJiYgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0JpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVy
biAodS5hc0ludDY0ICYgQmlnSW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2lubGluZSBpbnQzMl90IEpTVmFsdWU6OmJpZ0lu
dDMyQXNJbnQzMigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCA+PiAxNik7CiB9CiAKIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTYyMCw3ICs2NzksNyBAQCBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6Omlz
UHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5p
c1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0JpZ0ludCgp
OworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxs
KCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCiBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0CkBAIC03NjAsOCArODE5LDE3IEBA
IGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAgICAgIHZhbHVlID0gKnRoaXM7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0gICAgbnVt
YmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkgeworICAgICAgICBudW1iZXIgPSBQ
TmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0lu
dCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAgICBudW1iZXIgPSAwLjA7CiAg
ICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3NSw0NCArODQzLDQ1
IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZ2xvYmFs
T2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBK
U1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4g
YXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gYXNEb3VibGUo
KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0aGlzKTsK
KyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmln
SW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8
fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAg
IGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICByZXR1cm4ganNOdW1iZXIodmFsdWUp
OwogfQogCi1BTFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiBKU1ZhbHVl
Ojp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICBy
ZXR1cm4gYXNJbnQzMigpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIGlmIChpc0RvdWJsZSgpICYmIGNhbkJlSW50MzIoYXNEb3Vi
bGUoKSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKTsK
LSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKCkpKTsK
IAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB0aGlzLT50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAg
ICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7fSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmltVmFsdWUuaXNC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMyX3QgdmFsdWUg
PSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7fSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpT
T2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdApAQCAtMTAzNSwzMiArMTEwNCwzMyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6
ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAg
ICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0
dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAorICAgICAgICBpZiAodjEuaXNC
aWdJbnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVybiB2MSA9PSB2
MjsKKwogICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKICAgICAgICAgYm9vbCBzMiA9
IHYyLmlzU3RyaW5nKCk7CiAgICAgICAgIGlmIChzMSAmJiBzMikKICAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFz
U3RyaW5nKHYyKSkpOwogCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHMyKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBhIGxvdCBvZiB0aGVzZSBjYW4gbGlrZWx5IGJlIHNpbXBsaWZpZWQgYnkg
c3dhcHBpbmcgdjEgYW5kIHYyIGluIHNvbWUgY2FzZXMuCisKKyAgICAgICAgaWYgKHMyICYmIHYx
LmlzQmlnSW50KCkpIHsKICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYy
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmlu
Z1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOworICAgICAgICAgICAgdjIgPSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4p
CisgICAgICAgICAgICBpZiAoIXYyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKG4pOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewog
ICAgICAgICAgICAgU3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxP
YmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFs
T2JqZWN0LCB2MVN0cmluZyk7CisgICAgICAgICAgICB2MSA9IEpTQmlnSW50OjpzdHJpbmdUb0Jp
Z0ludChnbG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIGlm
ICghdjEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICB2MSA9IEpTVmFsdWUobik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCkBAIC0xMTMwLDI4ICsxMjAwLDM4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpl
cXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgp
ICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhh
c0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNC
aWdJbnQoKSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYx
KS0+ZXF1YWxzVG9OdW1iZXIodjIpOworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYg
djIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2
MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOworCisgICAgICAgIGlmICh2MS5p
c0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm4gdjEu
YXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworCisg
ICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAg
ICAgICByZXR1cm4gdjIuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjEuYmlnSW50MzJB
c0ludDMyKCkpOwogCi0gICAgICAgIGlmICh2Mi5pc0JpZ0ludCgpICYmIHYxLmlzTnVtYmVyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjIpLT5lcXVhbHNUb051bWJlcih2MSk7Cisg
ICAgICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICAg
ICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7CisKKyAgICAg
ICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpICYmIHYxLmlzTnVtYmVyKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdjIuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKworICAgICAgICBp
ZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVybiB2
MS5iaWdJbnQzMkFzSW50MzIoKSA9PSB2Mi5hc0ludDMyKCk7CisKKyAgICAgICAgaWYgKHYyLmlz
QmlnSW50MzIoKSAmJiB2MS5pc0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm4gdjIuYmlnSW50
MzJBc0ludDMyKCkgPT0gdjEuYXNJbnQzMigpOwogCiAgICAgICAgIHJldHVybiB2MSA9PSB2MjsK
ICAgICB9IHdoaWxlICh0cnVlKTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUg
Ym9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2
Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXND
ZWxsKCktPmlzU3RyaW5nKCkpCisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFz
U3RyaW5nKHYyKSk7Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2Mikp
OworICAgIGlmICh2MS0+aXNIZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwg
c3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApA
QCAtMTE2MywxMCArMTI0MywxNiBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2
MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJl
cigpID09IHYyLmFzTnVtYmVyKCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0Nl
bGwoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgIGlmICh2MS5pc0hlYXBCaWdJbnQo
KSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+
ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisKKyAgICBpZiAodjEuaXNCaWdJ
bnQzMigpICYmIHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gdjIuYXNIZWFwQmln
SW50KCktPmVxdWFsc1RvSW50MzIodjEuYmlnSW50MzJBc0ludDMyKCkpOworCisgICAgaWYgKHYx
LmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxGb3JD
ZWxscyhnbG9iYWxPYmplY3QsIHYxLmFzQ2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICByZXR1
cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAg
cmV0dXJuIHYxID09IHYyOwogfQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9y
QXJpdGhtZXRpYygpIGNvbnN0CkBAIC0xMTg0LDE1ICsxMjcwLDIyIEBAIGlubGluZSBUcmlTdGF0
ZSBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBp
ZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3Rh
dGUodjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxs
KCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwot
ICAgIAotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNT
dHJpbmcoKSkgewotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5n
KHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3Ry
aW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0
cmluZyB8fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAg
ICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsK
KyAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gdHJpU3RhdGUodjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50
MzJBc0ludDMyKCkpKTsKKworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmln
SW50KCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxz
VG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSkpOworCisgICAgaWYgKHYxLmlzQ2VsbCgpICYm
IHYyLmlzQ2VsbCgpKSB7CisgICAgICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2
Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCog
djFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAg
Y29uc3QgU3RyaW5nSW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1w
bCgpOworICAgICAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUo
V1RGOjplcXVhbCgqdjFTdHJpbmcsICp2MlN0cmluZykpOworICAgICAgICB9CisgICAgICAgIGlm
ICh2MS5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkgJiYgdjIuYXNDZWxsKCktPmlzSGVhcEJpZ0lu
dCgpKQorICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKEpTQmlnSW50OjplcXVhbHModjEuYXNI
ZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVy
biB0cmlTdGF0ZSh2MSA9PSB2Mik7CkBAIC0xMjA2LDYgKzEyOTksOCBAQCBpbmxpbmUgVHJpU3Rh
dGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFpl
cm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsg
Ly8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2Vs
bCgpLT5wdXJlVG9Cb29sZWFuKCk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAg
ICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NC4u
ZThjNjcwYjQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMTA4LDcgKzEwOCw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpw
dXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNC
aWdJbnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8
IGNlbGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAg
LTExOCw3ICsxMTgsNyBAQCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8
fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+
aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE1
MSw3ICsxNTEsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IHByZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJ
bnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcykt
PnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCwgcHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU0NlbGw6Omdl
dFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51
bWJlciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhp
cyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUp
OwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51
bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0
LCBudW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBkb3VibGUgSlNDZWxsOjp0
b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7CiB9CkBAIC0xODMsNyArMTgzLDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmpl
Y3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFp
c09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA2NjVkMDg4OWNmNC4uNGQyNzM5MjU1YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJv
dGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNT
dHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hl
YXBCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBp
c09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAyZGFmN2Jj
MGRkYi4uYzI4MzgzNjgzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTIwNSw5ICsyMDUsOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlu
bGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjpp
c0hlYXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsK
KyAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MSw3ICszNDEsNyBAQCBpbmxpbmUgYm9vbCBK
U0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewog
ICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYg
KGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJ
bnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xv
YmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAg
LTM1MCw3ICszNTAsNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkg
Y29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFs
c2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jv
b2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYgKGlzU3ltYm9s
KCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyMmMwMTIwNWMyZi4uZmUwMTJmOGM3YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTAzOCw2ICsxMDM4LDggQEAg
aW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkg
PCAwLjA7IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVy
biBhc0NlbGwoKS0+dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGlzQmlnSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuICEhYmlnSW50MzJBc0ludDMyKCk7CiAgICAgcmV0dXJuIGlzVHJ1
ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBmYWxzZS4K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggYjAyYjM0
N2Q2YTUuLjgzYmRkOWUxMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNFKFN0cmlu
Z1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkKKyAgICBD
QVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSkKICAg
ICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5cGUpCiAgICAgQ0FTRShOYXRpdmVFeGVjdXRhYmxlVHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggMTQ3OTkyNWQ2ZjUu
Ljc3YTAxMTI1NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAt
MjcsNyArMjcsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxUeXBlLAogICAg
IFN0cmluZ1R5cGUsCiAgICAgU3ltYm9sVHlwZSwKLSAgICBCaWdJbnRUeXBlLAorICAgIEhlYXBC
aWdJbnRUeXBlLAogCiAgICAgR2V0dGVyU2V0dGVyVHlwZSwKICAgICBDdXN0b21HZXR0ZXJTZXR0
ZXJUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4
IDNjZDcxM2Q4NGYzLi44OGUzMGYyMDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwg
NykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICBib29sIGlzU2V0T25GbGFnczIodW5z
aWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2Zs
YWdzMiAmIChmbGFnID4+IDgpOyB9CiAKLSAgICB1aW50OF90IG1fdHlwZTsKKyAgICBKU1R5cGUg
bV90eXBlOwogICAgIHVpbnQ4X3QgbV9mbGFnczsKICAgICB1aW50MTZfdCBtX2ZsYWdzMjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwCmluZGV4IGM0ZWJiZWM1MDM1Li4yN2EyMjFjMmVhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5jcHAKQEAgLTI2LDkgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgiCiAKLSNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggNDkwNWQ1YmFmMDcu
LjU3MjA0MGVkOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICBy
ZXR1cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJv
b2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNs
b3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpT
VmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0
aW9uIGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03MywyMSArNjgsMTcgQEAgTkVWRVJfSU5MSU5FIEpT
VmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9i
YWxPYmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhwMikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0K
LSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojph
ZGQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBk
b3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7Cisg
ICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJp
Z2h0KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxv
dz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0ICs9IHJpZ2h0OworICAgICAgICBpZiAo
VU5MSUtFTFkocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1
bHQudW5zYWZlR2V0KCkpOworICAgIH07CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBh
cml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjphZGQsIGRv
dWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGFkZGl0aW9uLiJfcykpOwogfQogCiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQpAQCAtMTI4LDcg
KzExOSw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpT
VHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5
cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKKyAgICBpZiAo
dHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEhlYXBC
aWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0
VHlwZSkgewogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaAppbmRleCA0YmJlMjNjMDcyNS4uYTM1MGY0ODIwZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMzksNiArMjM4LDM0IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlCiAgICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKIH0KIAorQUxXQVlTX0lO
TElORSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50VG9PdGhlclByaW1p
dGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdjEsIEpTVmFsdWUg
cHJpbVZhbHVlKQoreworICAgIEFTU0VSVChwcmltVmFsdWUuaXNQcmltaXRpdmUoKSk7CisgICAg
QVNTRVJUKCFwcmltVmFsdWUuaXNCaWdJbnQoKSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIEpTVmFsdWUgYmlnSW50VmFs
dWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmlt
VmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgICAg
IGlmICghYmlnSW50VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlz
b25SZXN1bHQ6OlVuZGVmaW5lZDsKKworICAgICAgICBpZiAoYmlnSW50VmFsdWUuaXNIZWFwQmln
SW50KCkpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmUodjEsIGJpZ0ludFZh
bHVlLmFzSGVhcEJpZ0ludCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
YmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1c2Ugc29t
ZXRoaW5nIGxlc3MgaGFja3ksIGUuZy4gc29tZSBraW5kIG9mIEpTQmlnSW50Ojpjb21wYXJlVG9J
bnQzMgorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0
YXRpY19jYXN0PGRvdWJsZT4oYmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJl
cihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29t
cGFyZVRvRG91YmxlKHYxLCBudW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBi
aWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25S
ZXN1bHQsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBp
ZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikK
QEAgLTI1NSw1MSArMjgyLDQ0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkp
Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFz
QmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlm
ICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAg
ICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJp
Z0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJp
bmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVl
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJp
Z0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRW
YWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpT
QmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBh
cmlzb25Nb2RlKTsKKyAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2Rl
OjpMZXNzVGhhbikKKyAgICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYy
LmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBBU1NFUlQoY29tcGFyaXNvbk1vZGUgPT0gSlNC
aWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpOworICAgICAgICByZXR1cm4g
djEuYmlnSW50MzJBc0ludDMyKCkgPD0gdjIuYmlnSW50MzJBc0ludDMyKCk7CisgICAgfQorCisg
ICAgSlNCaWdJbnQqIHYxSGVhcEJpZ0ludCA9IG51bGxwdHI7CisgICAgSlNCaWdJbnQqIHYySGVh
cEJpZ0ludCA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRo
IGZvciBhIGNvbXBhcmlzb24gYmV0d2VlbiBhIHNtYWxsIGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAg
ICBpZiAodjEuaXNCaWdJbnQzMigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgdjEuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UgaWYgKHYxLmlz
SGVhcEJpZ0ludCgpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsK
IAotICAgICAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKKyAgICBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVs
c2UgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSB2Mi5hc0hl
YXBCaWdJbnQoKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFwQmlnSW50KQorICAg
ICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBC
aWdJbnQsIHYySGVhcEJpZ0ludCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAgIGlmICh2MUhlYXBC
aWdJbnQpIHsKKyAgICAgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRv
T3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYyKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwgbnVt
YmVyVmFsdWUpLCBjb21wYXJpc29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJl
UmVzdWx0KGNvbXBhcmlzb25SZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAgCi0g
ICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkp
IHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAg
aWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBy
ZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShiaWdJbnRWYWx1ZSwg
YXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIH0KLSAgICAKLSAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpT
QmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHByaW1WYWx1ZSksIGFzQmlnSW50KHYyKSksIGNvbXBh
cmlzb25Nb2RlKTsKLSAgICAKLSAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJl
QmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHYySGVhcEJpZ0ludCwgdjEpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLQogICAgIC8vIEhlcmUgd2Ug
Y2hlY2sgaW52ZXJ0ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3Vi
bGUoYXNCaWdJbnQodjIpLCBudW1iZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09
IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJldHVybiBjb21w
YXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsK
LQogICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0OjpHcmVhdGVyVGhhbiB8fCBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJp
c29uUmVzdWx0OjpFcXVhbDsKKworCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCB0b1ByaW1pdGl2
ZU51bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2LCBKU1ZhbHVl
JiBwLCBkb3VibGUmIG4pCkBAIC0zNTcsNyArMzc3LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpz
TGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBp
ZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5n
MSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlz
QmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENv
bXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVz
c1RoYW4pKTsKIApAQCAtNDA3LDcgKzQyNyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NF
cShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAg
ICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3
YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8
IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJ
bnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFy
ZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhh
bk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzIsMjU2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0K
IAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50
T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+
CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRp
b24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9w
JiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnRO
dW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1Yihn
bG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICB9CisgICAgaWYgKGxlZnROdW1lcmlj
LmlzTnVtYmVyKCkgJiYgcmlnaHROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBq
c051bWJlcihkb3VibGVPcChsZWZ0TnVtZXJpYy5hc051bWJlcigpLCByaWdodE51bWVyaWMuYXNO
dW1iZXIoKSkpOwogCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0
aW9uLiJfcyk7CisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBp
ZiAocmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gYmlnSW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHRO
dW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIEpT
QmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRO
dW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0
SGVhcEJpZ0ludCkpOworICAgICAgICB9CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmpl
Y3QsIGxlZnRIZWFwQmlnSW50LCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgaWYgKHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50
KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCks
IHJpZ2h0SGVhcEJpZ0ludCkpOworICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0TnVtZXJpYy5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJp
Z0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVt
ZXJpYy5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6
OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmlj
KSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9y
TWVzc2FnZSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91
YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAg
ICAgcmV0dXJuIGxlZnQgLSByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtd
IChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworICAgICAgICBDaGVj
a2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1
bHQgLT0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgp
KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
KEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgfTsKKworICAg
IHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50
OjpzdWIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc011bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdo
dCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAg
IGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpT
VmFsdWUgeworICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQg
PSBsZWZ0OworICAgICAgICByZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFz
T3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAg
ICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2
MiwgSlNCaWdJbnQ6Om11bHRpcGx5LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUganNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJs
ZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8g
cmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBp
bnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIGxlZnQgLyByaWdodCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGlj
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpkaXZpZGUsIGRvdWJsZU9w
LCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRp
dmlzaW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JlbWFpbmRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91Ymxl
IHsKKyAgICAgICAgcmV0dXJuIGpzTW9kKGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8g
YmlnSW50MzJPcCA9IFtdIChpbnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAg
Ly8gRklYTUU6IGRvIHNvbWV0aGluZyBtb3JlIGNsZXZlciBoZXJlLgorICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6cmVtYWluZGVyLCBkb3VibGVPcCwgYmlnSW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIuIl9z
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9
IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uTWF0aFBvdyhsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0lu
dDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEV4
cG9uZW50aWF0aW9uIG9uIGludGVnZXJzIGlzIGJvdGggc29tZXdoYXQgc2xvdyBpbiB0aGUgYmVz
dCBjYXNlLCBhbmQgdmVyeSBsaWtlbHkgdG8gb3ZlcmZsb3cuCisgICAgICAgIC8vIFNvIGRvbid0
IGJvdGhlciB0cnlpbmcgdG8gYXZvaWQgYSBoZWFwIGFsbG9jYXRpb24gaW4gdGhhdCBjYXNlLgor
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRp
Y0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlLCBk
b3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBleHBvbmVudGlhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNJ
bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYg
KG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihvcGVy
YW5kTnVtZXJpYy5hc051bWJlcigpICsgMSk7CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmln
SW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpICsgMTsKKyAgICAgICAgLy8gRklY
TUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5n
IG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPiBJTlRf
TUFYKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1
ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19j
YXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAgfQorICAgIEFTU0VSVChvcGVyYW5kTnVtZXJp
Yy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0lu
dDo6aW5jKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30K
KworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0Jp
Z0ludCosIGRvdWJsZT4gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQq
LCBkb3VibGU+IHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworCisg
ICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJl
cihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisgICAgaWYgKG9wZXJhbmROdW1lcmlj
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAg
Ly8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9t
IGJlaW5nIG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUg
PCBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBu
ZXdWYWx1ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0
YXRpY19jYXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAgfQorICAgIEFTU0VSVChvcGVyYW5k
TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkp
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmpl
Y3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICB9CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkp
OwogCi0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkp
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3Qo
Z2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworICAgIGVsc2Ug
eworICAgICAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgfm9wZXJhbmROdW1lcmljLmJpZ0lu
dDMyQXNJbnQzMigpKTsKICAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRP
cGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0
aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBib29sIGJpZ0ludDMyTWF5
T3ZlcmZsb3cgPSBmYWxzZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0
TnVtZXJpYyA9IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMu
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5h
c0ludDMyKCksIHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkpKTsKIAotICAgIGRvdWJsZSBsZWZ0VmFs
dWUgPSAgV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFs
dWUgPSAgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJl
cihsZWZ0VmFsdWUgKiByaWdodFZhbHVlKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQz
MigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgIWJpZ0ludDMyTWF5T3ZlcmZsb3cp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVm
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSkpOworICAgIC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJ
bnQsIGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0
aGVzZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRo
ZSBzbWFsbCBiaWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisKKyAg
ICBpZiAoIShsZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgp
KSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVy
cm9yTWVzc2FnZSk7CisKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmln
SW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJ
bnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJp
Z0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwog
fQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKIHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJi
bGVGcmVlQ2VsbHMoKTsKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQz
Ml90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgPDwgKHJpZ2h0ICYg
MzEpOworICAgIH07CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBraW5kIG9mIGEga2x1ZGdlLCB3
ZSBjdXJyZW50bHkgZm9yY2UgaGVhcC1hbGxvY2F0aW9ucyBvZiBiaWcgaW50cyB3aGVuZXZlciB0
aGV5IGZsb3cgaW50byB0aGlzIG9wZXJhdGlvbi4KKyAgICBib29sIGJpZ0ludDMyTWF5T3ZlcmZs
b3cgPSB0cnVlOworCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYx
LCB2MiwgSlNCaWdJbnQ6OmxlZnRTaGlmdCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3MsIGJpZ0ludDMyTWF5
T3ZlcmZsb3cpOwogfQogCi0jZGVmaW5lIFNDUklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KDB4YmFkYmVlZjApCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSU2hpZnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRv
IGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsK
KyAgICAgICAgcmV0dXJuIGxlZnQgPj4gKHJpZ2h0ICYgMzEpOworICAgIH07CisKKyAgICByZXR1
cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6c2lnbmVk
UmlnaHRTaGlmdCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7Cit9CiAKLWlubGluZSBib29s
IGlzU2NyaWJibGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c0JpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSA9PSBKU1ZhbHVl
OjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKKyAgICBhdXRv
IGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsK
KyAgICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1
cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgImFu
ZCIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRo
ZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwg
djIsIEpTQmlnSW50OjpiaXR3aXNlQW5kLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7CiB9CiAKLWlu
bGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IHNpemUgLyBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpOyBpLS07KSB7Ci0gICAgICAgIC8vIFVzZSBhIDE2LWJ5dGUgYWxpZ25l
ZCB2YWx1ZSB0byBlbnN1cmUgdGhhdCBpdCBwYXNzZXMgdGhlIGNlbGwgY2hlY2suCi0gICAgICAg
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oYmFzZSlbaV0gPSBKU1ZhbHVlOjplbmNvZGUo
Yml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKLSAgICB9CisgICAgYXV0byBp
bnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Cisg
ICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJy
ZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJvciIg
YW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBK
U1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNCaXR3aXNlWG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0
IF4gcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBv
ZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJ4b3IiIGFuZCByZS1ib3ggdGhlbS4K
KyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZSwgYW5kIGp1c3Qg
cmVtZW1iZXIgdG8gZG8gYW4gb3Igd2l0aCAweDEyIGF0IHRoZSBlbmQgdG8gcmVzdG9yZSB0aGUg
dGFnCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNC
aWdJbnQ6OmJpdHdpc2VYb3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24uIl9zKTsKIH0KIAogQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdpdGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjQ3N2U2NWE3MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NyaWJibGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiT3B0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wg
c2NyaWJibGVGcmVlQ2VsbHMoKQoreworICAgIHJldHVybiBBU1NFUlRfRU5BQkxFRCB8fCBPcHRp
b25zOjpzY3JpYmJsZUZyZWVDZWxscygpOworfQorCisjZGVmaW5lIFNDUklCQkxFX1dPUkQgc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApCisKK2lubGluZSBib29sIGlzU2NyaWJibGVk
VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQp
KTsKK30KKworaW5saW5lIHZvaWQgc2NyaWJibGUodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IHNpemUgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOyBpLS07
KSB7CisgICAgICAgIC8vIFVzZSBhIDE2LWJ5dGUgYWxpZ25lZCB2YWx1ZSB0byBlbnN1cmUgdGhh
dCBpdCBwYXNzZXMgdGhlIGNlbGwgY2hlY2suCisgICAgICAgIHN0YXRpY19jYXN0PEVuY29kZWRK
U1ZhbHVlKj4oYmFzZSlbaV0gPSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+
KFNDUklCQkxFX1dPUkQpKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAxYTRmMjAyNDZhMi4uNjNiM2Ri
Mjk4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgcHJvdG90
eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAg
IGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUpCiAgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwogICAgIAotICAgIGlmIChz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEJpZ0ludFR5cGUpCisgICAgaWYgKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogCiAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391370</attachid>
            <date>2020-02-20 18:40:51 -0800</date>
            <delta_ts>2020-02-21 20:03:20 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>284648</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zYjU2Yzg1OGIy
OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCkBAIC0xNCw3ICsxNCw3IEBAIGFzc2Vy
dC5zYW1lVmFsdWUgPSBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiB9CiAK
IGZ1bmN0aW9uIHRlc3REaXYoeCwgeSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAvIHks
IHosIHggKyAiIC8gIiArIHkgKyAiID0gIiArIHopOworICAgIGFzc2VydC5zYW1lVmFsdWUoeCAv
IHksIHosIHggKyAiIC8gIiArIHkgKyAiID0gIiArICh4L3kpICsgIiBidXQgc2hvdWxkIGJlICIg
KyB6KTsKIH0KIAogdGVzdERpdigweEZFRENCQTk4NzY1NDMyMTBuLCAweEZFRENCQTk4NzY1NDMy
MTBuLCAweDFuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlm
dC13cmFwcGVkLXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdy
YXBwZWQtdmFsdWUuanMKaW5kZXggYzY5ZGJkYTMzZDMuLmY4MTJiMWNiYTQxIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwpAQCAt
Myw3ICszLDcgQEAKIGFzc2VydCA9IHsKICAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihtZXNzYWdlICsgIiBpbnB1dDogIiArIGlucHV0ICsgIiAhPSBleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWxvZ2ljYWwtbm90LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5q
cwppbmRleCBhZjI4YTcyYjFjMy4uZDAyZTU1MmY5YzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
b2dpY2FsLW5vdC5qcwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5CaWdJbnRFbmFibGVkCiAKLWZ1
bmN0aW9uIGFzc2VydChhLCBlKSB7CitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbikgewogICAgIGlm
IChhICE9PSBlKSB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBsb2dpY2FsIG5lZ2F0aW9uIGZvciAiICsgbik7CiAgICAgfQog
fQogCkBAIC0xMiw5ICsxMiw5IEBAIGZ1bmN0aW9uIGxvZ2ljYWxOb3QoYSkgewogbm9JbmxpbmUo
bG9naWNhbE5vdCk7CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICBh
c3NlcnQobG9naWNhbE5vdCgxMG4pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgtMW4pLCBmYWxzZSk7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFs
c2UsIDEwbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSwgMW4pOworICAgIGFz
c2VydChsb2dpY2FsTm90KDBuKSwgdHJ1ZSwgMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KC0x
biksIGZhbHNlLCAtMW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFm
NDJjMmFlOGZlLi42NWNlZjRlODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg2Niw2ICs4NjYsNyBAQAogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJh
dGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07
CiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjky
MDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3Vy
Y2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMzExMUI4QjIzOTcyNTY1MDBB
QTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3MjI1NTVG
NkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQgLyogQjNF
bGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyog
Q29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRo
c0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkzM0IyQTU0NzIyNjUzNDgxMDA1QTBGNzkgLyogQjNWYWx1ZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEZCMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1ZhbHVlSW5saW5lcy5oICovOyB9OwpAQCAtMzUwNiw2ICszNTA3LDcgQEAK
IAkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VD
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyog
V2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbVNpZ25hdHVyZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMx
MTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmli
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4
QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0
aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGlt
aXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6
ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2Np
YXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM5
NUM3MDQyMjU1NUY2QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBh
dGggPSBiMy9CM0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc1NDAsNiArNzU0Miw3IEBACiAJCQkJMEZFMDUwMjAxQUE5MDk1NjAwRDMzQjMzIC8q
IFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggKi8sCiAJCQkJMEZFMDUwMjExQUE5MDk1NjAwRDMzQjMz
IC8qIFNjb3BlT2Zmc2V0LmNwcCAqLywKIAkJCQkwRkUwNTAyMjFBQTkwOTU2MDBEMzNCMzMgLyog
U2NvcGVPZmZzZXQuaCAqLywKKwkJCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJi
bGUuaCAqLywKIAkJCQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJs
ZS5jcHAgKi8sCiAJCQkJMTQ3MzQxQ0QxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFi
bGUuaCAqLywKIAkJCQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hlci5o
ICovLApAQCAtODkwNCw2ICs4OTA3LDcgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3MDA4MEZGNzQg
LyogQWlyVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1
OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3
NjIwQjFEQjk1OUY5MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxv
Y2F0b3JGb3JNb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IGMxMDAyNDA0ZWY2Li4zNTc4NjgzYjU5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBA
IC00Njk4LDcgKzQ2OTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAg
ICAgICAgIC8vCi0gICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hl
cmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KKyAgICAgICAgLy8g
QW4gaW1tZWRpYXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBh
biBvcCBoYXMgYmVlbiBlbWl0dGVkLgogICAgICAgICAvLyBUaGUgd3JpdGVzIGFyZSB1bmNoZWNr
ZWQgc2luY2UgdGhlIG9wY29kZSBmb3JtYXR0ZXJzIGFib3ZlIHdpbGwgaGF2ZSBlbnN1cmVkIHNw
YWNlLgogCiAgICAgICAgIHZvaWQgaW1tZWRpYXRlOChpbnQgaW1tKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCBmZWE2Njc0NWI2Mi4u
NzU3NjExMjFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuY3BwCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5B
QkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsK
LSAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVy
aWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERv
dWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVh
cEJpZ0ludCgpICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTcgQEAgdm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG5vdEJpZ0ludDMyOwor
ICAgIGppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7
CisgICAgZW1pdFNldEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7
CisgICAgbm90QmlnSW50MzIubGluaygmaml0KTsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5h
cHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5h
cHBlbmQoaml0LmJyYW5jaElmTm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1p
dFNldEJpZ0ludChqaXQpOworICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhl
YXBCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQp
OwogICAgIGRvbmUuYXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZq
aXQpOwpAQCAtODgsMTkgKzk2LDM1IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0Cit7CisgICAgQml0ZmllbGRUeXBl
IG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRzICYg
bWFzaykgIT0gbWFzazsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9v
bCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBj
b25zdAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7
CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAg
ICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCisjaWYgVVNFKEpTVkFMVUU2
NCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit2b2lk
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBl
cnMmIGppdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAg
ICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsKKyAg
ICBpZiAoc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAgICAgZW1pdFVuY29uZGl0aW9u
YWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3Vs
ZEVtaXRTZXRCaWdJbnQzMigpKQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9i
c2VydmVkUmVzdWx0czo6QmlnSW50MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1l
IEJpdGZpZWxkVHlwZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNv
bmRpdGlvbmFsU2V0KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QK
IHsKQEAgLTE0OSw4ICsxNzMsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEFyaXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmlu
dChzZXBhcmF0b3IsICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAi
fCI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7
Ci0gICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlm
IChwcm9maWxlLmRpZE9ic2VydmVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmlu
dChzZXBhcmF0b3IsICJIZWFwQmlnSW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsK
KyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAg
ICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi5iMWVmOGY0
ZTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
aApAQCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9
IDEgPDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50
NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwg
NSwKKyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIg
ICAgICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bnVtQml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRz
TmVlZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBs
aWNpdCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRz
KQogICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2Jp
dHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmln
SW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYg
KE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJ
bnQgfCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBt
X2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBk
aWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9E
b3VibGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9i
aXRzICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7
IHJldHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50
KCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50
KCkgeyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29s
IGRpZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQor
ICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7
IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYg
SW50MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJl
dHVybiBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1
YmxpYzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4g
b2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wg
ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5k
aWRPYnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29u
c3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0
cygpLmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQz
MigpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigp
OyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9i
c2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRp
ZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCku
ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5l
Z1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUp
OyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZl
ZFJlc3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVy
aWMoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBz
ZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQor
ICAgIHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRz
OjpIZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0
KE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMy
T3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAg
ICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3Vs
dHM6OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAg
ICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2Vy
dmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0Rv
dWJsZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewot
ICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBp
ZiAodmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRS
ZXN1bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0
cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsK
QEAgLTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNl
dHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5l
Z1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmlj
IGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KEND
YWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lz
dGVycyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVl
UmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJz
KTsKIAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
IAotICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0Nh
bGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7Cisg
ICAgdm9pZCBlbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICB2b2lk
IGVtaXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgYm9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wg
c2hvdWxkRW1pdFNldEJpZ0ludDMyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVu
Y29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpAQCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9m
aWxlQmFzZSA9IHVpbnQxNl90OwogY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJp
dGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNO
ZWVkZWQ7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2
ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICog
OCwgIlNob3VsZCBmaXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4i
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNo
b3VsZCBmaXQgaW4gdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVk
VHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEg
PDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4gewogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsg
T2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNl
cnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVv
ZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3Qu
Iik7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkg
KiA4LCAiU2hvdWxkIGZpdCBpbiB0aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19h
c3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
KSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2Vy
dChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVz
ZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3BlY2lhbEZhc3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVC
aXRNYXNrKSksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFz
dFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
SW5saW5lcy5oCmluZGV4IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCA5MWVlZmEwMDk4ZS4uM2MwZWNmY2YyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVkZSAiSXNv
Q2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRNYXRoSUMu
aCIKLSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKaW5kZXggMzJmNTg4ZGJmZjYuLmY3ZWIy
YWFhYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZv
cm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgK
QEAgLTQ0LDEyICs0NCwxNCBAQCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRh
Rm9ybWF0Qm9vbGVhbiA9IDUsCiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3Jt
YXRTdG9yYWdlID0gNywKLSAgICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJ
bnQzMiA9IDgsCisgICAgRGF0YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIg
PSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91Ymxl
ID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxs
ID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVh
biA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3Jt
YXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAg
Ly8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5
IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44ODgyZGIwNjg1NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21M
YXp5T3BlcmFuZCgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1
ZVJlZ3MgcmVncykgY29uc3QKK3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1p
dFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcg
dGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAobV9r
aW5kKSB7CiAgICAgY2FzZSBOb25lOgpAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVnCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVh
ZHk6IHsKLSAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0
LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9m
aWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewot
ICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdz
LCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+
ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCBlOGI2NWVh
ZDQ2ZS4uNTMzOTJjNjI1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaApAQCAtODMsNyAr
ODMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShD
Q2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFyeSBy
ZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3RpbmcgQmln
SW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVS
ZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMp
IGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRl
eCAxMDUzYmE1MmI1NC4uMWI4YzY5MTNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMjM5LDExICsyMzksNiBAQCB2b2lk
IGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKICAgICAgICAgICAgIHN0ck91dC5wcmludCgiU3ltYm9sIik7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHZhbHVlICYgU3BlY0Jp
Z0ludCkKLSAgICAgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmICh2YWx1ZSA9
PSBTcGVjSW50MzJPbmx5KQpAQCAtMjc4LDcgKzI3MywyMSBAQCB2b2lkIGR1bXBTcGVjdWxhdGlv
bihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAo
KHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkKKyAgICAgICAgc3RyT3V0LnByaW50
KCJCaWdJbnQiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0JpZ0ludDMy
KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNIZWFw
QmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKHZhbHVl
ICYgU3BlY0RvdWJsZUltcHVyZU5hTikKICAgICAgICAgc3RyT3V0LnByaW50KCJEb3VibGVJbXB1
cmVOYU4iKTsKICAgICAKQEAgLTQzMSw3ICs0NDAsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxh
dGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgIHJl
dHVybiBTcGVjU3ltYm9sOwogICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNCaWdJbnQ6Omlu
Zm8oKSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgICAgIHJldHVybiBTcGVjSGVh
cEJpZ0ludDsKIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQog
ICAgICAgICByZXR1cm4gU3BlY0ZpbmFsT2JqZWN0OwpAQCAtNDk5LDggKzUwOCw4IEBAIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gU3ltYm9sVHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAg
aWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKLSAgICAgICAg
cmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gSGVhcEJpZ0ludFR5cGUpCisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBp
ZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBEZXJpdmVkQXJyYXlUeXBlKQogICAg
ICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwpAQCAtNTM2LDYgKzU0NSw4IEBAIFNw
ZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gU3BlY0FueUludEFzRG91YmxlOwogICAgICAgICByZXR1cm4gU3BlY05vbklu
dEFzRG91YmxlOwogICAgIH0KKyAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gU3BlY0JpZ0ludDMyOwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0
dXJuIHNwZWN1bGF0aW9uRnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwogICAgIGlmICh2YWx1ZS5p
c0Jvb2xlYW4oKSkKQEAgLTU5NSw4ICs2MDYsOCBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4g
c3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gU3BlY1N0
cmluZzsKICAgICBjYXNlIFN5bWJvbFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwot
ICAgIGNhc2UgQmlnSW50VHlwZToKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2Fz
ZSBIZWFwQmlnSW50VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGNh
c2UgQXJyYXlUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0FycmF5OwogICAgIGNhc2UgRGVyaXZl
ZEFycmF5VHlwZToKQEAgLTYzMiw2ICs2NDMsMTAgQEAgU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBl
ckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHkK
IAogICAgIGlmICh0eXBlICYgU3BlY1N0cmluZykKICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5n
OworCisgICAgaWYgKHR5cGUgJiBTcGVjQmlnSW50KQorICAgICAgICB0eXBlIHw9IFNwZWNCaWdJ
bnQ7CisKICAgICByZXR1cm4gdHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZC4uZmYyNjcxMzJiNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CkBAIC05OCw4ICs5OCwxMCBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNC
b29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8CiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVk
Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5p
dGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgot
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgot
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmll
dy4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludDMyICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHNtYWxs
IEJpZ0ludCB0aGF0IGlzIGlubGluZSB0aGUgSlNWYWx1ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjSGVhcEJpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50IHRoYXQgaXMgYWxsb2NhdGVkIG9uIHRo
ZSBoZWFwCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQmlnSW50MzIgfCBTcGVjSGVhcEJpZ0ludDsKK3N0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAg
ICAgICAgICAgICA9IDF1bGwgPDwgNDM7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcu
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1Zh
bHVlLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1
bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNT
Y29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNw
ZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1Nl
dE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJv
eHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFW
aWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9i
amVjdCBwcmVkaWN0aW9uLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2Vs
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcg
fCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEpTQ2VsbC4KQEAgLTE4NSw5ICsxODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3Bl
Y1N5bWJvbDsKIH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisK
K2lubGluZSBib29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQoreworICAgIHJldHVybiB2YWx1ZSA9IFNwZWNIZWFwQmlnSW50OworfQorCiBpbmxpbmUgYm9v
bCBpc0JpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVy
biB2YWx1ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNw
ZWNCaWdJbnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0FycmF5U3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGZhM2FiYmQxMWFkLi5l
NzM0YWYzNjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE2NjYsMTEgKzE2NjYsMTIgQEAgYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjpl
bWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgU3ltYm9sVHlwZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNl
QmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKKyAgICAgICAgICAgIC8qaWYgKE9wdGlv
bnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7CiAgICAgICAgICAgICAgICAg
cmV3aW5kKCk7CiAgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBk
c3QsIG9wLm1fdmFsdWUsIEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSovCisgICAgICAgICAgICAvLyBGSVhNRTog
YWRkIGEgY2FzZSBmb3IgQmlnSW50LiBJdCB3aWxsIHByb2JhYmx5IHJlcXVpcmUgYWRkaW5nIGEg
bmV3IE9wSXNCaWdJbnQgb3Bjb2RlLCBub3cgdGhhdCB3ZSBoYXZlIGJvdGggQmlnSW50MzIgYW5k
IEhlYXBCaWdJbnQgKHNvIE9wSXNDZWxsV2l0aFR5cGUgY2Fubm90IGJlIHVzZWQpLgogICAgICAg
ICAgICAgaWYgKHZhbHVlID09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7
CiAgICAgICAgICAgICAgICAgT3BJc09iamVjdE9yTnVsbDo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1f
dmFsdWUpOwpAQCAtMjg3Niw3ICsyODc3LDcgQEAgSlNWYWx1ZSBCeXRlY29kZUdlbmVyYXRvcjo6
YWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDgKICAg
ICByZXR1cm4gbV9iaWdJbnRNYXAuZW5zdXJlKEJpZ0ludE1hcEVudHJ5KGlkZW50aWZpZXIuaW1w
bCgpLCByYWRpeCwgc2lnbiksIFsmXSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKCkpOwogICAgICAgICBhdXRvIHBhcnNlSW50U2lnbiA9IHNpZ24gPyBKU0Jp
Z0ludDo6UGFyc2VJbnRTaWduOjpTaWduZWQgOiBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNp
Z25lZDsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50
KG51bGxwdHIsIHZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJy
b3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKKyAgICAgICAgSlNW
YWx1ZSBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSgpLCBpZGVu
dGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4
Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CiAgICAgICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggMjk4OTM3NDBhODUuLjBhMDAzYjhmNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMDg5LDcg
KzEwODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1c2luZyBOdW1iZXJNYXAgPSBI
YXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIElkZW50aWZpZXJTdHJpbmdN
YXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVw
SGFzaD47Ci0gICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0lu
dE1hcEVudHJ5LCBKU0JpZ0ludCo+OworICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFw
ID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvclNldCA9IEhhc2hTZXQ8UmVmPFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcj4+OwogICAgICAgICB1c2luZyBUZW1wbGF0ZURlc2NyaXB0b3JNYXAgPSBIYXNoTWFwPHVp
bnQ2NF90LCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciosIFdURjo6SW50SGFzaDx1aW50NjRf
dD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGU5NTgwMGFmZjI2Li5hMmI2ZTZlYjFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVjdG9y
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIK
ICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgpA
QCAtMjE0LDcgKzIxMyw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5
KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGJvb2wg
b3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVy
ZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAg
ICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAgIEFT
U0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBl
LnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOworICAg
ICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdU
eXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gSGVhcEJp
Z0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKQEAgLTUw
Miw3ICs1MDEsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBC
aWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50
MzJVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOwor
ICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkK
ICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNTMyLDcgKzUzNSwxMiBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRCaW5hcnlC
aXR3aXNlT3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdXNl
IG9mIGJpbmFyeVVzZUtpbmQgbWVhbnMgdGhhdCB3ZSBjYW5ub3Qgc3BlY2lhbGl6ZSB0byAoZm9y
IGV4YW1wbGUpIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQt
b3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVz
ZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBl
bHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC03MjIsMTEgKzczMCwxNCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogCiAgICAgY2FzZSBWYWx1ZVN1YjoKICAgICBjYXNlIFZhbHVlQWRkOiB7
Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0g
ICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBp
ZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0JpZ0ludCk7CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAg
ICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVl
ZCBTcGVjU3RyaW5nIGhlcmUgZm9yIFZhbHVlU3ViPyBJdCBzZWVtcyBsaWtlIHdlIG9ubHkgbmVl
ZCBpdCBmb3IgVmFsdWVBZGQuCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
U3RyaW5nIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CkBAIC04ODYsNiArODk3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVmFsdWVOZWdhdGU6IHsKKyAgICAgICAgLy8gRklY
TUU6IHdlIGNvdWxkIGRvIG11Y2ggc21hcnRlciB0aGluZ3MgZm9yIEJpZ0ludHMsIHNlZSBWYWx1
ZUFkZC9WYWx1ZVN1Yi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVG
b3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICBi
cmVhazsKQEAgLTk1OCw3ICs5NzAsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgdHlwZU9mRG91YmxlSW5jT3JEZWMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBl
KSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAg
IGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0lu
dFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CkBAIC05NzQsNyArOTkwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
SlNWYWx1ZSBjaGlsZFkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAg
ICBpZiAoY2hpbGRYICYmIGNoaWxkWSAmJiBjaGlsZFguaXNOdW1iZXIoKSAmJiBjaGlsZFkuaXNO
dW1iZXIoKSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIGBkaWRGb2xkQ2xvYmJl
cldvcmxkYCBoZXJlIGJlY2F1c2UgdGhpcyBwYXRoIGlzIG9ubHkgcG9zc2libGUKLSAgICAgICAg
ICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBC
aWdJbnRVc2UsIGNoaWxkcmVuIHdpbGwgYmUKKyAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNl
S2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBBbnlCaWdJbnRVc2Ugb3IgZnJpZW5k
cywgY2hpbGRyZW4gd2lsbCBiZQogICAgICAgICAgICAgLy8gY2xlYXJlZCBieSBgQWJzdHJhY3RJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUVmZmVjdHNgLgogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJX
b3JsZCgpOwogICAgICAgICAgICAgLy8gT3VyIGJveGluZyBzY2hlbWUgaGVyZSBtYXRjaGVzIHdo
YXQgd2UgZG8gaW4gb3BlcmF0aW9uVmFsdWVQb3cuCkBAIC05ODIsNyArOTk4LDkgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmln
SW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5
Miw3ICsxMDEwLDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2Fz
ZSBWYWx1ZU11bDogewotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRo
IFZhbHVlU3ViPworICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7
CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2Ug
fHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMDU2LDcgKzEwNzcsOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnREaXZPcChub2RlKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50
VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZv
ck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkBAIC0xOTM2LDEzICsxOTU5LDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2h5IGlz
IHRoaXMgY2hlY2sgaGVyZSwgYW5kIG5vdCBsYXRlciAoYWZ0ZXIgdGhlIHR5cGUtYmFzZWQgcmVw
bGFjZW1lbnRzIGJ5IGZhbHNlL3RydWUpLgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFVudHlwZWRVc2UpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNv
bmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCi0gICAgICAgICAgICBhdXRv
IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5n
KCk7CisgICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQgPSBb
XSAoSlNWYWx1ZSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1
ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7
CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdDZWxsQ29uc3Rh
bnQobGVmdCkgfHwgaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQocmlnaHQpKSB7CisgICAgICAgICAg
ICBpZiAoaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmlu
Z09yQmlnSW50Q2VsbENvbnN0YW50KHJpZ2h0KSkgewogICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgIHNldE5v
bkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xOTY0LDcgKzE5ODgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkgfHwKICAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKSB8fAogICAgICAgICAg
ICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpIHx8Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpIHx8CisgICAgICAg
ICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpIHx8IC8v
IEZJWE1FOiBJIGFtIGNvbmZ1c2VkLCBob3cgY2FuIHdlIGV2ZXIgaGF2ZSB0d28gZGlmZmVyZW50
IHVzZSBraW5kcywgd2hlbiB0aGV5IGFyZSBsaXR0ZXJhbGx5IHRoZSBzYW1lIGNoaWxkPwogICAg
ICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8
fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwg
Tm90U3RyaW5nVmFyVXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKSB8fApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiMjMxOGZlMDNhZS4uYWZlODY0YTNkZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0yNjAsNyArMjYw
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fz
ZSBWYWx1ZUJpdE5vdDoKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBC
aWdJbnRVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBk
ZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
Njg1LDcgKzY4NSw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50
MzJVc2U6CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVw
VXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToK
KyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToK
ICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6CkBAIC03MDcsNyArNzA5LDggQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICBjYXNlIFZhbHVlUG93OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6
CiAgICAgY2FzZSBWYWx1ZUJpdFJTaGlmdDoKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnRVc2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUt
YXJndW1lbnQgaXNCaW5hcnlVc2VLaW5kIHdvdWxkIHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXpp
bmcgKGZvciBleGFtcGxlKSBmb3IgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJ
bnQzMiByaWdodC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFu
eUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmlu
ZGV4IGI0M2Y3Y2Y1NGUxLi5hYzY4MzQzMzBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0OSw3ICsxNDks
NyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRo
aXMgY29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KICAgICAgICAgICAg
ICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFs
dWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1
ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAh
dmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICAg
ICAgICAgIH07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRD
ZWxsQ29uc3RhbnQoY2hpbGQxQ29uc3RhbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGMuLjdjYTRiMWI1YWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAi
REZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9k
ZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApp
bmRleCA3ZmZhMzhlNjZkMi4uYmQ4MjBhYzAyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjAxLDE0ICsyMDEsMjIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50MzIpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQo
KSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBw
ZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0
IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhlcndpc2UuCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7Ci0gICAgICAgICAgICAgICAgbm9k
ZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywg
U3BlY0JpZ0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVl
emUodm0oKS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2Rl
Q29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBT
cGVjSGVhcEJpZ0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5m
cmVlemUodm0oKS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKICAgICAgICAgICAgICAgICBu
b2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAg
Ly8gQmlnSW50cyBhcmUgY3VycmVudGx5IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVz
dWx0SlMgaXMgZ29vZCBoZXJlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgLy8gSGVhcEJpZ0ludHMgYXJlIGN1
cnJlbnRseSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVy
ZQorICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
QmlnSW50MzIoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZh
bHVlQWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlND
b25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5z
ZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZh
dWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGVub3VnaCBmb3Igbm93LgorICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBjb25zaWRlciBoYXZpbmcgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uIGZv
ciBzbWFsbCBCaWdJbnRzIGluc3RlYWQuCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNCw5ICsyNDIs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgp
OwogICAgICAgICAgICAgRWRnZSYgY2hpbGQyID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNo
aWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgp
KSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QW55QmlnSW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtMjY3LDggKzI4MSwxNiBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRBbmQ6IHsKICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVI
ZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
eworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxMiw3ICszMzQsMTIg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5v
ZGVNdXN0R2VuZXJhdGUpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihvcGVy
YW5kRWRnZSk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQz
MlVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRFZGdl
Lm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5kRWRn
ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3Bl
Y3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NTcsOSArNDg0LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxk
Mi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoY2hpbGQxLm5vZGUoKSwgY2hpbGQy
Lm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihjaGlsZDEp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMik7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoY2hpbGQxLm5v
ZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihj
aGlsZDIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJ
bnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJp
Z0ludFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50
eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTU0NSw4ICs1NzgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAogICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGxl
ZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5v
ZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtNTg4LDggKzYyOSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGxlZnRDaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QW55QmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QW55QmlnSW50VXNlPihyaWdodENoaWxkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAg
ICAgICAgIH0KQEAgLTY1Nyw4ICs2OTgsMTYgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFZh
bHVlUG93OiB7CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC0yODY2LDcgKzI5MTUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVC
aWdJbnQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjkzOSw3ICsyOTkzLDEyIEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICAvLyBJZiB0aGUgcHJlZGljdGlvbiBvZiB0aGUgY2hpbGQgaXMg
QmlnSW50LCB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgVG9OdW1lcmljIHRvIElkZW50aXR5LCBzaW5j
ZSBpdCBjYW4gb25seSByZXR1cm4gYSBCaWdJbnQgd2hlbiBmZWQgYSBCaWdJbnQuCiAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQxOSwxMyArMzQ3OCwxNSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToK
ICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAg
ICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgaWYgKGFsd2F5
c1VuYm94U2ltcGxlUHJpbWl0aXZlcygpCiAgICAgICAgICAgICAgICAgfHwgaXNDZWxsU3BlY3Vs
YXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRh
YmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiB3aGF0IHNob3VsZCB3ZSBk
byBhYm91dCBCaWdJbnQzMlVzZSBhbmQgQW55QmlnSW50VXNlID8KKyAgICAgICAgLy8gQWxzbyBt
b3JlIGJyb2FkbHksIHdoYXQgYWJvdXQgYWxsIG9mIHRoZSBVc2VLaW5kcyB3aGljaCBhcmUgbm90
IGxpc3RlZCBpbiB0aGF0IHN3aXRjaD8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0zOTM1LDkgKzM5OTYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
eworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
SGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgbm9kZS0+c2V0
T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXgg
YjkyODgxMGUxMDEuLmY4MTcwZDkyYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlICJERkdOdWxsQWJzdHJhY3RTdGF0ZS5oIgotI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlmLi5kZjIzNDRl
NWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTI1NDIsNiArMjU0Miwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24oKSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
OworICAgIH0KKyAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7
CisgICAgfQorICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBpc0JpZ0ludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CkBAIC0yNzQx
LDcgKzI3NTEsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKTsKICAgICB9
Ci0gICAgCisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihOb2RlKiBv
cDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoTm9kZSogb3AxLCBOb2Rl
KiBvcDIpCisgICAgeworICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVIZWFwQmln
SW50KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCk7CisgICAgfQorCiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoTm9kZSogb3AxLCBOb2RlKiBv
cDIpCiAgICAgewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVj
dCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDgzNGI2ODcwMTEzLi5lMWQ4NWU5ZGViNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4
MywxNCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYg
dm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2Fu
J3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1i
ZXJUYWdSZWdpc3RlciwKICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byBy
ZXN0b3JlIGl0LgogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgbm90Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRj
aCByZWdpc3RlciwgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogZmluZCBhIGxlc3MgZ3Jvc3Mgd2F5IG9mIGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVs
YXlpbmcgdGhlc2Ugb3BlcmF0aW9ucyB1bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUg
cmVnaXN0ZXJzIGFyb3VuZD8KKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1
ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1i
ZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhp
dC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBE
b05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Lm1v
dmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0
KQogICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCkBAIC0z
OTgsNyArNDAyLDcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywgc2NyYXRjaFBheWxvYWQpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBzY3JhdGNoLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAg
ICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOwpAQCAtNDA3LDEwICs0MTEs
MTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZt
LCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIGppdC5wdXNoVG9T
YXZlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7
CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pz
VmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRS
ZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIHZhbHVlLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBqaXQu
cG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5y
ZWdzKCkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhp
dC5tX2pzVmFsdWVTb3VyY2UucmVncygpLCBJbnZhbGlkR1BSUmVnKTsKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZkYjljOWQ3NjcuLjI4OTNhMWRjZmViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTg2LDcgKzg2LDYg
QEAKICNpbmNsdWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMSw1NiArMjIwLDYg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
QmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRpb24mJiBu
dW1iZXJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihudW1iZXJP
cChXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51
bWVyaWMpKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVu
YW1lIEludDMyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
Yml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50
T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwot
ICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJp
Z2h0TnVtZXJpYyA9IG9wMi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFz
ZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQzMk9wKFdURjo6
Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmlj
KSkpKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFyc2VJbnRS
ZXN1bHQoZG91YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0PGludD4o
aW5wdXQpOwpAQCAtNDcwLDcxICs0MTksMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAg
ICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0
KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOwotICAgIH07
Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5j
b2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmlj
ID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6
OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9
IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIodmFsdWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0luYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
SlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9w
ZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRv
dWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0RlYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ap
KSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRO
b3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpOwogCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b0JpZ0ludE9y
SW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NDMs
MTUgKzQ1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJp
dHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewot
ICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lz
ZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0lu
dE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJp
dHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAg
LTU2MCwxNSArNDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBi
aWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVm
dCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAg
YXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJf
dCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC01NzcsMTUgKzQ3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0
byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
bGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1
cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRP
cDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpCkBAIC01OTQsMTUgKzQ4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0g
ICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qgcmln
aHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAweDFmKTsK
LSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02MTEsMTUgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQq
IHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJf
dCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQg
Pj4gKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0
IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSU2hp
ZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0VVJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjU3
LDE1ICs1MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
RGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51
bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAg
ICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24gb3Bl
cmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NzQsMTUgKzUzOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNC
aWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIG9wZXJh
dGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJl
ck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0
aW9uIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNQb3coZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSkpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEFi
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
KQpAQCAtMTQ3OSw3ICsxMzM1LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3QsIGlucHV0KSk7
CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CkBAIC0xNDkxLDcgKzEzNDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwog
ICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTUwMiw3ICsxMzU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5v
dEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4g
SlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0KIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE1MTQsNyArMTM3MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpT
QmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OwogfQogICAgIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE1MjYsNyArMTM4Miw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MzgsNyArMTM5NCw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NTAsNyArMTQw
Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBv
bmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE1NjIsNyArMTQxOCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAg
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRM
U2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc0LDcgKzE0MzAsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0
KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0x
NTg2LDcgKzE0NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0Jp
Z0ludDo6YWRkKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xNTk4LDcgKzE0NTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3Qs
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9y
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MTAsNyArMTQ2
Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3
aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE2MjgsNyArMTQ4NCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAotICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9i
amVjdCwgb3AxLCBvcDIpOworICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxz
KGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgYXJnMSwgRW5jb2RlZEpTVmFsdWUgYXJnMikKQEAgLTE2NzMsMTAgKzE1MjksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1ZhbHVlOjpkZWNv
ZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoV1RGOjpnZXQ8SlNCaWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKaW5kZXggMGYxYzg3NTRjZDYuLjdjMTJmMGMyMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTgxLDE4ICsxODEsMTggQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFJlZ0V4
cE9iamVjdCosIEoKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoSlNH
bG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
Owogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRO
b3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOwotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0T3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChWTSosIFN0cnVjdHVyZSosIEpTU2NvcGUq
LCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMoVk0qLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBs
ZW5ndGgsIHVpbnQzMl90IG1pbkNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXgg
Mjg4ODU4YjM4YzEuLjQzYmZjNmNkNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTMz
LDYgKzUzMywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNIZWFwQmlnSW50KTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIyZDE0Li40Y2U3NDU0YzU4NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTc5LDcg
Kzc5LDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgY2FzZSBT
dHJpbmdPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBC
aWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5n
T2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAg
ICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKQEAgLTY3NSwxMCArNjc3LDEwIEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBWYWx1ZURpdjoKICAgICBjYXNlIFZhbHVlTW9kOgogICAg
IGNhc2UgVmFsdWVQb3c6Ci0gICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRV
c2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAg
ICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2U7CisgICAgICAg
IHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZTsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA2NDJiMTYzNTZmOS4uZGI1N2VhODQ5
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0xNzQ0LDYgKzE3NDQsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogICAgICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGNvbXBp
bGVQZWVwSG9sZUludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludDMyVXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwpKQorICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQmlnSW50
MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKICAgICAgICAgZWxzZSBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQ
ZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKQEAgLTM1NzAsMjQgKzM1NzIsNDMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYgY2hpbGQx
ID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcGVyYW5kKHRo
aXMsIGNoaWxkMSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBtX2pp
dC5tb3ZlKG9wZXJhbmQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94Qmln
SW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubm90MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAv
LyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2Vu
ZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAgICAgICAg
R1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJp
Z0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGNo
aWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5k
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBv
cGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAgSlNWYWx1
ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUgQW55Qmln
SW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQuanNWYWx1
ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNjE1LDExICszNjM2LDEzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUpCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBz
bmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
Qml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlC
aWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgIEFT
U0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAgaWYgKGlz
S25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdo
dENoaWxkLm5vZGUoKSkpIHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsK
QEAgLTM2NjcsMTEgKzM2OTAsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRC
aXRPcChOb2RlKiBub2RlKQogICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0
KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5p
c0NvbnN0KCkpIHsKLSAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CisgICAg
ICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOyAvLyBSZXF1aXJlZCBmb3Ig
QW55QmlnSW50VXNlCiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAg
ICB9CiAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0LmVt
cGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmln
aHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIHJpZ2h0Q2hpbGQpOyAvLyBSZXF1aXJlZCBmb3IgQW55QmlnSW50VXNlCiAgICAgICAgIHJp
Z2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzcwNyw1MiArMzcz
Miw4NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXR3aXNlT3AoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsK
LSAgICAgICAgc3dpdGNoIChvcCkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKGxlZnRD
aGlsZC51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhp
cywgbGVmdENoaWxkKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIG1faml0Lm1v
dmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBzd2l0Y2gob3ApIHsKICAgICAg
ICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0
QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBl
ZEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6
IGFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAg
ICAgICAgICAgIG1faml0LmFuZDY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGVtaXRVbnR5
cGVkQml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6
IG9yIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAg
ICAgICAgICAgbV9qaXQub3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgorICAgICAgICAgICAgLy8gWG9yIHJl
bW92ZXMgdGhlIHRhZywgc28gd2UgbXVzdCBhZGQgaXQgYmFjayBhZnRlciBkb2luZyB0aGUgb3Bl
cmF0aW9uCisgICAgICAgICAgICBtX2ppdC54b3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgICAgIG1faml0Lm9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFn
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAKLSAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIg
PSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgIC8v
IEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50CisjZW5k
aWYKKworICAgIGlmKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdo
dENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBs
ZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3By
KCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVj
dWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJp
dEFuZDoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRp
b25WYWx1ZUJpdEFuZD4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0
WG9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhv
ckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dE9yQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55Qmln
SW50Qml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwor
ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQpAQCAtMzc5Miw3ICszODQ5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
VW50eXBlZE9yQW55QmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9K
SVRPcGVyYXRpb25fR0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBW
YWx1ZUJpdFJTaGlmdAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0
aW9uVmFsdWVCaXRVUlNoaWZ0OwpAQCAtMzgwMiw2ICszODU5LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBFZGdlJiBs
ZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+
Y2hpbGQyKCk7CiAKKyAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
IHx8IGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IHJpZ2h0Q2hpbGQudXNl
S2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQW55QmlnSW50
VXNlKTsKKwogICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlz
S25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQo
dGhpcywgcmlnaHRDaGlsZCk7CkBAIC0zODk2LDI3ICszOTU1LDI3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENo
aWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAg
ICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0
KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdExTaGlmdEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGxl
ZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKLSAgICBlbWl0VW50eXBlZEJpdE9wPEpJVExlZnRTaGlmdEdlbmVyYXRv
ciwgb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQ+KG5vZGUpOworICAgIGVtaXRVbnR5cGVkT3JBbnlC
aWdJbnRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0
Pihub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0
KE5vZGUqIG5vZGUpCkBAIC0zOTI0LDI3ICszOTgzLDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9
IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
IAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgeworICAgIC8vIEZJ
WE1FOiBzdXBwb3J0IEJpZ0ludDMyCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQ
Uik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKLSAgICBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKKyAgICBlbWl0VW50
eXBlZE9yQW55QmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU2hpZnRPcChOb2RlKiBub2RlKQpAQCAtMzk1NSw3ICs0MDE0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9kZSkKIAogICAgIGlm
IChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCA9PSBCaXRVUlNo
aWZ0KTsKLSAgICAgICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgICAg
IGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTM5ODUsMTkgKzQwNDQsNTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAg
ICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEg
cmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1F
OiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmlj
aWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsK
KworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5n
cHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisK
KyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93
IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNo
QWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3Vs
dEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZl
IFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3cs
IEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkg
ZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihy
ZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBC
aWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hp
bGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkQmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTQwMDUsOCArNDA5NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBpZiAoaXNLbm93bk5vdE51
bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9k
ZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0g
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGls
ZCk7IC8vIFRoZXNlIHR3byBzcGVjdWxhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBBbnlCaWdJbnRV
c2UKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVl
UmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNDA0Myw0NCArNDEzNSw5MyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICBF
ZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0g
bm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlw
ZWRVc2UpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQ
UlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7Ci0j
ZWxzZQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJv
b2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVy
YW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8g
d2UgcmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0
L3JpZ2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3Ro
ZXIgdHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIo
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOwor
ICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQu
dW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5
IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3cs
IHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICAvLyBGSVhNRTogc2hv
dWxkIHdlIHBhc3MgYW4gaW5mb3JtYXRpdmUgU3BlY3VsYXRpb25SZWNvdmVyeT8KKyAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgSSBkbyBhbnl0aGluZyB0byBmcmVlIHRlbXBHUFI/Cisg
ICAgICAgIG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhN
RTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyL0hlYXBCaWdJbnQKICNlbmRpZgogCi0g
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRT
dWJJQyhhcml0aFByb2ZpbGUpOwotICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9w
ZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7Ci0gICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVI
ZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TdWJIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKLSAgICAgICAgY29tcGlsZU1hdGhJQyhub2Rl
LCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmln
SW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklY
TUU6IHdoeSBkbyBjb21waWxlVmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90
TnVtYmVyIGJ1dCBub3QgVmFsdWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBBbnlCaWdJbnRVc2UpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZUFueUJpZ0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlC
aWdJbnQocmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5q
c1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1Zh
bHVlUmVncygpOwogCi0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmln
aHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJv
b2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJl
ZyA9IGZhbHNlOworI2Vsc2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Cisg
ICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCiAKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN1YkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOworICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKKyAgICBhdXRvIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwogCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKLSAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgY29tcGlsZU1hdGhJ
Qyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJl
cGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICByZXR1cm47CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5j
dGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDY1MCw2ICs0NzkxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkKIHsKICAgICAvLyBJ
biBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUgc2hvdWxkIGhhdmUgYmVlbiB0cmFuc2Zvcm1lZCBp
bnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1cFBoYXNlCisgICAgLy8gRklYTUU6IEkgZG9uJ3Qg
dGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHBhdGggZm9y
IEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTQ2NjUsNiArNDgwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRl
YyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUo
Tm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoLCBhdCBsZWFzdCBm
b3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBhbHNvIGZvciBIZWFwQmlnSW50IGhlcmUuCiAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2Rl
QmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgIFVu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlB
cml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDg0NSwyMCAr
NDk4OCw1MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9k
ZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdo
dENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgY29kZSBiZXR3ZWVuIGNvbXBpbGVWYWx1ZUFk
ZCwgY29tcGlsZVZhbHVlU3ViIGFuZCBjb21waWxlVmFsdWVNdWwgZm9yIEJpZ0ludDMyIGlzIG5l
YXJseSBpZGVudGljYWwsIHNvIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBkdXBsaWNhdGlvbi4KKyAg
ICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJh
IHJlZ2lzdGVyLCBvciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhN
RTogYWxzbywgbG9vayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZp
Y2llbnQgZ2VuZXJhdGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7
CisKKyAgICAgICAgbV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBt
X2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQu
Z3ByKCksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOwor
CisgICAgICAgIC8vIEZJWE1FOiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxv
dyBjaGVjaworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5j
aE11bDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1
bHRHUFIpOworCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2
ZSBTcGVjdWxhdGlvblJlY292ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJ
IGRvIGFueXRoaW5nIHRvIGZyZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIo
cmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQg
QmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRV
c2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsK
ICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmln
aHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxk
LCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BS
KTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAg
ICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNTA0Nywy
OSArNTIyMiwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Cisg
ICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBn
byB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9y
IERpdiBnZXRzLgorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNl
KSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdo
dEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgp
KSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRD
aGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwg
cmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVn
cygpOwogCkBAIC01MDgzLDYgKzUyNjIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VS
VChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0aW9uYWw8SlNW
YWx1ZU9wZXJhbmQ+IGxlZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0Owog
CkBAIC01MzMyLDI5ICs1NTEzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZU1vZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwog
ICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5i
aW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3Qg
cGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgs
IGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisgICAgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BS
ID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTW9kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJp
Z0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVu
dHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3Ax
KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hp
bGQpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgcmln
aHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
bGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1
ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIG9wMlJl
Z3MgPSBvcDIuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNTg5Niwy
MCArNjA4MSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEgZmFzdCBwYXRo
IGZvciBCaWdJbnQzMiBmb3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxvdyBwcmV0dHkg
b2Z0ZW4uCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAg
ICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BS
ID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTYwNjgsNiArNjI1
NCwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNz
ZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgIH0KICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7Cisg
ICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUy
UmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwOTQsNiArNjI4NCw4IEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24gY29uCiAgICAgICAgICAgICBjb21waWxlU3RyaW5nSWRlbnRDb21wYXJlKG5vZGUs
IGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgLy8g
RklYTUU6IGFkZCBIZWFwQmlnSW50IGNhc2UgaGVyZSAoYW5kIGFkZCBhIGNvcnJlc3BvbmRpbmcg
dGVzdCwgd2Ugc2hvdWxkIHJlYWxseSBoYXZlIGNhdWdodCB0aGlzKQogCiAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
Qm9vbGVhblVzZSkpIHsKQEAgLTYxNzMsNyArNjM2NSwyMiBAQCBib29sIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKLSNpZiBVU0UoSlNWQUxVRTY0KSAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWdu
ZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAg
aWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSog
YnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAg
ICBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9
IGJyYW5jaEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hO
b2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGls
ZUJpZ0ludDMyQ29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1
MlJlcFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0
UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5U
X01BWCkgewpAQCAtNjIyMCw4ICs2NDI3LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgIGNv
bXBpbGVCaWdJbnRFcXVhbGl0eShub2RlKTsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkobm9k
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC02MzE1LDcgKzY1MjIs
OCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZVN0cmluZ1RvVW50eXBlZEVxdWFsaXR5KG5vZGUsIG5vZGUtPmNoaWxkMigp
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisK
KyAgICAvLyBGSVhNRTogZGVhbCB3aXRoIEFueUJpZ0ludFVzZS9BbnlCaWdJbnRVc2UsIGFuZCBz
aW1pbGFyIHZhcmlhbnRzIChlLmcuIEJpZ0ludDMyVXNlIC8gSGVhcEJpZ0ludFVzZSwgSGVhcEJp
Z0ludFVzZSAvIFVudHlwZWRVc2UsIGV0Yy4uKQogICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSk7CiAgICAgcmV0dXJuIG5vblNwZWN1bGF0aXZlU3Ry
aWN0RXEobm9kZSk7CiB9CkBAIC0xMDU3OCwxOCArMTA3ODYsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlU3ltYm9sKEVkZ2UgZWRnZSkKICAgICBzcGVjdWxhdGVTeW1ib2woZWRn
ZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJp
Z0ludChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQogewotICAgIERGR19UWVBFX0NI
RUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVj
ayB8IFNwZWNCaWdJbnQsIG1faml0LmJyYW5jaElmTm90QmlnSW50KGNlbGwpKTsKKyAgICBERkdf
VFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgflNwZWND
ZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGNl
bGwpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRn
ZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlKQog
ewogICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0g
ICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU5vdENlbGwoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzKQpAQCAtMTA3NTks
OCArMTA5NjcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZGdl
IGVkZ2UpCiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdl
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgQmlnSW50MzJVc2U6
CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2UpOworICAg
ICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdChlZGdlKTsKQEAgLTEzMTA3
LDE3ICsxMzMyMywxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKE5v
ZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1
ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAg
ICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3Qg
cGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0eXBlT2YsIGFuZCBmb3IgYm9vbGlmeSBv
ciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBmaWxlKS4KIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RD
ZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVncyk7Ci0gICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChhcmd1bWVudFJlZ3MucGF5bG9hZEdQUigp
KSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJbnQgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoYXJndW1lbnRS
ZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSGVhcEJpZ0lu
dCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCBzY3JhdGNo
KSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7CisgICAgaXNIZWFwQmlnSW50Lmxpbmso
Jm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVn
cyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTc2LDkgKzE0MTkzLDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2RlLCBOb2Rl
KiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKIHsK
LSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lv
biBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAvLyBGSVhNRTogW0VTTmV4dF1b
QmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBi
aWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CkBAIC0xMzk5MCw4ICsxNDIwNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJ
bnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQudXNlKCk7CiAgICAgcmlnaHQudXNlKCk7
CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOwotICAgIHNw
ZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOworICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOworICAgIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi43ZDM3MmE4NjNkZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMzQ2LDYgKzM0Niw3IEBA
IHB1YmxpYzoKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlKTsKICAgICBHUFJS
ZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCb29s
ZWFuKEVkZ2UpOworICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CiAgICAg
R2VuZXJhdGVkT3BlcmFuZFR5cGUgY2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQzMihOb2RlKik7
CiAKICAgICB2b2lkIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4pOwpAQCAtMTE0OCw2ICsxMTQ5LDkgQEAgcHVibGljOgogICAgIGJvb2wgY29t
cGlsZVBlZXBIb2xlQnJhbmNoKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19KSVRPcGVyYXRpb25fR0pK
KTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFu
Y2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21w
aWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGls
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBj
b21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklU
Q29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVC
cmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRp
b24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUq
IGJyYW5jaE5vZGUpOwpAQCAtMTE3Miw3ICsxMTc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZU1pc2NTdHJpY3RFcShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0
eShOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBj
b21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2Ug
dW50eXBlZEVkZ2UpOwogCkBAIC0xMjIyLDYgKzEyMjYsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fz
c2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2
b2lkIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5v
ZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21w
aWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7
CiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBT
bmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAg
ICB2b2lkIGVtaXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFu
eUJpZ0ludEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVu
dHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJp
Z0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRP
cChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVNoaWZ0T3AoTm9kZSopOwpAQCAtMTU3OCw2ICsxNTg1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc3BlY3VsYXRlQW55SW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlSW50MzIo
RWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwQW55SW50KEVk
Z2UpOworICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVBbnlCaWdJbnQoRWRnZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIHNw
ZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7
CkBAIC0xNjI4LDggKzE2MzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdP
clN0cmluZ09iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJS
ZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSk7Ci0gICAgdm9pZCBzcGVj
dWxhdGVCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50
KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7
CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRl
Tm90Q2VsbChFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0
ZW1wKTsKQEAgLTI2MDcsNiArMjYxNiw1NCBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9y
SW52YWxpZDsKIH07CiAKK2NsYXNzIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1
bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6
IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52
YWxpZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmls
bGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisKKyAgICB+U3BlY3VsYXRl
QmlnSW50MzJPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAh
PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7
CisgICAgfQorCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2VkZ2U7CisgICAgfQorCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
bV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UoKSk7Cisg
ICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisKKyAgICB2b2lkIHVzZSgpCisg
ICAgeworICAgICAgICBtX2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9n
cHJPckludmFsaWQ7Cit9OworCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5E
KGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkg
ZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2Up
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBl
Y2ZjOTAzOTBiNi4uMDUzMjBkMjdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTIyMyw2ICsxMjIzLDExIEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQog
ICAgIH0KIH0KIAorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIo
RWRnZSBlZGdlKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9iamVj
dENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3Ax
KHRoaXMsIG9iamVjdENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDM3MjhiODUzZmFiLi5jYzY4ODUzZmI2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0xMDAzLDYgKzEwMDMsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQzMkludGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIGNhc2Ug
RGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBE
YXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBo
KCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVm
YXVsdDoKQEAgLTEyMzQsNiArMTIzNiw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQz
MjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQg
ZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTEsNiArMTMxNSw4
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdl
KQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6
CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0Qmln
SW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNI
KG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAg
ICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTksNiArMTMyNSwxMDcgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgfQogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYg
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisK
KyAgICAoU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAg
ICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2Vs
bCh2YWx1ZVJlZ3MpOworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgdmFsdWVSZWdzLmdw
cigpKTsKKyAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICAoU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpLmdwcigpOworfQor
CitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2Up
Cit7CisgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7Cisg
ICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKKworICAgIG1faW50ZXJwcmV0
ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQmlnSW50MzIpOworICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkp
IHsKKyAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7Cisg
ICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0
ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgp
KSB7CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogeworICAgICAgICBHUFJSZWcgZ3ByID0gYWxs
b2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAg
ICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+YXNKU1ZhbHVlKCk7CisgICAgICAgICAgICBtX2dw
cnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOworICAg
ICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1ZhbHVlKSksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCpt
X3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgICAgICByZXR1cm4g
Z3ByOworICAgICAgICB9CisKKyAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICBpbmZvLmZp
bGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlMpOworICAgICAgICBpZiAodHlw
ZSAmIH5TcGVjQmlnSW50MzIpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIoZ3ByKSk7Cisg
ICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5j
aElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpKTsKKyAgICAgICAgICAg
IHVubG9jayh0ZW1wR1BSKTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCpt
X3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgIHJldHVybiBncHI7
CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9y
bWF0SlNCaWdJbnQzMjogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAg
ICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAg
ICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMy
KSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdw
ciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgR1BSUmVn
IHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25v
d25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7
CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0
YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNh
c2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAg
IGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgorICAg
IGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAgIGNh
c2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgp
LCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CisKKyAgICBkZWZhdWx0OgorICAg
ICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkNvcnJ1cHQgZGF0
YSBmb3JtYXQiKTsKKyAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0RXF1YWxpdHkoRWRnZSBvYmpl
Y3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU1LDYgKzE2NjIsNTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVy
YW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgewor
ICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBi
aXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3Ax
LmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCBy
ZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9q
aXQudW5ib3hCaWdJbnQzMih0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNv
bmRpdGlvbiwgcmVzdWx0LmdwcigpLCB0ZW1wLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0K
KworICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhl
cmUuCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJl
c3VsdC5ncHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5v
ZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBK
SVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3Ro
ZXIgY29uZGl0aW9ucyB3b3VsZCByZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQg
Y29ycmVjdCByZXN1bHRzIG9uIG5lZ2F0aXZlIG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlv
biA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5j
aERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hO
b2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBp
bnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFr
ZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5j
aCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4
dEJsb2NrKCkpIHsKKyAgICAgICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25k
aXRpb24pOworICAgICAgICBCYXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4g
PSBub3RUYWtlbjsKKyAgICAgICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFu
Y2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChu
b3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIo
Tm9kZSogbm9kZSkKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBiM2U0MWQ4ZDdlMS4uZGZhN2M2M2VkNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFs
dWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAgICAgICAgY2FzZSBWYWx1ZUJp
dFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWF5YmUgc3VwcG9ydCB0aGUg
Y2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJpZ0ludCBhbmQgdGhlIG90aGVy
IGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50
MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKICAgICAg
ICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAg
ICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDhlZjczYjZmMmU4Li5j
OTVjODUzMWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCkBA
IC0xNDUsOCArMTQ1LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBV
c2VLaW5kIHVzZUtpbmQpCiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIG91dC5wcmludCgi
U3ltYm9sIik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAg
b3V0LnByaW50KCJCaWdJbnQiKTsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgb3V0
LnByaW50KCJBbnlCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSGVhcEJpZ0lu
dFVzZToKKyAgICAgICAgb3V0LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBvdXQucHJpbnQoIkJpZ0ludDMyIik7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgb3V0LnBy
aW50KCJTdHJpbmdPYmplY3QiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgK
aW5kZXggOWMxM2M1YmNkMzUuLmQ3YmI0NjlkY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuaApAQCAtNjYsNyArNjYsOSBAQCBlbnVtIFVzZUtpbmQgewogICAgIEtub3du
U3RyaW5nVXNlLAogICAgIEtub3duUHJpbWl0aXZlVXNlLCAvLyBUaGlzIGJpemFycmUgdHlwZSBh
cmlzZXMgZm9yIG9wX3N0cmNhdCwgd2hpY2ggaGFzIGEgYnl0ZWNvZGUgZ3VhcmFudGVlIHRoYXQg
aXQgd2lsbCBvbmx5IHNlZSBwcmltaXRpdmVzIChpLmUuIG5vdCBvYmplY3RzKS4KICAgICBTeW1i
b2xVc2UsCi0gICAgQmlnSW50VXNlLAorICAgIEFueUJpZ0ludFVzZSwKKyAgICBIZWFwQmlnSW50
VXNlLAorICAgIEJpZ0ludDMyVXNlLAogICAgIERhdGVPYmplY3RVc2UsCiAgICAgTWFwT2JqZWN0
VXNlLAogICAgIFNldE9iamVjdFVzZSwKQEAgLTE1Miw4ICsxNTQsMTIgQEAgaW5saW5lIFNwZWN1
bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1c2VLaW5kKQogICAgICAgICByZXR1cm4g
U3BlY0hlYXBUb3AgJiB+U3BlY09iamVjdDsKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRVc2U6CisgICAgY2FzZSBBbnlCaWdJ
bnRVc2U6CiAgICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFVz
ZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OworICAgIGNhc2UgQmlnSW50MzJVc2U6
CisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgY2FzZSBQcm9taXNlT2JqZWN0VXNl
OgogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7CiAgICAgY2FzZSBEYXRlT2JqZWN0
VXNlOgpAQCAtMjEyLDI0ICsyMTgsNiBAQCBpbmxpbmUgYm9vbCBtYXlIYXZlVHlwZUNoZWNrKFVz
ZUtpbmQga2luZCkKICAgICByZXR1cm4gIXNob3VsZE5vdEhhdmVUeXBlQ2hlY2soa2luZCk7CiB9
CiAKLWlubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2gg
KGtpbmQpIHsKLSAgICBjYXNlIEludDMyVXNlOgotICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAg
ICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgY2FzZSBJbnQ1
MlJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFJlYWxV
c2U6Ci0gICAgY2FzZSBBbnlJbnRVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KIGlubGluZSBib29sIGlzRG91YmxlKFVzZUtpbmQga2luZCkKIHsKICAgICBz
d2l0Y2ggKGtpbmQpIHsKQEAgLTI2MSw3ICsyNDksNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNl
S2luZCBraW5kKQogICAgIGNhc2UgU3RyaW5nVXNlOgogICAgIGNhc2UgS25vd25TdHJpbmdVc2U6
CiAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgY2FzZSBCaWdJbnRVc2U6CisgICAgY2FzZSBIZWFw
QmlnSW50VXNlOgogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgIGNhc2UgU3RyaW5nT3JT
dHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjNjlkMWQzOGMxLi5hMjA0
YmI2YWZlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtNDgyLDcgKzQ4Miw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBo
JiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAg
ICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50MzJV
c2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1hcE9iamVjdFVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZiYy4uNGExYjA1OTM2
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAK
QEAgLTU4LDYgKzU4LDcgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxpemVDb25zdGFudHMo
QjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAgICBpbnRQdHJUaHJl
ZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMpOwog
ICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3Vi
bGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyAgICBiaWdJbnQzMlplcm8gPSBibG9jay0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEpTVmFsdWU6OkJpZ0ludDMy
VGFnKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKaW5kZXggYzFkNmQ1YTU1MWQuLmI1MzI1YWYzZTdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2
LDYgKzU2LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBpbnRQdHJUaHJlZSB7IG51bGxwdHIgfTsK
ICAgICBMVmFsdWUgaW50UHRyRWlnaHQgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGRvdWJsZVpl
cm8geyBudWxscHRyIH07CisgICAgTFZhbHVlIGJpZ0ludDMyWmVybyB7IG51bGxwdHIgfTsKICAg
ICAKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAgY29uc3QgdW5zaWdu
ZWQgcHJvZktpbmQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggNGQzNDI3YmM4MmUuLjA1ZTRkYWE5YjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTM1LDExICsyMTM1
LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2Rl
LT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0lu
dDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50
MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVj
dWxhdGVBZGQodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1Nw
ZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4p
OworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIx
NzMsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hC
aWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJp
Z0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQu
c3BlY3VsYXRlU3ViKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxl
c3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3Jp
Z2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVz
dWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkhlYXBC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjE3NywxMSArMjIxMSwyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5j
aGlsZDIoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hl
ZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRS
aWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiBy
ZXN1bHQgPSBtX291dC5zcGVjdWxhdGVNdWwodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7Cisg
ICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwg
bnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBi
b3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
TXVsQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTI1NTQsMTEgKzI2MDUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZURpdigp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBhZGQg
YSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkRpdkJp
Z0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25EaXZIZWFw
QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTI2MzMsMTEgKzI2ODUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1v
ZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAo
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6
IGFkZCBhIEJpZ0ludDMyIGZhc3QgcGF0aCBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI4MDks
MTEgKzI4NjIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVBvdygpCiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgZXhwb25lbnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSBh
ZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgZXhw
b25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
blBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwor
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRp
b25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBleHBvbmVu
dCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTMyMDAsOSArMzI1NCwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlQml0Tm90KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsK
LSAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25CaXROb3RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG9wZXJhbmQpOwor
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0Jp
Z0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRPcGVy
YW5kID0gdW5ib3hCaWdJbnQzMihvcGVyYW5kKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSBtX291dC5iaXROb3QodW5ib3hlZE9wZXJhbmQpOworICAgICAgICAgICAgTFZhbHVlIGJveGVk
UmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94
ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAg
ICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewor
ICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVy
YW5kKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzIyMCwxMSArMzI4NiwyOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y29tcGlsZVZhbHVlQml0QW5kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMiht
X25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5i
b3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJv
eEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJp
dEFuZCh1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKworICAgICAgICAgICAgTFZhbHVlIGJv
eGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
Ym94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0MCwxMSArMzMyMywyOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUg
dW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVu
Ym94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbV9vdXQuYml0T3IodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisKKyAgICAg
ICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjYwLDExICszMzYwLDI4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZh
bHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1
ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcih1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKwor
ICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjgwLDExICszMzk3
LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBw
YXRoIGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNl
dEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzMw
OSwxMSArMzQyNywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0TFNoaWZ0
KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGNv
bnNpZGVyIGFkZGluZyBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZS4KKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTcyMDUsNiArNzMyNCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5t
X3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCkpIHsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdE51bWJlciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOwpAQCAtNzIxNCwxMCArNzMzNiwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAvLyBub3ROdW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlw
ZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qmln
SW50MzIpKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRp
ZgogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSksIHVuc3VyZShpc0NlbGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8g
V2UgaGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVy
aWMgc3RpbGwgZXhpc3RzLgpAQCAtODIxNyw3ICs4MzQzLDE5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9vdXQuZXF1YWwobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgCisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8g
dW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBib3RoIHNpZGVzCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOworICAgICAg
ICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisjZW5kaWYKKwogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBV
c2UpKSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CkBAIC04MzAw
LDExICs4NDM4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2Up
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lh
bGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBz
dHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg5NQotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgICAgICBMQmFz
aWNCbG9jayBub3RUcml2aWFsbHlFcXVhbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE0
MDY0LDkgKzE0MjAyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0QmluYXJ5U25pcHBldChK
X0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQobV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBTbmlw
cGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5y
ZXN1bHRUeXBlKCkpOwpAQCAtMTQ3NDUsNyArMTQ4ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93
IHN0cnVjdHVyZToKICAgICAgICAgICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgICAg
ICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAg
ICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50
KQogICAgICAgICAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAg
ICAgICAgIC8vICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGlu
Z3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtMTQ3NTUsNiArMTQ4OTUsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkK
ICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgICAgICAg
ICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAgICAgICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAgICAgICAgIC8vICAgICByZXN1bHQg
PSAodmFsdWUgIT0gQmlnSW50MzJUYWcpCiAgICAgICAgICAgICAvLyB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgICAgICAgICAgLy8gfQpA
QCAtMTQ3NjMsMTIgKzE0OTA1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RTdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIHN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgYmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RTdHJpbmdPckJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdERvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnQzMkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50
MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrPiByZXN1bHRzOwpAQCAtMTQ3ODIsMjAgKzE0OTI4
LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KG5vdFN0cmluZ0Nhc2UsIHN0cmluZ0Nhc2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWND
ZWxsIC0gU3BlY1N0cmluZykpLAotICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwg
dW5zdXJlKG5vdFN0cmluZ09yQmlnSW50Q2FzZSkpOworICAgICAgICAgICAgICAgIGlzSGVhcEJp
Z0ludCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwK
KyAgICAgICAgICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdOb3JI
ZWFwQmlnSW50Q2FzZSkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdDYXNl
LCBiaWdJbnRDYXNlKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvciht
X291dC5ub3RFcXVhbCh2YWx1ZSwgd2Vha1BvaW50ZXIoanNFbXB0eVN0cmluZyhtX2dyYXBoLm1f
dm0pKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgbm90U3RyaW5nT3JCaWdJbnRDYXNlKTsK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIG5vdFN0cmluZ05vckhlYXBC
aWdJbnRDYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBub25aZXJvQmlnSW50ID0gbV9vdXQubm90
WmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBt
X2hlYXBzLkpTQmlnSW50X2xlbmd0aCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9v
dXQuYW5jaG9yKG5vblplcm9CaWdJbnQpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3Ry
aW5nT3JCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOwogICAgICAgICAgICAg
TFZhbHVlIGlzVHJ1dGh5T2JqZWN0OwogICAgICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICAgICAgaXNUcnV0aHlP
YmplY3QgPSBtX291dC5ib29sZWFuVHJ1ZTsKQEAgLTE0ODM4LDggKzE0OTg0LDIyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodmFsdWUpLCBtX291dC5jb25zdERvdWJs
ZSgwKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoZG91YmxlSXNU
cnV0aHkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3VibGVDYXNlLCBi
aWdJbnQzMkNhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAg
ICBpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgflNwZWNDZWxsKSwKKyAgICAg
ICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMyQ2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNhc2Up
KTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50MzJDYXNlLCBub3RCaWdJbnQz
MkNhc2UpOworICAgICAgICAgICAgTFZhbHVlIGJpZ0ludDMyTm90WmVybyA9IG1fb3V0Lm5vdEVx
dWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYmlnSW50MzJOb3RaZXJvKSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgY29udGludWF0aW9uKTsKKyNl
bHNlCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3VibGVDYXNlLCBjb250aW51YXRp
b24pOworI2VuZGlmCiAgICAgICAgICAgICBMVmFsdWUgbWlzY0lzVHJ1dGh5ID0gbV9vdXQuZXF1
YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0
LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAgLTE1NDQ0LDEzICsxNTYwNCwxNSBAQCBwcml2YXRl
OgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3Ry
aW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAg
fSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVh
cGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8g
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbAogICAgICAgICAv
LyAgICAgfQogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIG51bWJlcikgewogICAgICAgICAvLyAg
ICAgcmV0dXJuIG51bWJlcgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7Cisg
ICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVs
bCkgewogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYg
KGlzIGJvb2xlYW4pIHsKQEAgLTE1NDc4LDYgKzE1NjQwLDkgQEAgcHJpdmF0ZToKICAgICAgICAg
TEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFz
aWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyNlbmRpZgogICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGJvb2xlYW5DYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgTEJhc2ljQmxvY2sgdW5kZWZpbmVkQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBA
IC0xNTUzMCw3ICsxNTY5NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bm90U3RyaW5nQ2FzZSwgYmlnSW50Q2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNw
ZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUs
IHByb3ZlblR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcp
KSwKICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKHN5bWJvbENhc2UpKTsK
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBzeW1ib2xDYXNlKTsKQEAgLTE1
NTQ2LDggKzE1NzExLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhudW1iZXJDYXNlLCBub3ROdW1iZXJDYXNlKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZU
eXBlOjpOdW1iZXIpOwotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIG1f
b3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIH5TcGVjQ2Vs
bCksIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgbm90TnVsbENhc2UpOworI2Vsc2UK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwgbm90TnVsbENhc2UpOworI2Vu
ZGlmCiAgICAgICAgIExWYWx1ZSBpc051bGw7CiAgICAgICAgIGlmIChwcm92ZW5UeXBlKGNoaWxk
KSAmIFNwZWNPdGhlcikKICAgICAgICAgICAgIGlzTnVsbCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBt
X291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwpAQCAtMTYyMzgsMTUgKzE2NDEw
LDMxIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZh
bHVlIGxvd0JpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SGVhcEJpZ0ludChFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
biB8fCBlZGdlLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKTsKIAogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbG93Q2VsbChlZGdlLCBtb2RlKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVk
Z2UsIHJlc3VsdCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyAgICBMVmFsdWUgbG93Qmln
SW50MzIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1v
ZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlKTsKKworICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9qc1ZhbHVlVmFs
dWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBGVExf
VFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUocmVzdWx0KSwgZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05v
dEJpZ0ludDMyKHJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAg
ICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CisgICAgICAgIHJldHVybiBtX291dC5iaWdJ
bnQzMlplcm87CisgICAgfQorCiAgICAgTFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRnZSBlZGdl
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBAIC0xNjQz
Miw3ICsxNjYyMCw0MCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmFk
ZChtX291dC56ZXJvRXh0KHZhbHVlLCBJbnQ2NCksIG1fbnVtYmVyVGFnKTsKICAgICB9Ci0gICAg
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1Zh
bHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAg
ICAgICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OkJpZ0ludDMyTWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpC
aWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNW
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAg
aWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFs
KAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1
ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0
LmxTaHIoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVl
IGJveEJpZ0ludDMyKExWYWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LmJpdE9yKAorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1
ZSwgQjM6OkludDY0KSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNO
b3RBbnlCaWdJbnQoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5iaXRBbmQoaXNOb3RCaWdJbnQzMihq
c1ZhbHVlLCB0eXBlKSwgaXNOb3RIZWFwQmlnSW50KGpzVmFsdWUpKTsKKyAgICB9CisjZW5kaWYK
KwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0g
aXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTY3NDQs
OCArMTY5NjUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAg
ICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICAgICAg
c3BlY3VsYXRlQmlnSW50MzIoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBbnlCaWdJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQoZWRnZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6Cisg
ICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTm90U3RyaW5nVmFyVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlTm90
U3RyaW5nVmFyKGVkZ2UpOwpAQCAtMTY5MzEsMTggKzE3MTYwLDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3ltYm9sU3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgfQogCi0gICAgTFZhbHVlIGlzTm90QmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludChMVmFsdWUg
Y2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAg
aWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNC
aWdJbnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAm
IFNwZWNDZWxsLCB+U3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
ICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMy
KGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIodm0oKS5iaWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFs
dWUgaXNCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRv
cCkKKyAgICBMVmFsdWUgaXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlz
UHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJ
bnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVx
dWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwKQEAgLTE3NDAwLDE1ICsxNzYyOSwyOCBAQCBwcml2YXRlOgogICAgICAgICBzcGVj
dWxhdGVTeW1ib2woZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVj
dWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhl
YXBCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7Ci0gICAgICAgIEZUTF9UWVBF
X0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RCaWdJbnQo
Y2VsbCkpOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2Us
IFNwZWNIZWFwQmlnSW50LCBpc05vdEhlYXBCaWdJbnQoY2VsbCkpOworICAgIH0KKyAgICB2b2lk
IHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1
bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIHNwZWN1
bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChl
ZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShl
ZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhq
c1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIodmFs
dWUpKTsKICAgICB9CisgICAgCisgICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQoRWRnZSBlZGdl
KQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUo
dmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50LCBpc05vdEFueUJpZ0ludCh2YWx1ZSkpOworICAgIH0K
KyNlbmRpZgogCiAgICAgdm9pZCBzcGVjdWxhdGVOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgTFZh
bHVlIGNlbGwpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCmluZGV4IDIxNzE1ZDNkZDIyLi45YmJhNzQzOWJjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgy
LDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhp
dElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlKQotICAgICAgICAgICAgZXhp
dC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFs
dWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+
bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6
cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxs
IG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXplIGFuIG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXgg
Y2UwMzliYTc3ZTkuLjlmNmFiNTExNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIFN0cmlu
ZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFw
c2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAgICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwog
ICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gMDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwt
PmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNCaWdJbnQoKSkgeworICAgICAgICBpZiAoIW5v
ZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7
CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZs
YWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGViYjQ0Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUg
IlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3Bw
CmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0NjlmZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJi
bGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVj
dG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhl
YXBPYmplY3RJZCwKICAgICB9CiAKICAgICAvLyBCaWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2Vs
bC0+aXNCaWdJbnQoKSkgewotICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0
U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwgMTApOworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJ
bnQoKSkgeworICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZt
LCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggYmYyOTg0YTEyODkuLmRmMTAzMjQzNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1bnNp
Z25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
YXJndW1lbnRzLCB1aW50MzJfdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6
CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAgIGNhc2UgQmlnSW50VHlwZToKKyAgICBjYXNlIEhl
YXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwg
IGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZWI4MDgyZTliN2IuLjQ3
ZjExYTNiZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252
ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIHsKICAg
ICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToKICAg
ICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2
YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVu
Z3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9y
IG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNjk4LDYgKzY5OCw4IEBAIHZvaWQgQXNzZW1i
bHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAg
ICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8vICAgICByZXN1bHQgPSAh
IXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIp
IHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0g
ZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAg
LTcwNiw3ICs3MDgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRv
Qm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogCiAgICAgYXV0byBub3RD
ZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNo
SWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNo
SWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJy
YW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzI5
LDcgKzczMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29s
ZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgY29tcGFyZVB0cihpbnZl
cnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIHJlc3VsdCwgcmVzdWx0
KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0aGlzKTsK
KyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICBsb2FkMzIoQWRkcmVzcyh2YWx1ZS5w
YXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0KTsKICAgICBj
b21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIo
MCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKQEAgLTc1Myw2ICs3NTUsMTMg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZt
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVlLmdwcigpLCByZXN1bHQpOworICAgIG1vdmUodmFs
dWUuZ3ByKCksIHJlc3VsdCk7CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3Vs
dCk7CisgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1
c3RlZEltbTMyKDApLCByZXN1bHQpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBp
c05vdEJpZ0ludDMyLmxpbmsodGhpcyk7CiAgICAgY29tcGFyZTY0KGludmVydCA/IE5vdEVxdWFs
IDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwg
cmVzdWx0KTsKICNlbHNlCiAgICAgbW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBUcnVz
dGVkSW1tMzIoMCksIHJlc3VsdCk7CkBAIC03NjcsNyArNzc2LDcgQEAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWwKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93
IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAo
dmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVl
IGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0
ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8g
ZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNzc3LDYgKzc4Niw4
IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZh
bHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJ
bnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8v
ICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFs
dWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZh
bHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1
ZQogICAgIC8vIH0KQEAgLTc4Niw3ICs3OTcsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0
IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAog
CiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlz
U3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlz
QmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlz
SGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAg
ICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NF
UlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRH
UFJSZWcpOwpAQCAtODE3LDcgKzgyOCw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNz
ZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAg
dHJ1dGh5LmFwcGVuZChicmFuY2hQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUu
cGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKGpzRW1wdHlTdHJpbmcodm0pKSkpOwogICAgIGRv
bmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMpOworICAgIGlzSGVh
cEJpZ0ludC5saW5rKHRoaXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVy
dCA/IFplcm8gOiBOb25aZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6
Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIApAQCAtODQz
LDYgKzg1NCwxMyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6
YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogCiAgICAgbm90RG91YmxlLmxp
bmsodGhpcyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBi
cmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOwor
ICAgIG1vdmUodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMTYpLCBzY3JhdGNoKTsKKyAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQg
PyBaZXJvIDogTm9uWmVybywgc2NyYXRjaCkpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisK
KyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2g2
NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOwogI2Vsc2UKICAgICBhdXRvIG5vdEJv
b2xlYW4gPSBicmFuY2hJZk5vdEJvb2xlYW4odmFsdWUsIEludmFsaWRHUFJSZWcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNzI5ZjU4NDYzN2Qu
Ljc1MDE3NjRjNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTkyOSw3ICs5MjksMzcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlmCiAgICAgfQotICAg
IAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIoR1BSUmVn
IGdwciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdp
c3RlcnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVyKGdwciwg
bW9kZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3RO
dW1iZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7CisgICAgICAg
IHJldHVybiBiaWdJbnQzMjsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzJLbm93
bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFT
U0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQ
Uik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRl
bXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90
QmlnSW50MzJLbm93bk5vdE51bWJlcihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikK
KyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIo
cmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQz
Mktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUoZ3ByLCB0
ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFn
KSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgdGVtcEdQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xl
YXIgdGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAg
YnJhbmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1cm4gYnJh
bmNoOCgKQEAgLTk1MSwxMyArOTgxLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJ
WE1FOiByZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVp
ciBpbnB1dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2Vs
bEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAg
SnVtcCBicmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZO
b3RUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChH
UFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUp
OyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4g
YnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJ
ZkJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJp
Z0ludFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikg
eyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVt
cCBicmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlw
ZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJp
Z0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhl
YXBCaWdJbnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAg
IEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTMzOCw2ICsx
MzY5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAg
ICB9CisgICAgCisgICAgdm9pZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAg
ICAgICB1cnNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAg
ICB9CisKKyAgICB2b2lkIGJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBs
c2hpZnQ2NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAgICBv
cjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQogI2Vu
ZGlmCiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTcxMCw3ICsxNzUyLDcgQEAgcHVibGlj
OgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3Ry
aW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAg
fSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVh
cGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8g
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcyMSw2
ICsxNzYzLDggQEAgcHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAg
ICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29s
ZWFuCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAg
IHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVy
biB1bmRlZmluZWQKICAgICAgICAgLy8gfQpAQCAtMTc1MiwxMCArMTc5NiwxMCBAQCBwdWJsaWM6
CiAKICAgICAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJ
bnQgPSBicmFuY2hJZk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmln
SW50ID0gYnJhbmNoSWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5
cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMp
OworICAgICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlw
ZW9mVHlwZTo6U3ltYm9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmso
dGhpcyk7CkBAIC0xNzcxLDYgKzE4MTUsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJv
b2xlYW4gPSBicmFuY2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0
b3IoVHlwZW9mVHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmso
dGhpcyk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1wIG5vdEJpZ0ludDMyID0g
YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgICAg
ICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RCaWdJbnQz
Mi5saW5rKHRoaXMpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5
cGU6OlVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKaW5kZXggN2YzNThjMTIwM2IuLjhkNDY5NzhiOTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTU3MSw5ICs1NzEsMTAgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIENvbXBpbGVPcFN0cmkKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJl
Z1QwLCBzcmMyLCByZWdUMSk7CiAgICAgCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNl
bGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25l
IGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgLy8gRklYTUU6
IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJp
Z0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJp
bmdzCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyAg
ICBhbmQ2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdU
MikpOwogICAgIAogICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0
IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CkBA
IC02MTQsOSArNjE1LDEwIEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCi0gICAgLy8gSnVt
cCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvLyBKdW1w
IHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmln
SW50cykuCisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6
IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cg
cGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIG9y
NjQocmVnVDEsIHJlZ1QyKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwogCiAgICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBp
cyBhIGRvdWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUs
IGFuZCB0aGVuIHRlc3QKQEAgLTY4Niw3ICs2ODgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19u
dW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9
IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJ
bnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDAp
KTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5k
ZXggY2Q2NjdiMmU1ODcuLmRjMWUyYzg1YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0g
YnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0lu
dChyZWdUMCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkp
OwogICAgIEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGUz
NjI2NzMyNWM3Li4yM2RiZDg5OTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0yNzg1LDggKzI3ODUsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIFByZWZlck51bWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50
KHByaW1WYWx1ZSkpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBp
ZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAg
ICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJp
Z0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CkBAIC0yODA4LDEwICsyODE1LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
SlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVl
LmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1
ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgdmFsdWUpOworICAgIH0KKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7Cisg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZh
bHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0
KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAg
IH0KIApAQCAtMjg0Myw4ICsyODU5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAg
SlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgCi0g
ICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisgICAgaWYg
KHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1W
YWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsK
KyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAt
dmFsdWUpOworICAgICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkg
eworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHBy
aW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJl
c3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAg
ICAgfQpAQCAtMjg3NSw5ICsyOTAxLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAg
ICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAK
LSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKwor
ICAgIC8vIEZJWE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50
IGJ1dCBub3QgdGhlIHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgewor
ICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAg
ICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVl
KTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFz
SGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCmluZGV4IGI2ZWU5OWUzNjNhLi5mZjEwNWY0Nzc5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTg1MSw3ICs4NTEsNyBAQCBtYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQyLCB0MCkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAg
ICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKICAgICAg
ICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0MCwgbnVtYmVy
VGFnLCAuc2xvdwpAQCAtODg1LDcgKzg4NSw3IEBAIG1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9w
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQzLCB0MSkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3Jx
IHQxLCB0MgorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFz
aywgLnNsb3cKICAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwogICAgICAgICBi
dHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwpAQCAtOTE2LDI0ICs5MTYsMjYgQEAgc3RyaWN0RXF1
YWxpdHlKdW1wT3Aoam5zdHJpY3RlcSwgT3BKbnN0cmljdGVxLAogbWFjcm8gcHJlT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQogICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyB1cGRhdGVBcml0aFByb2Zp
bGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICAgICAg
ICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsg
VW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAgZW5kCiAKLSAgICAgICAgZ2V0
KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MwotICAgICAgICBt
ZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4gdDEsIHNyY0RzdCBpbiB0Mwot
ICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAgICAgaW50ZWdlck9wZXJhdGlv
bih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAgICAgIHN0b3JlcSB0
MywgW2NmciwgdDAsIDhdCi0gICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJ
bnQpCi0gICAgICAgIGRpc3BhdGNoKCkKKyAgICBnZXQobV9zcmNEc3QsIHQwKQorICAgIGxvYWRx
IFtjZnIsIHQwLCA4XSwgdDEKKyAgICBtZXRhZGF0YSh0MiwgdDMpCisgICAgIyBzcmNEc3QgaW4g
dDEsIG1ldGFkYXRhIGluIHQyCisgICAgIyBGSVhNRTogdGhlIG5leHQgbGluZSBqdW1wcyB0byB0
aGUgc2xvdyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNh
dGVkIHBhdGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICBicWIgdDEsIG51bWJlclRhZywgLnNsb3cK
KyAgICBpbnRlZ2VyT3BlcmF0aW9uKHQxLCAuc2xvdykKKyAgICBvcnEgbnVtYmVyVGFnLCB0MQor
ICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRo
UHJvZmlsZUludCkKKyAgICBkaXNwYXRjaCgpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAg
ZW5kKQorCiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJl
ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggODRmZTM5OWNkOGMuLjU4MGFkMGRj
YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApA
QCAtODMsNiArODMsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtl
QmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICBpZiAocmFkaXgg
PT0gMTApCiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmlnSW50ID0gSlNCaWdJbnQ6OnBh
cnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6
OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246
OlVuc2lnbmVkKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworCiAgICAgLy8gRklY
TUU6IFdlIGFyZSBhbGxvY2F0aW5nIGEgSlNCaWdJbnQganVzdCB0byBiZSBhYmxlIHRvIHVzZQog
ICAgIC8vIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcgd2hlbiByYWRpeCBpcyBub3QgMTAuCiAgICAg
Ly8gVGhpcyBjcmVhdGVzIHNvbWUgR0MgcHJlc3N1cmUsIGJ1dCBzaW5jZSB0aGVzZSBpZGVudGlm
aWVycwpAQCAtOTAsMTEgKzk0LDEzIEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVu
YTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgLy8g
aXQgd29udCBiZSBtdWNoIHByb2JsZW1hdGljLCBnaXZlbiBzdWNoIGNhc2VzIGFyZSB2ZXJ5IHJh
cmUuCiAgICAgLy8gVGhlcmUgaXMgYSBsb3Qgb2Ygb3B0aW1pemF0aW9ucyB3ZSBjYW4gYXBwbHkg
aGVyZSB3aGVuIG5lY2Vzc2FyeS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3NjI3CisgICAgSlNCaWdJbnQqIGhlYXBCaWdJbnQ7CisgICAgaWYgKGJp
Z0ludC5pc0JpZ0ludDMyKCkpCisgICAgICAgIGhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICBBU1NFUlQoYmlnSW50Lmlz
SGVhcEJpZ0ludCgpKTsKKyAgICBoZWFwQmlnSW50ID0gYmlnSW50LmFzSGVhcEJpZ0ludCgpOwog
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3Ry
aW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywg
SlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7Ci0gICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYmlnSW50LCAxMCkpKTsKKyAgICBtX2lk
ZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5
R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50LCAxMCkpKTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVy
cy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQyLDcg
KzQyLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmZmM2Y3OTcyMGIu
LjhiNDY5N2ZlMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC03NSwxOCArNzUsNiBAQCB2b2lkIEJpZ0ludENvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJv
dG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgYm9vbCBpc1NhZmVJbnRlZ2VyKEpT
VmFsdWUgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFyZ3VtZW50LmlzSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWFyZ3VtZW50LmlzRG91YmxlKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGRvdWJsZSBudW1iZXIgPSBhcmd1bWVudC5hc0RvdWJsZSgpOwot
ICAgIHJldHVybiB0cnVuYyhudW1iZXIpID09IG51bWJlciAmJiBzdGQ6OmFicyhudW1iZXIpIDw9
IG1heFNhZmVJbnRlZ2VyKCk7Ci19Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogewogICAgIEFT
U0VSVChhcmd1bWVudC5pc1ByaW1pdGl2ZSgpKTsKQEAgLTk0LDIwICs4MiwxOSBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBhcmd1bWVudCkKICAgICAKICAgICBpZiAoYXJndW1lbnQuaXNCaWdJbnQoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudCk7Ci0gICAgCi0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAorCiAgICAgaWYgKGFyZ3VtZW50Lmlz
Qm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0g
ICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNO
dW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRv
QmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5n
KCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGds
b2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmll
dykpOwotICAgIH0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisKKyAgICBpZiAoYXJn
dW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9i
amVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcp
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVk
T3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlw
ZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzEwNiwxNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewotICAgICAg
ICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFz
SW50MzIoKSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcHJpbWl0aXZlLmFz
SW50MzIoKSkpOwogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIoKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1p
dGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJsZSgpKSB7CisgICAg
ICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAgICAgICAgaWYgKHRy
dW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBtYXhTYWZlSW50ZWdl
cigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUgaW50ZWdlciJfcykp
OwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMk9ySGVh
cCwgdm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAg
IH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KGdsb2JhbE9i
amVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYuLjZhN2ZkNTAyMDZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEJpZ0ludE9iamVjdCk7CiBjb25zdCBDbGFzc0luZm8gQmlnSW50T2JqZWN0OjpzX2luZm8gPSB7
ICJCaWdJbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEJpZ0ludE9iamVjdCkgfTsKIAogCi1CaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGJp
Z0ludCkKK0JpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCaWdJbnRPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0u
aGVhcCkpIEJpZ0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1
cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgYmlnSW50KTsKQEAgLTQ5LDcg
KzQ5LDcgQEAgQmlnSW50T2JqZWN0OjpCaWdJbnRPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNCaWdJbnQqIGJpZ0ludCkKK3ZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAppbmRleCA0NGZjNzZmYmRmOS4uMTI2ZWM2OGU2ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCkBAIC0y
Niw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSAr
NDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9k
ZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmln
SW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50
ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1
ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApp
bmRleCBkYjRhNjE4ODk5ZC4uYTg0MzQ2OTk5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtNzksMTIgKzc5LDIwIEBAIHZv
aWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZN
JiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgLy8gRklYTUU6IGhlYXAtYWxsb2NhdGlu
ZyBhbGwgYmlnIGludHMgaXMgaW5uZWZpY2llbnQsIGJ1dCByZS1pbXBsZW1lbnRpbmcgdG9TdHJp
bmcgZm9yIHNtYWxsIEJpZ0ludHMgaXMgZW5vdWdoIHdvcmsgdGhhdCBJJ20gZGVmZXJyaW5nIGl0
IHRvIGEgbGF0ZXIgcGF0Y2guCisgICAgaWYgKHRoaXNWYWx1ZS5pc0JpZ0ludDMyKCkpCisgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdGhpc1ZhbHVlLmJpZ0ludDMyQXNJ
bnQzMigpKTsKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKEpT
QmlnSW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5h
c0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAgICAg
aWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmpl
Y3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRP
YmplY3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJ
bnRPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUuYXND
ZWxsKCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+aW50
ZXJuYWxWYWx1ZSgpOworICAgICAgICAgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnQuYmlnSW50
MzJBc0ludDMyKCkpOworICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTksOCArMTA3LDYg
QEAgc3RhdGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0
IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CiAKLSAgICBBU1NFUlQodmFsdWUpOwot
CiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29wZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTE4LDYgKzEyNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0
cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAorLy8gRklYTUU6IHRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNh
bmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmln
SW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJ
bnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IDBlMmJjM2EyNzE5Li42NmRmODZkOWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ3MCwxMyArNDY5LDggQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BJbmM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0
KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFu
dCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNJbmMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmluYyhn
bG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVs
c2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJp
YW50KSArIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9z
cmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNDg1LDEzICs0NzksOCBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcERlYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9z
cmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRW
YXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6
ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0g
ICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3Vs
dFZhcmlhbnQpIC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29k
ZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcsNiArNDk2LDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTVmEKIHsKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1l
dGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsK
KyAgICAvLyBGSVhNRTogdGhpcyBhc3NlcnRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxh
c3QgY2FzZSAoTm9uTnVtZXJpYykuCiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJl
c3VsdC5pc0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAg
aWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01MjgsOCArNTE4LDEwIEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1l
dGFkYXRhLCBKU1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJl
c3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7Cisg
ICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkQmlnSW50MzIoKTsKKyAgICBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisg
ICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CiAgICAgZWxzZQogICAgICAg
ICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygpOwogfQpAQCAtNTQ2LDggKzUzOCwxOSBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogICAgIEpTVmFsdWUgcHJpbVZhbHVl
ID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0lu
dChwcmltVmFsdWUpKTsKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBp
ZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVl
KEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fV0lUSF9Q
Uk9GSUxJTkcocmVzdWx0LCB7CisgICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9y
VW5hcnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9wZXJhbmQpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1ZS5pc0hl
YXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5
TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVu
YXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01
ODUsOCArNTg4LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFy
aXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAgICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9m
aWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQz
MigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsKKyAgICBlbHNlIGlm
IChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFw
QmlnSW50KCk7CiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVy
aWMoKTsKIH0KQEAgLTYwOCwxMyArNjEzLDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rv
X251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9O
dW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJh
bmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJp
YW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNO
dW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ug
b3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWly
IG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQK
Ky8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRl
ci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlz
IGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbXVsKQpAQCAtNjcyLDI0ICs2NzIsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3Vi
KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0
ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0g
R0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0g
bGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAg
ICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4i
KSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3Vi
bGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAg
UkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2Zp
bGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBs
ZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY4NSw4IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAg
ICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpT
VmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxPYmplY3QsIGxlZnQs
IHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJ
TkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5
QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51
bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVS
Tl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9y
QmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwg
cmlnaHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs2OTgsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNW
YWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVl
IHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnRO
dW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1
bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIg
b3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3Vi
bGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHRO
dW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4o
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1OCwyNSAr
NzA5LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1f
bGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhz
KS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMg
PSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
UG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwot
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
fHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAg
ICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBi
ID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVy
KG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzIwLDEwIEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNW
YWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0K
LSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVy
aWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzMyLDEwIEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNW
YWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNo
aWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAK
LSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9u
LiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxp
bnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykg
JiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVm
dCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg1MCw3
OSArNzYxLDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8g
b3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBh
dXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7
Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0K
LQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFu
ZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0
LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQo
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBC
RUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byBy
aWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpOwogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAn
YW5kJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BS
T0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsK
ICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdp
c2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051
bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90Pihy
aWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikK
IHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCku
dG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0
byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0
ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxF
RChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQz
Ml90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3Io
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90
eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXgg
OWMzNDU0NDJmNTQuLjQ5MGY2ZWM5NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxp
emUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50Ojpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4
OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2Fz
dDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2lu
Z2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAg
ICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNl
ck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAg
aWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMu
Y2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNl
SW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9k
ZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFy
c2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3
IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2ln
biBzaWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQo
Z2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwg
cGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAg
ICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5s
ZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxs
b3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5n
VmlldyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFy
c2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQxLDIwIEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4g
cHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVj
dCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQor
ICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9u
OjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2Jh
bE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2Fu
IHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmpl
Y3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkp
CisgICAgICAgIHJldHVybiBjcmVhdGVGcm9tKGdsb2JhbE9iamVjdC0+dm0oKSwgMSk7CisgICAg
aWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmpl
Y3QsIHgsIHgtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2Jq
ZWN0LCB4LCBTaWduT3B0aW9uOjpTaWduZWQpOwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmFk
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
CkBAIC01MzIsNyArNTIzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0kKICAgICBpZiAoeC0+
c2lnbigpKQogICAgICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCi0gICAgLy8geCAmICgteSkg
PT0geCAmIH4oeS0xKSA9PSB4ICYgfih5LTEpCisgICAgLy8geCAmICgteSkgPT0geCAmIH4oeS0x
KQogICAgIEpTQmlnSW50KiB5MSA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeSwgeS0+
bGVuZ3RoKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAg
IHJldHVybiBhYnNvbHV0ZUFuZE5vdCh2bSwgeCwgeTEpOwpAQCAtMTY0NCw3ICsxNjM1LDcgQEAg
U3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0Jhc2VQb3dlck9mVHdvKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmlj
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIHVuc2ln
bmVkIHJhZGl4KQogewogICAgIC8vIEZJWE1FOiBbSlNDXSBSZXZpc2l0IHVzYWdlIG9mIFZlY3Rv
ciBpbnRvIEpTQmlnSW50Ojp0b1N0cmluZwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODA2NworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODA2NzEKICAgICBWZWN0b3I8TENoYXI+IHJlc3VsdFN0cmluZzsKIAog
ICAgIEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKQEAgLTE4MDIsNyArMTc5Myw3
IEBAIGJvb2wgSlNCaWdJbnQ6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUg
ZXJyb3JQYXJzZU1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQ
YXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogCkBAIC0xODEwLDcgKzE4MDEsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogICAg
IHdoaWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShkYXRhW3BdKSkKICAgICAgICAg
KytwOwogCi0gICAgLy8gQ2hlY2sgUmFkaXggZnJvbSBmcmlzdCBjaGFyYWN0ZXJzCisgICAgLy8g
Q2hlY2sgUmFkaXggZnJvbSBmaXJzdCBjaGFyYWN0ZXJzCiAgICAgaWYgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwKSArIDEgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSAmJiBkYXRhW3Bd
ID09ICcwJykgewogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChkYXRhW3Ag
KyAxXSwgJ2InKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZt
LCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAyLCBlcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduOjpV
bnNpZ25lZCwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKQEAgLTE4MjQsMjQg
KzE4MTUsMTggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKIAogICAgIFBhcnNlSW50U2lnbiBz
aWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZDsKICAgICBpZiAocCA8IGxlbmd0aCkgewotICAg
ICAgICBpZiAoZGF0YVtwXSA9PSAnKycpCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgIGVsc2Ug
aWYgKGRhdGFbcF0gPT0gJy0nKSB7CisgICAgICAgIGlmIChkYXRhW3BdID09ICctJykgewogICAg
ICAgICAgICAgc2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkOwogICAgICAgICAgICAgKytwOwot
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZGF0YVtwXSA9PSAnKycpCisgICAgICAgICAg
ICArK3A7CiAgICAgfQogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNlSW50KGdsb2JhbE9i
amVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCwgMTAsIGVycm9yUGFyc2VNb2RlLCBzaWduKTsKLQot
ICAgIGlmIChyZXN1bHQgJiYgIXJlc3VsdC0+aXNaZXJvKCkpCi0gICAgICAgIHJlc3VsdC0+c2V0
U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKLQotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCwg
MTAsIGVycm9yUGFyc2VNb2RlLCBzaWduKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9k
ZSwgUGFyc2VJbnRTaWduIHNpZ24sIFBhcnNlSW50TW9kZSBwYXJzZU1vZGUpCitKU1ZhbHVlIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENo
YXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2ln
bmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduIHNp
Z24sIFBhcnNlSW50TW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsK
ICAgICB1bnNpZ25lZCBwID0gc3RhcnRJbmRleDsKQEAgLTE4NTIsNyArMTgzNyw3IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBDaGFyVHlwZSogZGF0CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgICAg
ICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucykK
ICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50
YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIp
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgfQogCiAgICAgLy8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcwpAQCAtMTg2Nyw0MyArMTg1Miw3
NiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdAogICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsK
IAogICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAwKTsKKworICAgIC8v
IFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgbnVtYmVyIHN1Y2ggdGhhdCByYWRpeCAq
KiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMyX01BWAorICAgIHVuc2lnbmVkIGxlbmd0
aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChyYWRpeCkgeworICAgIGNhc2UgMjoKKyAg
ICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMwOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAxMDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50
MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBsZW5ndGhMaW1p
dEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgSlNCaWdJbnQq
IGhlYXBSZXN1bHQgPSBudWxscHRyOwogCiAgICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJh
ZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAocmFk
aXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0gMTApOwotCi0g
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4
LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
LSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3Mg
dG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFuIGV4Y2VwdGlv
biBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8p
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsKLSAg
ICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRh
W2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAnOwotICAgICAg
ICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRhKQotICAgICAgICAg
ICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFbaV0g
Pj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0g
LSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7CisgICAgdW5zaWdu
ZWQgbGltaXRhID0gJ2EnICsgKHN0YXRpY19jYXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAg
ICB1bnNpZ25lZCBsaW1pdEEgPSAnQScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0g
MTApOworICAgIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSBsZW5ndGggLSBwOworICAgIHdoaWxl
IChwIDwgbGVuZ3RoKSB7CisgICAgICAgIGludDMyX3QgZGlnaXQgPSAwOworICAgICAgICBDaGVj
a2VkPGludDMyX3QsIENyYXNoT25PdmVyZmxvdz4gbXVsdGlwbGllciA9IDE7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyICYmIHAgPCBsZW5n
dGggOyArK2ksICsrcCkgeworICAgICAgICAgICAgZGlnaXQgKj0gcmFkaXg7CisgICAgICAgICAg
ICBtdWx0aXBsaWVyICo9IHJhZGl4OworICAgICAgICAgICAgaWYgKGRhdGFbcF0gPj0gJzAnICYm
IGRhdGFbcF0gPCBsaW1pdDApCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICcw
JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ2EnICYmIGRhdGFbcF0gPCBsaW1p
dGEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdhJyArIDEwOworICAgICAg
ICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnQScgJiYgZGF0YVtwXSA8IGxpbWl0QSkKKyAgICAg
ICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ0EnICsgMTA7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6
OlRocm93RXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJp
bmcgdG8gQmlnSW50IikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFTU0VSVChk
aWdpdCA8IG11bHRpcGxpZXIudW5zYWZlR2V0KCkpOwogCi0gICAgICAgIHJlc3VsdC0+aW5wbGFj
ZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0
PihkaWdpdCkpOworICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChw
ID09IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50U2lnbjo6
U2lnbmVkKQorICAgICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBkaWdpdCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBoZWFwUmVzdWx0ID0gYWxs
b2NhdGVGb3IoZ2xvYmFsT2JqZWN0LCB2bSwgcmFkaXgsIGluaXRpYWxMZW5ndGgpOworICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgICAg
ICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNj
ZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNl
cHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgICAgIGlmICghaGVhcFJlc3VsdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBoZWFw
UmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFk
ZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0
PERpZ2l0PihkaWdpdCkpOwogICAgIH0KIAotICAgIHJlc3VsdC0+c2V0U2lnbihzaWduID09IFBh
cnNlSW50U2lnbjo6U2lnbmVkID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICBpZiAocCA9PSBsZW5ndGgp
Ci0gICAgICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7Ci0KLSAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0KTsKLSAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRo
cm93RXhjZXB0aW9ucykKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcg
dG8gQmlnSW50IikpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0
U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3Vs
dC0+cmlnaHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6
ZGlnaXQodW5zaWduZWQgbikKQEAgLTE5MjcsMTggKzE5NDUsMjAgQEAgYm9vbCBKU0JpZ0ludDo6
ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUu
aXNOdW1iZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAg
ICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlz
LT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhp
cy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAg
ICAgICAgcmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAg
ICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21wYXJl
VG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCiti
b29sIEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhpcy0+
bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMt
PmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2
NF90Pih2YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50
Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMg
YWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uYzEz
ZWY2MDE1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAt
OTAsMTMgKzkwLDEyIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERp
c2FsbG93RW1wdHlTdHJpbmcsIEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBh
cnNlSW50U2lnbiB7IFVuc2lnbmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCog
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgs
IEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJ
bnRTaWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBw
YXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJy
b3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJp
bmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJh
ZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBh
cnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVl
IHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBF
cnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJp
bmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0
cmluZyB0cnlHZXRTdHJpbmcoVk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAg
IE9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJp
bmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAg
ZW51bSBjbGFzcyBDb21wYXJpc29uTW9kZSB7CkBAIC0xMTMsNiArMTEyLDcgQEAgcHVibGljOgog
ICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCos
IEpTQmlnSW50Kik7CiAgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENv
bXBhcmlzb25SZXN1bHQgY29tcGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAg
Ym9vbCBnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwg
SlNWYWx1ZSYgcmVzdWx0KSBjb25zdDsKQEAgLTIyMiwxMCArMjIyLDEwIEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0Jp
Z0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFy
c2VNb2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMg
SlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJy
b3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUlu
dE1vZGUgPSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJz
ZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUg
PSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50
KiBhbGxvY2F0ZUZvcihKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2ln
bmVkIGNoYXJjb3VudCk7CiAKQEAgLTI1OCw5ICsyNTgsOSBAQCBwcml2YXRlOgogICAgIENhZ2Vk
VW5pcXVlUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxp
bmUgSlNCaWdJbnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFz
SGVhcEJpZ0ludChKU1ZhbHVlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+
aXNCaWdJbnQoKSk7CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7
CiAgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1NDgwMTBl
YjFjMC4uYmI5Yzg3NjMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAtNzEsNiArNzIsMTIgQEAgZG91Ymxl
IEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7CiAgICAgaWYgKGlz
Q2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
CisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJv
bSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1
cm4gMC4wOworICAgIH0KICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJldHVybiAxLjA7CiAg
ICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90
aCBjb252ZXJ0IHRvIDAuCkBAIC0xMDEsNiArMTA4LDggQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRv
T2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAg
aWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xl
YW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisgICAgaWYg
KGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsICp0aGlzKTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsK
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVj
dEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMjcsMTEgQEAgSlNWYWx1
ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxP
YmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmpl
Y3QsIGFzVmFsdWUoKSk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBKU0NlbGwq
IGhlYXBCaWdJbnQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihKU0JpZ0ludDo6Y3JlYXRlRnJvbShn
bG9iYWxPYmplY3QtPnZtKCksIGJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgICAgIC8vIEZJWE1F
OiB0aGVyZSBtdXN0IGJlIGEgc2ltcGxlciB3YXkgdG8gZmluZCB0b1RoaXMgZm9yIEpTQmlnSW50
LCBidXQgSSBjYW4ndCBldmVuIGZpbmQgd2hlcmUgaXQgaXMgZGVmaW5lZC4KKyAgICAgICAgcmV0
dXJuIGhlYXBCaWdJbnQtPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMo
aGVhcEJpZ0ludCwgZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7CisgICAgfQogICAgIEFTU0VSVChp
c1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlz
KCk7CiB9CkBAIC0xMzAsNyArMTQ0LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBpZiAoaXND
ZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKGlzQmlnSW50KCkpCisg
ICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwpAQCAtMTQwLDYgKzE1
NCw4IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51
bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogCiAgICAgQVNT
RVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpA
QCAtMjg2LDYgKzMwMiw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3Ry
dWN0dXJlKAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXND
ZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJD
bGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0
dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQp
KTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJp
bnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkp
OwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2Yo
SlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBS
YXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRl
cmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAg
LTMwNSw2ICszMjMsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVj
dHVyZSgKICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyAgICBlbHNlIGlmIChpc0Jp
Z0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0lu
dDMyQXNJbnQzMigpKTsKICAgICBlbHNlCiAgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwog
fQpAQCAtMzQ3LDYgKzM2Nyw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNl
IGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworICAg
IGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGlu
ZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOwogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50
KCJJTlZBTElEIik7CiB9CkBAIC0zODQsMTggKzQwNiwyMyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6
dG9TdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVy
bkVtcAogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBp
ZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmlu
ZWRTdHJpbmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJp
bmciX3MpOwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIGlmIChpc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAg
IGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAgICAgICAgICAgIHJl
dHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGludGVnZXIgKyAnMCcp
OworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5udW1lcmljU3RyaW5n
cy5hZGQoaW50ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkgewotICAgICAgICBK
U0JpZ0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byBkaWdp
dCA9IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAgICAgICAgICAgcmV0
dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsK
LSAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
YmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisgICAgaWYgKGlzSGVhcEJpZ0lu
dCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBCaWdJbnQoKTsKKyAgICAg
ICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2FzZXMgaGVyZTogb25lLWNo
YXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBldmVyeXRoaW5nIGVsc2Uu
CisgICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlKHZtLCBi
aWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApLnJlbGVhc2VJbXBsKCkucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9yVmFsdWUo
KSk7CiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7CiAgICAgfQorICAgIGlmIChpc1N5bWJv
bCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5u
b3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVybiBlcnJv
clZhbHVlKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyU3RyaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBmZTAxODBk
ZDYwYy4uNGI0ZmNmYTcwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTE3NSw2ICsxNzUsMTAgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFn
IHsgSlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0g
SlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworICAgIGVudW0gSlNCaWdJbnRUYWcgeyBKU0JpZ0lu
dDMyT3JIZWFwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcg
eyBKU0JpZ0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5j
b2RlQXNEb3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4NCw2ICsxODgsMTEgQEAgcHVi
bGljOgogICAgIEpTVmFsdWUoSlNGYWxzZVRhZyk7CiAgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7
CiAgICAgSlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpOworI2VuZGlmCisgICAgLy8gUmV0dXJu
cyBlaXRoZXIgYSBCaWdJbnQzMiBvciBhIEhlYXBCaWdJbnQuCisgICAgSlNWYWx1ZShKU0JpZ0lu
dFRhZywgVk0mLCBpbnQ2NF90KTsKIAogICAgIC8vIE51bWJlcnMKICAgICBKU1ZhbHVlKEVuY29k
ZUFzRG91YmxlVGFnLCBkb3VibGUpOwpAQCAtMjE3LDYgKzIyNiw5IEBAIHB1YmxpYzoKICAgICBk
b3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAg
IGRvdWJsZSBhc051bWJlcigpIGNvbnN0OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW50MzJf
dCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5IGJlIGNhbGxlZCBvbiBhIEJp
Z0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50MzJGb3JBcml0aG1ldGljKCkg
Y29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBvdGhlcndpc2UgbGlrZSBhc0lu
dDMyKCkuCiAKQEAgLTIzNiw2ICsyNDgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdW1iZXIo
KSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgp
IGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKKyNlbmRpZgogICAgIGJvb2wgaXNTeW1i
b2woKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dl
dHRlclNldHRlcigpIGNvbnN0OwpAQCAtMjQ0LDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGluaGVyaXRzKFZNJiwgY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVGFyZ2V0PiBib29sIGluaGVyaXRzKFZNJikgY29uc3Q7CiAgICAgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm9Pck51bGwoVk0mKSBjb25zdDsKLSAgICAgICAgCisKICAgICAvLyBFeHRy
YWN0aW5nIHRoZSB2YWx1ZS4KICAgICBib29sIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFdU
Rjo6U3RyaW5nJikgY29uc3Q7CiAgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwpAQCAtMjYzLDkgKzI3
OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpcyBleHBlY3RlZCB0
byBiZSBzaWRlIGVmZmVjdCBmcmVlIGlmIGFuIGV4Y2VwdGlvbiBoYXMKICAgICAvLyBiZWVuIHNl
dCBpbiB0aGUgQ2FsbEZyYW1lIGFscmVhZHkuCiAgICAgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7Ci0gICAgCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gdG9O
dW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGlu
dDMyX3Q+IHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCisgICAgSlNW
YWx1ZSB0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvQmln
SW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTQmlnSW50KiBhc0hlYXBC
aWdJbnQoKSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaWYgaXQgY2FuIGJl
IGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCiAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b051bWJl
ckZyb21QcmltaXRpdmUoKSBjb25zdDsKQEAgLTMxNCw4ICszMzEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBzdHJpY3RF
cXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRp
YyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wg
c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogdjEsIEpTQ2VsbCog
djIpOwogICAgIHN0YXRpYyBUcmlTdGF0ZSBwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7CiAKICAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwpAQCAtNDEzLDExICs0MjksMjAg
QEAgcHVibGljOgogICAgICAqIFRoZXNlIHZhbHVlcyBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllczoKICAgICAgKiAtIEJpdCAxIChPdGhlclRhZykgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1
ZXMsIGFsbG93aW5nIHJlYWwgcG9pbnRlcnMgdG8gYmUKICAgICAgKiAgIHF1aWNrbHkgZGlzdGlu
Z3Vpc2hlZCBmcm9tIGFsbCBpbW1lZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxp
ZCBwb2ludGVycy4KLSAgICAgKiAtIFdpdGggYml0IDMgaXMgbWFza2VkIG91dCAoVW5kZWZpbmVk
VGFnKSBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCisgICAgICogLSBXaXRoIGJpdCAzIG1h
c2tlZCBvdXQgKFVuZGVmaW5lZFRhZyksIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKICAg
ICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8gYmUgcXVpY2ts
eSBkZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2lsbCBoYXZlIHRo
ZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJyYXkKICAgICAg
KiBob2xlcywgYW5kIGFzIGEgQysrICdubyB2YWx1ZScgcmVzdWx0IChlLmcuIEpTVmFsdWUoKSBo
YXMgYW4gaW50ZXJuYWwgdmFsdWUgb2YgMCkuCisgICAgICoKKyAgICAgKiBXZSBoYXZlIGEgc3Bl
Y2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFsbCAoMzItYml0IGF0
IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAqIFRoaXMgcmVw
cmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAg
KiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtz
IHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBw
b2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNldCB0byB0cnVlCisg
ICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFu
a3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUg
Y29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisg
ICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZpbmVkIGJlY2F1c2Ug
Yml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40
OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgd2ls
bCBiZWdpbgpAQCAtNDMyLDYgKzQ1Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IGludDMyX3QgT3RoZXJUYWcgICAgICAgPSAweDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQz
Ml90IEJvb2xUYWcgICAgICAgID0gMHg0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBV
bmRlZmluZWRUYWcgICA9IDB4ODsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50
MzJUYWcgICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1h
c2sgICA9IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOwogICAgIC8vIENvbWJpbmVkIGludGVnZXIg
dmFsdWUgZm9yIG5vbi1udW1lcmljIGltbWVkaWF0ZXMuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQzMl90IFZhbHVlRmFsc2UgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwgZmFsc2U7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlVHJ1ZSAgICAgID0gT3RoZXJUYWcgfCBCb29s
VGFnIHwgdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRlLi4yNGQxYjVjM2ZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0zOCw3
ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0y
NDAsNiArMjM5LDE4IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRy
KQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0
X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7CiB9CiAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmln
SW50MzJUYWcsIGludDMyX3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRf
dCB2YWwpCit7CisgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKKyAgICBhdXRvIHB0ciA9IEpT
QmlnSW50OjpjcmVhdGVGcm9tKHZhbCk7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5l
IEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBE
ZWxldGVkVmFsdWVUYWcpOwpAQCAtMzI5LDYgKzM0MCwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2Vs
bCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxK
U0NlbGwqPih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCog
SlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50
KCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5
bG9hZCk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJs
ZVRhZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQs
NiArNDgxLDIyIEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5h
c0ludDY0ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJ
bnQzMlRhZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVtYmVyVGFnIHBhcnQg
aXMgZm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBzaWduLWV4dGVuZGVk
LgorICAgIHUuYXNJbnQ2NCA9ICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpIDw8IDE2KSAm
IH5OdW1iZXJUYWcpIHwgQmlnSW50MzJUYWc7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KEpTQmlnSW50VGFnLCBWTSYgdm0sIGludDY0X3QgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIDw9
IElOVF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikKKyAgICAgICAgdS5hc0ludDY0ID0gKHZhbHVl
IDw8IDE2KSB8IEJpZ0ludDMyVGFnOworICAgIGVsc2UgeworICAgICAgICBKU0NlbGwqIHB0ciA9
IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgICAgIHUuYXNJbnQ2NCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpOworICAgIH0KK30KKwogaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewogICAgIC8vIFVuZGVmaW5lZCBh
bmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQgaW4g
dGhlIGV4dGVuZGVkIHRhZy4KQEAgLTUyMiw2ICs1NTUsMTIgQEAgQUxXQVlTX0lOTElORSBKU0Nl
bGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQogCitBTFdB
WVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAg
IEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50
Kj4odS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogaW5saW5lIGludDY0
X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKQEAgLTYxMCw3ICs2NDksMjcgQEAg
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0JpZ0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgp
LT5pc0JpZ0ludCgpOworICAgIHJldHVybiBpc0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7
Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIEJpZ0ludDMyTWFzaykgPT0gQmlnSW50MzJUYWc7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitpbmxpbmUgaW50MzJfdCBKU1Zh
bHVlOjpiaWdJbnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOwogfQog
CiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CkBAIC02MjAsNyArNjc5LDcg
QEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogCiBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc1ByaW1pdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpc0NlbGwoKSB8fCBh
c0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+
aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygp
IHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0K
IAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdApAQCAtNzYwLDgg
KzgxOSwxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudQogICAgICAgICB2YWx1ZSA9ICp0aGlz
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkp
OwotICAgIG51bWJlciA9IFBOYU47CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
bnVtYmVyID0gUE5hTjsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBm
cm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfcyk7CisgICAgbnVtYmVy
ID0gMC4wOwogICAgIHZhbHVlID0gKnRoaXM7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03NzUs
NDQgKzg0Myw0NSBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiB0b051bWJlclNsb3dD
YXNlKGdsb2JhbE9iamVjdCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0ludCos
IGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9OdW1lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAg
ICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJu
IGFzRG91YmxlKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0lu
dCgqdGhpcyk7CisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpIHx8IGlzQmlnSW50KCkp
CisgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSBwcmltVmFsdWUgPSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51
bWJlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlz
RG91YmxlKCkgfHwgcHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFs
dWU7CisKICAgICBkb3VibGUgdmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwge30pOworCisgICAgcmV0dXJuIGpzTnVt
YmVyKHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJf
dD4gSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkK
LSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzQmlnSW50
KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKICAgICBpZiAoaXNEb3VibGUoKSAmJiBjYW5CZUlu
dDMyKGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNE
b3VibGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgq
dGhpcyk7CisgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0Rv
dWJsZSgpKSk7CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVl
ID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQo
KSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwge30pOworCisgICAgaWYgKHByaW1WYWx1ZS5pc0ludDMyKCkgfHwgcHJp
bVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7CisKICAgICBpbnQz
Ml90IHZhbHVlID0gcHJpbVZhbHVlLnRvSW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwge30pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAK
IGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKQEAgLTEwMzUsMzIgKzExMDQsMzMgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlMKICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAg
ICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAKKyAgICAgICAg
aWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICByZXR1
cm4gdjEgPT0gdjI7CisKICAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7CiAgICAgICAg
IGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwogICAgICAgICBpZiAoczEgJiYgczIpCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFs
T2JqZWN0LCBhc1N0cmluZyh2MikpKTsKIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBz
MikgeworICAgICAgICAvLyBGSVhNRTogYSBsb3Qgb2YgdGhlc2UgY2FuIGxpa2VseSBiZSBzaW1w
bGlmaWVkIGJ5IHN3YXBwaW5nIHYxIGFuZCB2MiBpbiBzb21lIGNhc2VzLgorCisgICAgICAgIGlm
IChzMiAmJiB2MS5pc0JpZ0ludCgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdjJTdHJpbmcgPSBh
c1N0cmluZyh2MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmln
SW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKKyAgICAgICAgICAg
IHYyID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgaWYgKCFuKQorICAgICAgICAgICAgaWYgKCF2MikKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYyID0gSlNWYWx1ZShuKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHMxICYmIHYyLmlzQmln
SW50KCkpIHsKICAgICAgICAgICAgIFN0cmluZyB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dmFs
dWUoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KGdsb2JhbE9iamVjdCwgdjFTdHJpbmcpOworICAgICAgICAgICAgdjEgPSBKU0JpZ0ludDo6
c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0cmluZyk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCisgICAg
ICAgICAgICBpZiAoIXYxKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKG4pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIApAQCAtMTEzMCwyOCArMTIwMCwzOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKUwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodjEu
aXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAg
aWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBh
c0JpZ0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKKyAgICAgICAgaWYgKHYxLmlzSGVhcEJp
Z0ludCgpICYmIHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKTsKKworICAgICAg
ICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAg
cmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQz
MigpKTsKKworICAgICAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzSGVhcEJpZ0ludCgp
KQorICAgICAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYx
LmJpZ0ludDMyQXNJbnQzMigpKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2MS5p
c051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9OdW1i
ZXIodjEpOworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9OdW1iZXIodjIp
OworCisgICAgICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQorICAg
ICAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2MSk7CisK
KyAgICAgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCisgICAgICAgICAg
ICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigpOworCisgICAgICAg
IGlmICh2Mi5pc0JpZ0ludDMyKCkgJiYgdjEuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJu
IHYyLmJpZ0ludDMyQXNJbnQzMigpID09IHYxLmFzSW50MzIoKTsKIAogICAgICAgICByZXR1cm4g
djEgPT0gdjI7CiAgICAgfSB3aGlsZSAodHJ1ZSk7CiB9CiAKIC8vIEVDTUEgMTEuOS4zCi1BTFdB
WVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorQUxXQVlTX0lO
TElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2MikKIHsKLSAgICBBU1NFUlQodjEuaXND
ZWxsKCkgJiYgdjIuaXNDZWxsKCkpOwotCi0gICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygp
ICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQorICAgIGlmICh2MS0+aXNTdHJpbmcoKSAmJiB2
Mi0+aXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFs
T2JqZWN0LCBhc1N0cmluZyh2MikpOwotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmln
SW50KCkpCi0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNC
aWdJbnQodjIpKTsKKyAgICBpZiAodjEtPmlzSGVhcEJpZ0ludCgpICYmIHYyLT5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoc3RhdGljX2Nhc3Q8SlNCaWdJ
bnQqPih2MSksIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odjIpKTsKICAgICByZXR1cm4gdjEgPT0g
djI7CiB9CiAKQEAgLTExNjMsMTAgKzEyNDMsMTYgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWwK
ICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4g
djEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwogCi0gICAgaWYgKCF2MS5pc0NlbGwoKSB8
fCAhdjIuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICBpZiAodjEuaXNI
ZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFw
QmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworCisgICAgaWYg
KHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYy
LmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKwor
ICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmlj
dEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOwog
Ci0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwg
djIpOworICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6
YXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwxNSArMTI3MCwyMiBAQCBpbmxp
bmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0
dXJuIHRyaVN0YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAo
IXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYx
ID09IHYyKTsKLSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXND
ZWxsKCktPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcg
PSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJpbmdJ
bXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAg
IGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJp
U3RhdGU7Ci0gICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYy
U3RyaW5nKSk7CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMy
KHYyLmJpZ0ludDMyQXNJbnQzMigpKSk7CisKKyAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYy
LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjIuYXNIZWFwQmlnSW50
KCktPmVxdWFsc1RvSW50MzIodjEuYmlnSW50MzJBc0ludDMyKCkpKTsKKworICAgIGlmICh2MS5p
c0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3Ry
aW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0
cmluZ0ltcGwqIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAg
ICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlH
ZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQor
ICAgICAgICAgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJu
IHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1
YWxzKHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAK
ICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMjk5LDggQEAgaW5s
aW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogICAgICAgICByZXR1
cm4gaXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNl
VHJpU3RhdGU7IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJl
dHVybiBhc0NlbGwoKS0+cHVyZVRvQm9vbGVhbigpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBiaWdJbnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJp
U3RhdGU7CiAgICAgcmV0dXJuIGlzVHJ1ZSgpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMjcx
MzUyYjIxNzQuLmU4YzY3MGI0NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2VsbDo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogCiBib29s
IEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8
IGNlbGwtPmlzQmlnSW50KCkpCisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNT
eW1ib2woKSB8fCBjZWxsLT5pc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
Y2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xv
dCk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGkKIGJvb2wg
SlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgaWYgKGNlbGwtPmlz
U3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKSB7CisgICAg
aWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0hlYXBC
aWdJbnQoKSkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91bGRUaHJv
dyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaWRlbnRpZmllciksIHZhbHVlLCBzbG90KTsKICAg
ICB9CkBAIC0xNTEsNyArMTUxLDcgQEAgSlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAo
aXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0lu
dCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1pdGl2ZShn
bG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wg
SlNDZWxsOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlJiBudW1iZXIsIEpTCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0
cmluZyo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZh
bHVlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFN5bWJvbCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1i
ZXIsIHZhbHVlKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT5nZXRQ
cmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGds
b2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgZG91Ymxl
IEpTQ2VsbDo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvTnVtYmVy
KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b051
bWJlcihnbG9iYWxPYmplY3QpOwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIEpTT2JqZWN0KiBKU0Nl
bGw6OnRvT2JqZWN0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAg
IEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQuLjRkMjczOTI1
NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTAxLDcgKzEw
MSw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAg
ICBib29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OworICAg
IGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5k
ZXggMmRhZjdiYzBkZGIuLmMyODM4MzY4MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yMDUsOSArMjA1LDkgQEAgaW5saW5lIGJvb2wg
SlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBl
OwogfQogCi1pbmxpbmUgYm9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29uc3QKK2lubGluZSBib29s
IEpTQ2VsbDo6aXNIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90eXBlID09IEJp
Z0ludFR5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBIZWFwQmlnSW50VHlwZTsKIH0KIAogaW5s
aW5lIGJvb2wgSlNDZWxsOjppc1N5bWJvbCgpIGNvbnN0CkBAIC0zNDEsNyArMzQxLDcgQEAgaW5s
aW5lIGJvb2wgSlNDZWxsOjp0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpOwotICAgIGlmIChpc0JpZ0ludCgp
KQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpOwogICAgIHJldHVybiAhc3RydWN0dXJl
KGdldFZNKGdsb2JhbE9iamVjdCkpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVj
dCk7CiB9CkBAIC0zNTAsNyArMzUwLDcgQEAgaW5saW5lIFRyaVN0YXRlIEpTQ2VsbDo6cHVyZVRv
Qm9vbGVhbigpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlT
dGF0ZSA6IEZhbHNlVHJpU3RhdGU7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVh
cEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0
aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogICAgIGlm
IChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMjJjMDEyMDVjMmYuLmZlMDEyZjhjN2I5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTEwMzgsNiAr
MTAzOCw4IEBAIGlubGluZSBib29sIEpTVmFsdWU6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gYXNEb3VibGUoKSA+IDAuMCB8fCBh
c0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAg
ICAgICByZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworICAgIGlmIChp
c0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOwogICAgIHJl
dHVybiBpc1RydWUoKTsgLy8gZmFsc2UsIG51bGwsIGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQg
dG8gZmFsc2UuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmlu
ZGV4IGIwMmIzNDdkNmE1Li44M2JkZDllMTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoQ2VsbFR5cGUpCiAgICAg
Q0FTRShTdHJpbmdUeXBlKQogICAgIENBU0UoU3ltYm9sVHlwZSkKLSAgICBDQVNFKEJpZ0ludFR5
cGUpCisgICAgQ0FTRShIZWFwQmlnSW50VHlwZSkKICAgICBDQVNFKEN1c3RvbUdldHRlclNldHRl
clR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdyYXBwZXJUeXBlKQogICAgIENBU0UoTmF0aXZlRXhl
Y3V0YWJsZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDE0
Nzk5MjVkNmY1Li43N2EwMTEyNTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKQEAgLTI3LDcgKzI3LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBDZWxs
VHlwZSwKICAgICBTdHJpbmdUeXBlLAogICAgIFN5bWJvbFR5cGUsCi0gICAgQmlnSW50VHlwZSwK
KyAgICBIZWFwQmlnSW50VHlwZSwKIAogICAgIEdldHRlclNldHRlclR5cGUsCiAgICAgQ3VzdG9t
R2V0dGVyU2V0dGVyVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUlu
Zm8uaAppbmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFn
IDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgYm9vbCBpc1NldE9u
RmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyBy
ZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCi0gICAgdWludDhfdCBtX3R5cGU7Cisg
ICAgSlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1fZmxhZ3M7CiAgICAgdWludDE2X3QgbV9m
bGFnczI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAppbmRleCBjNGViYmVjNTAzNS4uMjdhMjIx
YzJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC0yNiw5ICsyNiw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oIgogCi0j
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5
MDVkNWJhZjA3Li41NzIwNDBlZDhmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5jcHAKQEAgLTM2LDExICszNiw2IEBAIGJvb2wgSlNWYWx1ZTo6ZXF1YWxT
bG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyCiAgICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIp
OwogfQogCi1ib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAgICByZXR1cm4gc3Ry
aWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7Ci19Ci0KIE5FVkVS
X0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKICAgICAvLyBleGNlcHRpb24gZm9yIHRoZSBE
YXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQpAQCAtNzMsMjEgKzY4LDE3IEBAIE5FVkVS
X0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2MSwgSlNWCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNT
dHJpbmcoZ2xvYmFsT2JqZWN0LCBwMVN0cmluZywgYXNTdHJpbmcocDIpKSk7CiAgICAgfQogCi0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IHAxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBw
Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpOwotICAgIH0KLQot
ICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSArIFdURjo6
Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAr
IHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwg
aW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVj
b3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJ
bnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICB9OworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0lu
dDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAogSlNWYWx1ZSBqc1R5cGVTdHJpbmdG
b3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikK
QEAgLTEyOCw3ICsxMTksNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7
CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9
PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUp
CisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlw
ZSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBl
ID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0p
LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJiZTIzYzA3MjUuLmEzNTBmNDgyMGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0yNSw3
ICsyNSw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQmln
SW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjM5LDYgKzIzOCwzNCBAQCBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZQogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZUJpZ0ludFRv
T3RoZXJQcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHYx
LCBKU1ZhbHVlIHByaW1WYWx1ZSkKK3sKKyAgICBBU1NFUlQocHJpbVZhbHVlLmlzUHJpbWl0aXZl
KCkpOworICAgIEFTU0VSVCghcHJpbVZhbHVlLmlzQmlnSW50KCkpOworCisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBKU1ZhbHVl
IGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNT
dHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQp
OworICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgaWYgKGJpZ0ludFZhbHVl
LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlKHYx
LCBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50MzIoKSk7CisgICAgICAgICAgICAvLyBGSVhN
RTogdXNlIHNvbWV0aGluZyBsZXNzIGhhY2t5LCBlLmcuIHNvbWUga2luZCBvZiBKU0JpZ0ludDo6
Y29tcGFyZVRvSW50MzIKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91
YmxlKHYxLCBzdGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigp
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1cm4gSlNC
aWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdBWVNfSU5M
SU5FIGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBj
b21wYXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNvbk1vZGUp
CiB7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6
TGVzc1RoYW4pCkBAIC0yNTUsNTEgKzI4Miw0NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50
Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAog
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5p
c0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6
Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAg
ICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IHYyOwotICAgICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIEpT
QmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmpl
Y3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFi
aWdJbnRWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAg
IHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYx
KSwgYmlnSW50VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KIAotICAgICAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHByaW1WYWx1
ZSkpLCBjb21wYXJpc29uTW9kZSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21w
YXJpc29uTW9kZTo6TGVzc1RoYW4pCisgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0lu
dDMyKCkgPCB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGNvbXBhcmlzb25N
b2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKTsKKyAgICAg
ICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDw9IHYyLmJpZ0ludDMyQXNJbnQzMigpOwor
ICAgIH0KKworICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIEpTQmln
SW50KiB2MkhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBoYXZlIHNvbWUgZmFz
dC1pc2ggcGF0aCBmb3IgYSBjb21wYXJpc29uIGJldHdlZW4gYSBzbWFsbCBhbmQgYSBsYXJnZSBi
aWctaW50CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICBlbHNl
IGlmICh2MS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFw
QmlnSW50KCk7CiAKLSAgICAgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjJI
ZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYyLmJpZ0ludDMyQXNJbnQzMigp
KTsKKyAgICBlbHNlIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50
ID0gdjIuYXNIZWFwQmlnSW50KCk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50ICYmIHYySGVhcEJp
Z0ludCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBh
cmUodjFIZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQpLCBjb21wYXJpc29uTW9kZSk7CisKKyAgICBp
ZiAodjFIZWFwQmlnSW50KSB7CisgICAgICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBh
cmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjFIZWFwQmlnSW50LCB2Mik7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0lu
dCh2MSksIG51bWJlclZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOworICAgICAgICByZXR1cm4gYmln
SW50Q29tcGFyZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJpc29uTW9kZSk7CiAgICAg
fQotICAgIAotICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0gICAgaWYgKHByaW1WYWx1ZS5p
c1N0cmluZygpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50Ojpz
dHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGds
b2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgIGlmICghYmlnSW50VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYmln
SW50VmFsdWUsIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludChwcmltVmFsdWUpLCBhc0JpZ0ludCh2
MikpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJp
bVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBjb21wYXJpc29uUmVzdWx0
ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJ
bnQsIHYxKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0KICAgICAv
LyBIZXJlIHdlIGNoZWNrIGludmVydGVkIGJlY2F1c2UgQmlnSW50IGlzIHRoZSB2MgotICAgIEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQgPSBKU0JpZ0ludDo6Y29t
cGFyZVRvRG91YmxlKGFzQmlnSW50KHYyKSwgbnVtYmVyVmFsdWUpOwogICAgIGlmIChjb21wYXJp
c29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQogICAgICAgICBy
ZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6R3Jl
YXRlclRoYW47Ci0KICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0lu
dDo6Q29tcGFyaXNvblJlc3VsdDo6RXF1YWw7CisKKwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
dG9QcmltaXRpdmVOdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
diwgSlNWYWx1ZSYgcCwgZG91YmxlJiBuKQpAQCAtMzU3LDcgKzM3Nyw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBqc0xlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogCi0gICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CisgICAgaWYgKHdh
c05vdFN0cmluZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAgICAgICBpZiAocDEuaXNCaWdJbnQo
KSB8fCBwMi5pc0JpZ0ludCgpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiaWdJbnRDb21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6Q29tcGFyaXNv
bk1vZGU6Okxlc3NUaGFuKSk7CiAKQEAgLTQwNyw3ICs0MjcsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wganNMZXNzRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MgogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAK
LSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90
U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8
IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJp
Z0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9k
ZTo6TGVzc1RoYW5PckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSArNDcyLDI1NiBAQCBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBqc0FkZE5vbk51bWJlcihnbG9iYWxPYmplY3QsIHYx
LCB2Mik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQordGVtcGxhdGU8dHlwZW5hbWUg
SGVhcEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBC
aWdJbnQzMk9wPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGFyaXRobWV0aWNCaW5hcnlPcChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmln
SW50T3BlcmF0aW9uJiYgaGVhcEJpZ0ludE9wLCBEb3VibGVPcGVyYXRpb24mJiBkb3VibGVPcCwg
QmlnSW50MzJPcCYmIGJpZ0ludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNW
YWx1ZSBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQorICAgIGlmIChs
ZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAg
ICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHRO
dW1lcmljLmFzTnVtYmVyKCkpKTsKIAotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBzdWJ0cmFjdGlvbi4iX3MpOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgaWYgKHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGJpZ0ludDMyT3AobGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAg
ICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmln
SW50LCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmlnaHROdW1l
cmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJ
bnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3Ao
Z2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgp
KSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgp
KSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAg
ICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJp
Z2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVh
cEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51
bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgp
LCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4ganNO
dW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJp
Z2h0TnVtZXJpYykpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBlcnJvck1lc3NhZ2UpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdWIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAg
ICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJs
ZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0lu
dDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyAg
ICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsKKyAg
ICAgICAgcmVzdWx0IC09IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc092
ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworICAg
IH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYy
LCBKU0JpZ0ludDo6c3ViLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBk
b3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7Cisg
ICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJp
Z2h0KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxv
dz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0ICo9IHJpZ2h0OworICAgICAgICBpZiAo
cmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVH
ZXQoKSk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIsIEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9z
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9
IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1
cm4gbGVmdCAvIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIGlmICghcmlnaHQp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCBsZWZ0IC8gcmlnaHQpOworICAgIH07CisKKyAgICByZXR1cm4g
YXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRl
LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1h
aW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsK
KyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7
CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5h
cnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3As
IGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVt
YWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAg
YXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAg
ICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cg
aW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAv
LyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRo
YXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJu
IGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9u
ZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNO
dW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworICAgIGlmIChvcGVyYW5kTnVt
ZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19j
YXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSArIDE7CisgICAg
ICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQg
ZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1Zh
bHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMy
LCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyAgICBBU1NFUlQob3Bl
cmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0RlYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFZh
cmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBWYXJpYW50
PEpTQmlnSW50KiwgZG91YmxlPiByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSAtIDEpOworICAgIGlmIChvcGVy
YW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0
YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSAtIDE7
CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJl
bmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYg
KG5ld1ZhbHVlIDwgSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0Jp
Z0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyAgICBBU1NF
UlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVh
cEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHko
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQorICAgIGlmIChvcGVyYW5kTnVt
ZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcih+b3BlcmFuZE51bWVyaWMu
YXNJbnQzMigpKTsKIAotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIG11bHRpcGxpY2F0aW9u
LiJfcyk7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSGVh
cEJpZ0ludCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50Ojpi
aXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVt
ZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CiAgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBI
ZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJ
bnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSwgYm9vbCBi
aWdJbnQzMk1heU92ZXJmbG93ID0gZmFsc2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1lcmlj
ID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmln
aHROdW1lcmljLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGludDMyT3AobGVm
dE51bWVyaWMuYXNJbnQzMigpLCByaWdodE51bWVyaWMuYXNJbnQzMigpKSk7CiAKLSAgICBkb3Vi
bGUgbGVmdFZhbHVlID0gIFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJs
ZSByaWdodFZhbHVlID0gIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICByZXR1
cm4ganNOdW1iZXIobGVmdFZhbHVlICogcmlnaHRWYWx1ZSk7CisgICAgaWYgKGxlZnROdW1lcmlj
LmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpICYmICFiaWdJbnQzMk1h
eU92ZXJmbG93KQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBp
bnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpKTsKKyAgICAvLyBGSVhNRTogYWRkIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIg
LyBIZWFwQmlnSW50LCBhbmQgZm9yIEhlYXBCaWdJbnQgLyBCaWdJbnQzMgorICAgIC8vIEluIG1h
bnkgY2FzZXMgdGhlc2UgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXAtYWxs
b2NhdGluZyB0aGUgc21hbGwgYmlnLWludCBhbmQgZ29pbmcgdGhyb3VnaCB0aGUgZ2VuZXJpYyBw
YXRoLgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMu
aXNCaWdJbnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBlcnJvck1lc3NhZ2UpOworCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0g
bGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRO
dW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOwor
ICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigp
ID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBC
aWdJbnQpKTsKIH0KIAotaW5saW5lIGJvb2wgc2NyaWJibGVGcmVlQ2VsbHMoKQorQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzTFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlv
bnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0IDw8
IChyaWdodCAmIDMxKTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IHRoaXMgaXMga2luZCBvZiBh
IGtsdWRnZSwgd2UgY3VycmVudGx5IGZvcmNlIGhlYXAtYWxsb2NhdGlvbnMgb2YgYmlnIGludHMg
d2hlbmV2ZXIgdGhleSBmbG93IGludG8gdGhpcyBvcGVyYXRpb24uCisgICAgYm9vbCBiaWdJbnQz
Mk1heU92ZXJmbG93ID0gdHJ1ZTsKKworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFs
T2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpsZWZ0U2hpZnQsIGludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIl9zLCBi
aWdJbnQzMk1heU92ZXJmbG93KTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19j
YXN0PGludHB0cl90PigweGJhZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7
CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
aW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDMxKTsKKyAgICB9Owor
CisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJ
bnQ6OnNpZ25lZFJpZ2h0U2hpZnQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworfQogCi1p
bmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNCaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkg
PT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7
CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
aW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8v
IEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwg
ZG8gdGhlICJhbmQiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJl
Y3RseSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3Mp
OwogfQogCi1pbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSBzaXpl
IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgewotICAgICAgICAvLyBVc2UgYSAxNi1i
eXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNr
LgotICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1
ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAgfQor
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0OworICAgIH07CisKKyAgICAvLyBG
SVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRv
IHRoZSAib3IiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3Rs
eSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVj
dCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZU9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKK30K
KworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICBy
ZXR1cm4gbGVmdCBeIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBm
b3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAieG9yIiBhbmQgcmUt
Ym94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUs
IGFuZCBqdXN0IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGggMHgxMiBhdCB0aGUgZW5kIHRvIHJl
c3RvcmUgdGhlIHRhZworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAK
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi40NzdlNjVhNzA0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lu
bGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAgICByZXR1cm4gQVNTRVJUX0VOQUJM
RUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKK30KKworI2RlZmluZSBTQ1JJQkJM
RV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorCitpbmxpbmUgYm9vbCBp
c1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJ
QkJMRV9XT1JEKSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVf
dCBzaXplKQoreworICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKTsgaS0tOykgeworICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8g
ZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgorICAgICAgICBzdGF0aWNfY2Fz
dDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2Fz
dDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggMGNkOThkNTJh
Y2MuLjk3NzA5ZWU2ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNzksNyArMjc5LDcgQEAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamUKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBl
KQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKICAgICAK
LSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQorICAg
IGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQogICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKIAogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391448</attachid>
            <date>2020-02-21 20:03:20 -0800</date>
            <delta_ts>2020-02-25 18:24:35 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>303306</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zYjU2Yzg1OGIy
OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCkBAIC0xNCw3ICsxNCw3IEBAIGFzc2Vy
dC5zYW1lVmFsdWUgPSBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiB9CiAK
IGZ1bmN0aW9uIHRlc3REaXYoeCwgeSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAvIHks
IHosIHggKyAiIC8gIiArIHkgKyAiID0gIiArIHopOworICAgIGFzc2VydC5zYW1lVmFsdWUoeCAv
IHksIHosIHggKyAiIC8gIiArIHkgKyAiID0gIiArICh4L3kpICsgIiBidXQgc2hvdWxkIGJlICIg
KyB6KTsKIH0KIAogdGVzdERpdigweEZFRENCQTk4NzY1NDMyMTBuLCAweEZFRENCQTk4NzY1NDMy
MTBuLCAweDFuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlm
dC13cmFwcGVkLXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdy
YXBwZWQtdmFsdWUuanMKaW5kZXggYzY5ZGJkYTMzZDMuLmY4MTJiMWNiYTQxIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwpAQCAt
Myw3ICszLDcgQEAKIGFzc2VydCA9IHsKICAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihtZXNzYWdlICsgIiBpbnB1dDogIiArIGlucHV0ICsgIiAhPSBleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWxvZ2ljYWwtbm90LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5q
cwppbmRleCBhZjI4YTcyYjFjMy4uZDAyZTU1MmY5YzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
b2dpY2FsLW5vdC5qcwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5CaWdJbnRFbmFibGVkCiAKLWZ1
bmN0aW9uIGFzc2VydChhLCBlKSB7CitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbikgewogICAgIGlm
IChhICE9PSBlKSB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBsb2dpY2FsIG5lZ2F0aW9uIGZvciAiICsgbik7CiAgICAgfQog
fQogCkBAIC0xMiw5ICsxMiw5IEBAIGZ1bmN0aW9uIGxvZ2ljYWxOb3QoYSkgewogbm9JbmxpbmUo
bG9naWNhbE5vdCk7CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICBh
c3NlcnQobG9naWNhbE5vdCgxMG4pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgtMW4pLCBmYWxzZSk7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFs
c2UsIDEwbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSwgMW4pOworICAgIGFz
c2VydChsb2dpY2FsTm90KDBuKSwgdHJ1ZSwgMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KC0x
biksIGZhbHNlLCAtMW4pOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNo
aWZ0LWdlbmVyYWwuanMKaW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2
MiBAQAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVm
dCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0Owor
ICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIg
KyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQg
ZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9u
IChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVk
KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIx
MDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwg
M24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4
MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEy
OG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAg
dGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4s
IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJu
LCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRl
c3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwg
LTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFu
LCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwg
LTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RS
aWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0
biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAw
MDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAx
MjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdo
dFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwg
LTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAw
biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBi
MTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0y
biwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAw
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAx
biA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAx
biA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBi
MTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAi
MG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAi
MG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0
Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZu
ID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4s
IDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjlu
ID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAw
MDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgK
LSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgy
NDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
MTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1
Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4
MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAt
M24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0y
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0x
biA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICIt
MW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0w
eDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0w
eDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwg
Ii0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4
MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAi
LTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+
PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwK
LSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09
PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
LTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4g
PT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAot
ICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0g
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRu
LAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24g
PT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1
N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKaW5kZXggMDQzYTc2MDdh
NGYuLjhlOTZjZjQ0Mjg5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0
cmljdC1lcXVhbGl0eS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1l
cXVhbGl0eS5qcwpAQCAtMzAsNiArMzAsNiBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
KytpKSB7CiAgICAgdmFyIHJlc3VsdCA9IGZvbyhhcnJheSwgYXJyYXkyW2luZGV4XSk7CiAgICAg
dmFyIGV4cGVjdGVkID0gaW5kZXggPj0gYXJyYXkubGVuZ3RoID8gbnVsbCA6IGluZGV4CiAgICAg
aWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dDogIiArIHJlc3VsdDsKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGFmNDJjMmFlOGZlLi42NWNlZjRlODBkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg2Niw2ICs4NjYsNyBAQAogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2
NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJh
dGlvblNjb3BlLmggKi87IH07CiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQw
OTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmln
aW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkz
MzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBT
Y3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1
RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkzM0E5MjBCRDIz
REEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYw
IC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzM0IyQTU0NzIyNjUzNDgxMDA1QTBGNzkgLyogQjNWYWx1
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1ZhbHVlSW5saW5lcy5oICovOyB9OwpAQCAt
MzUwNiw2ICszNTA3LDcgQEAKIAkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURU
YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4
QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMEE1RjQwM0Yx
MUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVyZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMz
NzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9u
VHJlZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVz
c2lvblRyZWVzLmNwcDsgcGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25U
cmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYw
MEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBi
My9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzM5NUM3MDQyMjU1NUY2QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVh
ZENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9CM0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NDAsNiArNzU0Miw3IEBACiAJCQkJMEZFMDUwMjAx
QUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggKi8sCiAJCQkJMEZFMDUw
MjExQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmNwcCAqLywKIAkJCQkwRkUwNTAyMjFB
QTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCAqLywKKwkJCQkzMzExMUI4QTIzOTcyNTY1
MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLywKIAkJCQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEg
LyogU2NyaXB0RXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxQ0QxREMwMkQ3OTAwQUEyOUJB
IC8qIFNjcmlwdEV4ZWN1dGFibGUuaCAqLywKIAkJCQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1Qjcg
LyogU2NyaXB0RmV0Y2hlci5oICovLApAQCAtODkwNCw2ICs4OTA3LDcgQEAKIAkJCQkwRkVDODU5
MTFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3Bl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzVBMDYzMjAwRDI2MUYw
MDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzBDQjVFMUZDRTRF
MzcwMDRCNTMyMyAvKiBBbGxvY2F0b3JGb3JNb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IGMxMDAyNDA0
ZWY2Li4zNTc4NjgzYjU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCkBAIC00Njk4LDcgKzQ2OTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCi0gICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91
bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1p
dHRlZC4KKyAgICAgICAgLy8gQW4gaW1tZWRpYXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBh
cHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0dGVkLgogICAgICAgICAvLyBUaGUg
d3JpdGVzIGFyZSB1bmNoZWNrZWQgc2luY2UgdGhlIG9wY29kZSBmb3JtYXR0ZXJzIGFib3ZlIHdp
bGwgaGF2ZSBlbnN1cmVkIHNwYWNlLgogCiAgICAgICAgIHZvaWQgaW1tZWRpYXRlOChpbnQgaW1t
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApp
bmRleCBmZWE2Njc0NWI2Mi4uNzU3NjExMjFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KEND
YWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUp
Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hv
dWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlm
ICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYm
ICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAt
NDgsOSArNDgsMTcgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2Vy
dmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5s
aW5rKCZqaXQpOwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0IG5vdEJpZ0ludDMyOworICAgIGppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5h
cHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIubGluaygmaml0KTsKKyNlbmRpZgor
CiAgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChyZWdzLCBtb2RlKSk7
Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90QmlnSW50KHJlZ3MucGF5bG9h
ZEdQUigpKSk7Ci0gICAgZW1pdFNldEJpZ0ludChqaXQpOworICAgIG5vbk51bWVyaWMuYXBwZW5k
KGppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBlbWl0
U2V0SGVhcEJpZ0ludChqaXQpOwogICAgIGRvbmUuYXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAg
bm9uTnVtZXJpYy5saW5rKCZqaXQpOwpAQCAtODgsMTkgKzk2LDM1IEBAIHZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci1ib29sIEFyaXRoUHJv
ZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK2Jvb2wgQXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0Cit7
CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAg
IHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Qml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1p
dFNldEhlYXBCaWdJbnQoKSBjb25zdAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2
ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3Vs
dHM6OkhlYXBCaWdJbnQ7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQog
CisjaWYgVVNFKEpTVkFMVUU2NCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVh
cEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNl
dEJpZ0ludCgpKQotICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVz
dWx0czo6QmlnSW50KTsKKyAgICBpZiAoc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAg
ICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0
Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigpKQorICAgICAgICBlbWl0VW5jb25k
aXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOworfQorI2VuZGlmCisK
IHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVs
ZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzMsMTIgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkKICAg
ICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAgICAg
ICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlk
T2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiQmln
SW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVIZWFwQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFwQmlnSW50Iik7CisgICAgICAgICAg
ICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2Jz
ZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJ
bnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDZh
ZGQxYTI2YjBhLi5iMWVmOGY0ZTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAg
Tm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEg
PDwgMywKICAgICAgICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50
ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwK
KyAgICAgICAgQmlnSW50MzIgICAgICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0g
ZGVmYXVsdDsKICAgICBleHBsaWNpdCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAg
ICAgICA6IG1fYml0cyhiaXRzKQogICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50
MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUg
fCBOb25OdW1lcmljIHwgQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkg
eyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9u
TnVtZXJpYyB8IEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVE
b3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3Vi
bGUpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1f
Yml0cyAmIE5vbk5lZ1plcm9Eb3VibGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91
YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZU5vbk51bWVyaWMoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9v
bCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9v
bCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJ
bnQzMik7IH0KKyAgICBib29sIGRpZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRz
ICYgSGVhcEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4g
bV9iaXRzICYgQmlnSW50MzI7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
eyByZXR1cm4gbV9iaXRzICYgSW50MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDUyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEw
OSwxMyArMTEyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91Ymxl
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3Vi
bGUoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBv
YnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRP
YnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2
ZUJpZ0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0
dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29s
IGRpZE9ic2VydmVCaWdJbnQzMigpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRp
ZE9ic2VydmVCaWdJbnQzMigpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCk7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
b2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9p
ZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6
Ok5vbk5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBz
ZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVy
aWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVz
dWx0czo6QmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRC
aWdJbnQzMigpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9p
ZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Oklu
dDMyT3ZlcmZsb3cpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNl
dEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMs
MTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50
MzJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVz
dWx0czo6Tm9uTmVnWmVyb0RvdWJsZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFs
dWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6
QmlnSW50OworICAgICAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBt
X2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsK
KyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVz
dWx0czo6Tm9uTnVtZXJpYzsKQEAgLTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoSklUKQogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9u
TmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJs
ZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVt
aXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNN
b2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2Fs
bEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUg
PSBIYXZlVGFnUmVnaXN0ZXJzKTsKIAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1
Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wg
c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2Fs
bEhlbHBlcnMmKSBjb25zdDsKIAotICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1p
dFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0
U2V0Tm9uTnVtZXJpYygpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVt
aXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0
QmlnSW50KCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBlcnMm
KSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
KworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgp
IGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkgY29uc3Q7CisjZW5kaWYK
IAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRU
eXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtMTc1LDcgKzE4OCw3IEBAIHVz
aW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OwogY2xhc3MgVW5hcnlBcml0aFBy
b2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNlcnZl
ZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFy
aXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUgdW5k
ZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJv
ZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcg
Yml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJv
ZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3LDcg
KzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09i
c2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05l
ZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQg
Zml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBl
U2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5
QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0aGUgdW5kZXJseWluZyB0eXBl
LiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNP
YnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7
CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVk
VHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lhbEZhc3RQYXRoQml0KSA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+Y2xl
YXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJz
ZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCA5MWVlZmEwMDk4ZS4uM2MwZWNmY2YyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01OSw3ICs1OSw2
IEBACiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRNYXRoSUMuaCIKLSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKaW5kZXgg
MzJmNTg4ZGJmZjYuLmY3ZWIyYWFhYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EYXRhRm9ybWF0LmgKQEAgLTQ0LDEyICs0NCwxNCBAQCBlbnVtIERhdGFGb3JtYXQgOiB1
aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUsCiAgICAgRGF0YUZvcm1hdENlbGwg
PSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAgICBEYXRhRm9ybWF0SlMgPSA4LAor
ICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0YUZvcm1hdEpTID0gMTYsCiAgICAg
RGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAgICAg
RGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwKICAg
ICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdENlbGwsCiAgICAg
RGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCb29sZWFuLAot
ICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRpbmFyeSBkYXRhIGZv
cm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9ybWF0T1NSTWFya2Vy
ID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcwMWMzMzA4
OWI5Li44ODgyZGIwNjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhl
bHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKK3ZvaWQgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVl
UmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKSBjb25zdAog
ewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBOb25lOgpAQCAtNjcsMTIgKzY3LDEy
IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKEND
YWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFVu
YXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1p
dE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBH
UFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBCaW5hcnlBcml0
aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2Vy
dmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICB1LmJp
bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBt
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAppbmRleCBlOGI2NWVhZDQ2ZS4uNTMzOTJjNjI1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaApAQCAtODMsNyArODMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lk
IGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAg
Ly8gVGhlIHRlbXBvcmFyeSByZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxk
cyAoZm9yIHRlc3RpbmcgQmlnSW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxs
SGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9
IEhhdmVUYWdSZWdpc3RlcnMpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcAppbmRleCAxMDUzYmE1MmI1NC4uMWI4YzY5MTNjYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMjM5
LDExICsyMzksNiBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFt
LCBTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHN0ck91dC5wcmludCgiU3ltYm9s
Iik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0KLSAgICAgICAg
aWYgKHZhbHVlICYgU3BlY0JpZ0ludCkKLSAgICAgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAg
IAogICAgIGlmICh2YWx1ZSA9PSBTcGVjSW50MzJPbmx5KQpAQCAtMjc4LDcgKzI3MywyMSBAQCB2
b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9
Ci0gICAgCisKKyAgICBpZiAoKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkKKyAg
ICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0JpZ0ludDMyKQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlm
ICh2YWx1ZSAmIFNwZWNIZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFw
QmlnSW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAg
fQorCiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUltcHVyZU5hTikKICAgICAgICAgc3RyT3V0
LnByaW50KCJEb3VibGVJbXB1cmVOYU4iKTsKICAgICAKQEAgLTQzMSw3ICs0NDAsNyBAQCBTcGVj
dWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8pCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwogICAgIAogICAgIGlmIChjbGFzc0lu
Zm8gPT0gSlNCaWdJbnQ6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAg
ICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNGaW5h
bE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4gU3BlY0ZpbmFsT2JqZWN0OwpAQCAtNDk5
LDggKzUwOCw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgaWYgKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlwZSkKICAgICAgICAgcmV0dXJu
IFNwZWNTeW1ib2w7Ci0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmln
SW50VHlwZSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgaWYgKHN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUpCisgICAgICAgIHJldHVybiBTcGVj
SGVhcEJpZ0ludDsKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBEZXJp
dmVkQXJyYXlUeXBlKQogICAgICAgICByZXR1cm4gU3BlY0Rlcml2ZWRBcnJheTsKICAgICByZXR1
cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwpAQCAt
NTM2LDYgKzU0NSw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFs
dWUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3BlY0FueUludEFzRG91YmxlOwogICAgICAg
ICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwogICAgIH0KKyAgICBpZiAodmFsdWUuaXNCaWdJ
bnQzMigpKQorICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDMyOwogICAgIGlmICh2YWx1ZS5pc0Nl
bGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNlbGwodmFsdWUuYXNDZWxsKCkp
OwogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKQEAgLTU5NSw4ICs2MDYsOCBAQCBPcHRpb25h
bDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBjYXNlIFN5bWJvbFR5cGU6CiAgICAgICAgIHJl
dHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50VHlwZToKLSAgICAgICAgcmV0dXJuIFNw
ZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50VHlwZToKKyAgICAgICAgcmV0dXJuIFNwZWNI
ZWFwQmlnSW50OwogICAgIGNhc2UgQXJyYXlUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0FycmF5
OwogICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAgLTYzMiw2ICs2NDMsMTAgQEAgU3BlY3Vs
YXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMo
U3BlY3VsYXRlZFR5cGUgdHkKIAogICAgIGlmICh0eXBlICYgU3BlY1N0cmluZykKICAgICAgICAg
dHlwZSB8PSBTcGVjU3RyaW5nOworCisgICAgaWYgKHR5cGUgJiBTcGVjQmlnSW50KQorICAgICAg
ICB0eXBlIHw9IFNwZWNCaWdJbnQ7CisKICAgICByZXR1cm4gdHlwZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2
NDgyZC4uMDc1NWRhZTY2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC05OCwxMiArOTgsMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PAogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhl
ciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3Bl
Y01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090
aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZp
bmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVt
cHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jp
Z0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Rh
dGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCaWdJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBzbWFsbCBCaWdJbnQgdGhhdCBpcyBpbmxpbmUgdGhlIEpTVmFsdWUKK3N0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAgICAgICAg
ICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludCB0aGF0
IGlzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JpZ0ludDMyIHwg
U3BlY0hlYXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRh
Vmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
UHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1i
b2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3Mg
YW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8
IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJl
Y3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNw
ZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3Bl
Y01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFr
U2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmpl
Y3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5n
IGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNP
YmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmln
SW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2Vs
bCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRo
ZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFO
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwg
U3BlY0NlbGxPdGhlciB8IFNwZWNIZWFwQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNwZWNCeXRlY29k
ZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0
IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3Zl
LCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJl
c3BvbmRzIHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNCeXRlY29kZVRvcCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJdCBjYW4gYmUg
YW55dGhpbmcgdGhhdCBieXRlY29kZSBjb3VsZCBzZWUgcGx1cyBleG90aWMgZW5jb2RpbmdzIG9m
IG51bWJlcnMuCiAKQEAgLTE4NSw5ICsxODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1N5
bWJvbDsKIH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisKK2lu
bGluZSBib29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSGVhcEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wg
aXNCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY0JpZ0ludDsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVj
QmlnSW50KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBmYTNhYmJkMTFhZC4uZTcz
NGFmMzY3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjY2LDExICsxNjY2LDEyIEBAIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYzEsIFJlCiAgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1p
dCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJp
Z0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7CisgICAgICAgICAgICAvKmlmIChPcHRpb25z
Ojp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgewogICAgICAgICAgICAgICAgIHJl
d2luZCgpOwogICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0
LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0qLworICAgICAgICAgICAgLy8gRklYTUU6IGFk
ZCBhIGNhc2UgZm9yIEJpZ0ludC4gSXQgd2lsbCBwcm9iYWJseSByZXF1aXJlIGFkZGluZyBhIG5l
dyBPcElzQmlnSW50IG9wY29kZSwgbm93IHRoYXQgd2UgaGF2ZSBib3RoIEJpZ0ludDMyIGFuZCBI
ZWFwQmlnSW50IChzbyBPcElzQ2VsbFdpdGhUeXBlIGNhbm5vdCBiZSB1c2VkKS4KICAgICAgICAg
ICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwog
ICAgICAgICAgICAgICAgIE9wSXNPYmplY3RPck51bGw6OmVtaXQodGhpcywgZHN0LCBvcC5tX3Zh
bHVlKTsKQEAgLTI4NzYsNyArMjg3Nyw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ4CiAgICAg
cmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwo
KSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWduID8gSlNCaWdJ
bnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWdu
ZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChu
dWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9y
UGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAgICAgIEpTVmFs
dWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRp
Zmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNl
cHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDI5ODkzNzQwYTg1Li4wYTAwM2I4ZjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA4OSw3ICsx
MDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFz
aE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFw
ID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhh
c2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRN
YXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9
IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFzaE1hcDx1aW50
NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8dWludDY0X3Q+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNi4uYTJiNmU2ZWIxYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKQEAg
LTIxNCw3ICsyMTMsNyBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShW
TSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJgogICAgICAgICBib29sIG92
ZXJyaWRlc1RvVGhpcyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUu
Zm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAg
IFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7Ci0gICAgICAgICAgICBBU1NF
UlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50
eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKKyAgICAg
ICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlw
ZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBCaWdJ
bnRUeXBlKTsKICAgICAgICAgICAgIGlmICghaXNTdHJpY3RNb2RlKQogICAgICAgICAgICAgICAg
IEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBlaXRoZXI6CkBAIC01MDIs
NyArNTAxLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmln
SW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTUzMiw3ICs1MzUsMTIgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50QmluYXJ5Qml0
d2lzZU9wKG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBv
ZiBiaW5hcnlVc2VLaW5kIG1lYW5zIHRoYXQgd2UgY2Fubm90IHNwZWNpYWxpemUgdG8gKGZvciBl
eGFtcGxlKSBhIEhlYXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9w
ZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOworICAgICAg
ICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAg
ICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxz
ZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAg
IHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNzIyLDExICs3MzAsMTQgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKIAogICAgIGNhc2UgVmFsdWVTdWI6CiAgICAgY2FzZSBWYWx1ZUFkZDogewot
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAg
ICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNC
aWdJbnQpOwogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAg
Y2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5lZWQg
U3BlY1N0cmluZyBoZXJlIGZvciBWYWx1ZVN1Yj8gSXQgc2VlbXMgbGlrZSB3ZSBvbmx5IG5lZWQg
aXQgZm9yIFZhbHVlQWRkLgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY1N0
cmluZyB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwpAQCAtODg2LDYgKzg5Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgfQogICAgICAgICAKICAgICBjYXNlIFZhbHVlTmVnYXRlOiB7CisgICAgICAgIC8vIEZJWE1F
OiB3ZSBjb3VsZCBkbyBtdWNoIHNtYXJ0ZXIgdGhpbmdzIGZvciBCaWdJbnRzLCBzZWUgVmFsdWVB
ZGQvVmFsdWVTdWIuCiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBzZXRUeXBlRm9y
Tm9kZShub2RlLCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgYnJl
YWs7CkBAIC05NTgsNyArOTcwLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5v
ZGUsIHR5cGVPZkRvdWJsZUluY09yRGVjKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBj
YXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
SGVhcEJpZ0ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRV
c2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgpAQCAtOTc0LDcgKzk5MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEpT
VmFsdWUgY2hpbGRZID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKICAgICAgICAg
aWYgKGNoaWxkWCAmJiBjaGlsZFkgJiYgY2hpbGRYLmlzTnVtYmVyKCkgJiYgY2hpbGRZLmlzTnVt
YmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBgZGlkRm9sZENsb2JiZXJX
b3JsZGAgaGVyZSBiZWNhdXNlIHRoaXMgcGF0aCBpcyBvbmx5IHBvc3NpYmxlCi0gICAgICAgICAg
ICAvLyB3aGVuIG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQmln
SW50VXNlLCBjaGlsZHJlbiB3aWxsIGJlCisgICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtp
bmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQW55QmlnSW50VXNlIG9yIGZyaWVuZHMs
IGNoaWxkcmVuIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkgYEFic3RyYWN0SW50
ZXJwcmV0ZXI6OmV4ZWN1dGVFZmZlY3RzYC4KICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29y
bGQoKTsKICAgICAgICAgICAgIC8vIE91ciBib3hpbmcgc2NoZW1lIGhlcmUgbWF0Y2hlcyB3aGF0
IHdlIGRvIGluIG9wZXJhdGlvblZhbHVlUG93LgpAQCAtOTgyLDcgKzk5OCw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTIs
NyArMTAxMCwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2Ug
VmFsdWVNdWw6IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpCisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBW
YWx1ZVN1Yj8KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGNsb2JiZXJXb3JsZCgpOwpAQCAtMTA1Niw3ICsxMDc3LDkgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVz
ZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQor
ICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAg
ICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2Ji
ZXJXb3JsZCgpOwpAQCAtMTkzNiwxMyArMTk1OSwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0
aGlzIGNoZWNrIGhlcmUsIGFuZCBub3QgbGF0ZXIgKGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxh
Y2VtZW50cyBieSBmYWxzZS90cnVlKS4KICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyBjb25k
aXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlNDLgotICAgICAgICAgICAgYXV0byBp
c05vblN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygp
OworICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10g
KEpTVmFsdWUgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUu
aXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwog
ICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50
KGxlZnQpIHx8IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KHJpZ2h0KSkgeworICAgICAgICAgICAg
aWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25TdHJpbmdP
ckJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAgICAgICAgICAgICBtX3N0YXRlLnNl
dFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAgICAgICAgICAgICAgICBzZXROb25D
ZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTk2NCw3ICsxOTg4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8CiAgICAgICAg
ICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKICAgICAgICAgICAg
ICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAg
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fAorICAgICAgICAg
ICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fCAvLyBG
SVhNRTogSSBhbSBjb25mdXNlZCwgaG93IGNhbiB3ZSBldmVyIGhhdmUgdHdvIGRpZmZlcmVudCB1
c2Uga2luZHMsIHdoZW4gdGhleSBhcmUgbGl0dGVyYWxseSB0aGUgc2FtZSBjaGlsZD8KICAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkgfHwK
ICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UsIE5v
dFN0cmluZ1ZhclVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
Tm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIzMThmZTAzYWUuLmFmZTg2NGEzZGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMjYwLDcgKzI2MCw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2Ug
VmFsdWVCaXROb3Q6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmln
SW50VXNlKSB7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55Qmln
SW50VXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICAgICAgZGVm
KFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY4
NSw3ICs2ODUsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBj
b25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEludDMy
VXNlOgogICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6Cisg
ICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAg
ICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBVbnR5cGVkVXNlOgpAQCAtNzA3LDcgKzcwOSw4IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBWYWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0TFNoaWZ0Ogog
ICAgIGNhc2UgVmFsdWVCaXRSU2hpZnQ6Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50VXNlKSkgeworICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2Ygc2luZ2xlLWFy
Z3VtZW50IGlzQmluYXJ5VXNlS2luZCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gc3BlY2lhbGl6aW5n
IChmb3IgZXhhbXBsZSkgZm9yIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50
MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlC
aWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCBiNDNmN2NmNTRlMS4uYWM2ODM0MzMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlz
IGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVl
IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUu
aXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZh
bHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAgICAg
ICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2Vs
bENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjLi43Y2E0YjFiNWFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRG
R0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUu
aCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggN2ZmYTM4ZTY2ZDIuLmJkODIwYWMwMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTIwMSwxNCArMjAxLDIyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVh
ciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCBy
ZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9w
KG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOwotICAgICAgICAgICAgICAgIG5vZGVD
b25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNw
ZWNCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXpl
KHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9kZUNv
bnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3Bl
Y0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJl
ZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIC8v
IEJpZ0ludHMgYXJlIGN1cnJlbnRseSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3Vs
dEpTIGlzIGdvb2QgaGVyZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRzIGFyZSBjdXJy
ZW50bHkgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1
ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50MzIsIEpTQ29u
c3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0
Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVs
dCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3Ig
c21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dE9wKG9wID09IEluYyA/IEFyaXRoQWRkIDogQXJpdGhTdWIpOwogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CkBAIC0yMzQsOSArMjQyLDE1
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGls
ZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hp
bGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJp
Z0ludFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTI2Nyw4ICsyODEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOiB7CiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
QmlnSW50MzIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVh
cEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTIsNyArMzM0LDEyIEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4ob3BlcmFu
ZEVkZ2UpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJV
c2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcGVyYW5kRWRnZS5u
b2RlKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ob3BlcmFuZEVkZ2Up
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1
bGF0ZVVudHlwZWRGb3JCaXRPcHMoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRV
c2U+KG9wZXJhbmRFZGdlKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtNDU3LDkgKzQ4NCwxNSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIu
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAg
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQxKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihjaGlsZDIpOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2Rl
KCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hp
bGQyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50
KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJ
bnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlw
ZWRVc2U+KGNoaWxkMik7CkBAIC01NDUsOCArNTc4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihsZWZ0
Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5ub2Rl
KCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTU4OCw4ICs2MjksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxk
U3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAg
ICAgICB9CkBAIC02NTcsOCArNjk4LDE2IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBWYWx1
ZVBvdzogewogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0lu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMjg2Niw3ICsyOTE1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmln
SW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
QmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI5MzksNyArMjk5MywxMiBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIHByZWRpY3Rpb24gb2YgdGhlIGNoaWxkIGlzIEJp
Z0ludCwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0IFRvTnVtZXJpYyB0byBJZGVudGl0eSwgc2luY2Ug
aXQgY2FuIG9ubHkgcmV0dXJuIGEgQmlnSW50IHdoZW4gZmVkIGEgQmlnSW50LgogICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MTksMTMgKzM0NzgsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAg
ICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAg
ICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGlmIChhbHdheXNV
bmJveFNpbXBsZVByaW1pdGl2ZXMoKQogICAgICAgICAgICAgICAgIHx8IGlzQ2VsbFNwZWN1bGF0
aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJp
bGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogd2hhdCBzaG91bGQgd2UgZG8g
YWJvdXQgQmlnSW50MzJVc2UgYW5kIEFueUJpZ0ludFVzZSA/CisgICAgICAgIC8vIEFsc28gbW9y
ZSBicm9hZGx5LCB3aGF0IGFib3V0IGFsbCBvZiB0aGUgVXNlS2luZHMgd2hpY2ggYXJlIG5vdCBs
aXN0ZWQgaW4gdGhhdCBzd2l0Y2g/CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzkzNSw5ICszOTk2LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVC
aWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
KyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5
Mjg4MTBlMTAxLi5mODE3MGQ5MmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNs
dWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMzQ1NWI1YzI5Zi4uZGYyMzQ0ZTVk
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yNTQyLDYgKzI1NDIsMTYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gaXNTeW1ib2xTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOwogICAgIH0KICAgICAKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0JpZ0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsK
KyAgICB9CisgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwor
ICAgIH0KKyAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gaXNCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwpAQCAtMjc0MSw3
ICsyNzUxLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCk7CiAgICAgfQot
ICAgIAorCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoTm9kZSogb3Ax
LCBOb2RlKiBvcDIpCisgICAgeworICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVC
aWdJbnQzMigpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSog
b3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0lu
dCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0
YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCA4MzRiNjg3MDExMy4uZTFkODVlOWRlYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMzgzLDEwICszODMs
MTQgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZt
LCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0
IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgbnVtYmVy
VGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVz
dG9yZSBpdC4KICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAg
ICAgLy8gV2UgYWxzbyB1c2UgdGhlIG5vdENlbGxNYXNrUmVnaXN0ZXIgYXMgdGhlIHNjcmF0Y2gg
cmVnaXN0ZXIsIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IGZpbmQgYSBsZXNzIGdyb3NzIHdheSBvZiBkb2luZyB0aGlzLCBtYXliZSB0aHJvdWdoIGRlbGF5
aW5nIHRoZXNlIG9wZXJhdGlvbnMgdW50aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21lIHNwYXJlIHJl
Z2lzdGVycyBhcm91bmQ/CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciksIEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAg
ICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVy
VGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhl
eGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQu
bV9qc1ZhbHVlU291cmNlLmdwcigpKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9O
b3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSwgR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAg
ICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgpAQCAtMzk4
LDcgKzQwMiw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQs
IFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyBzY3JhdGNoKHNjcmF0Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNl
LmFzQWRkcmVzcygpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgc2NyYXRjaCwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAg
ICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKQEAgLTQwNywxMCArNDExLDEw
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2
ZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1Zh
bHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCB2YWx1ZSwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgaml0LnBv
cFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVn
cygpKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQu
bV9qc1ZhbHVlU291cmNlLnJlZ3MoKSwgSW52YWxpZEdQUlJlZyk7CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZGI5YzlkNzY3Li4yODkzYTFkY2ZlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC04Niw3ICs4Niw2IEBA
CiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIK
ICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
I2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yMjEsNTYgKzIyMCw2IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0V2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxP
YmplY3QsIGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJp
Z0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgTnVtYmVyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgYmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwgTnVtYmVyT3BlcmF0aW9uJiYgbnVt
YmVyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAgIH0KLQotICAgIHNjb3BlLnJl
bGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobnVtYmVyT3Ao
V1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1l
cmljKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFt
ZSBJbnQzMk9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJp
dHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9w
ZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIq
IGVycm9yTWVzc2FnZSkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAg
ICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSBvcDIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW50MzJPcChXVEY6Omdl
dDxpbnQzMl90PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykp
KSk7Ci19Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHBhcnNlSW50UmVz
dWx0KGRvdWJsZSBpbnB1dCkKIHsKICAgICBpbnQgYXNJbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGlu
cHV0KTsKQEAgLTQ3MCw3MSArNDE5LDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNb2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAg
fTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkg
LT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGpzTW9kKGxlZnQsIHJpZ2h0KTsKLSAgICB9Owot
Ci0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9
IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBX
VEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1lcmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHZhbHVlICsgMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNJ
bmMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotCi0gICAgYXV0byBvcGVy
YW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6ZGVjKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICBkb3Vi
bGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1lcmljKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlIC0gMSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEZWMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0Tm90
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKTsKIAotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIofldURjo6Z2V0PGludDMyX3Q+KG9wZXJhbmROdW1lcmljKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTQzLDE1
ICs0NTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3Ag
PSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmln
SW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3
aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGlu
dDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAg
ICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VC
aW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRP
cCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3
aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
aXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01
NjAsMTUgKzQ2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmln
SW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQs
IEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1
dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qg
ewotICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0
d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJp
Z0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGlu
IGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpA
QCAtNTc3LDE1ICs0NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8g
YmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxl
ZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpiaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAg
ICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQz
Ml90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJu
IGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3Ay
LCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKQpAQCAtNTk0LDE1ICs0ODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
LSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAg
IH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPDwgKHJpZ2h0ICYgMHgxZik7Ci0g
ICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5j
b2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTFNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjExLDE1ICs0OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7
Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3Qs
IGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0ID4+
IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGds
b2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBz
aGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUlNoaWZ0
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUJpdFVSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY1Nywx
NSArNTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURp
dihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmRp
dmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1i
ZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAg
ICByZXR1cm4gbGVmdCAvIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xv
YmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uIG9wZXJh
dGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRGl2KGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjc0LDE1ICs1MzgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmln
SW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJs
ZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBvcGVyYXRp
b25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGds
b2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlv
biBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUG93KGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpKTsKIH0KIAogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhBYnMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkK
QEAgLTE0NzksNyArMTMzNSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4
cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCByZWdleHAtPnRlc3QoZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOwog
fQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTQ5MSw3ICsxMzQ3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAg
ICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9w
ZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxKQorSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBvcDEpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE1MDIsNyArMTM1OCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgcmV0dXJuIEpT
QmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0x
NTE0LDcgKzEzNzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0Jp
Z0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KICAgICAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xNTI2LDcgKzEzODIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
bwogICAgIHJldHVybiBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJh
bmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25E
aXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTM4LDcgKzEzOTQsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVj
dCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hl
YXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTUwLDcgKzE0MDYs
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25l
bnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xNTYyLDcgKzE0MTgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAg
IHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCBy
aWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNo
aWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU3NCw3ICsxNDMwLDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChn
bG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU4
Niw3ICsxNDQyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmFkZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTU5OCw3ICsxNDU0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckhl
YXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjEwLDcgKzE0NjYs
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lz
ZU9yKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0xNjI4LDcgKzE0ODQsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmpl
Y3QsIG9wMSwgb3AyKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhn
bG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGFyZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIpCkBAIC0xNjczLDEwICsxNTI5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW4KICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byB2YXJpYW50ID0gSlNWYWx1ZTo6ZGVjb2Rl
KHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHZhcmlhbnQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFdURjo6Z2V0PEpTQmlnSW50Kj4odmFyaWFudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPih2YXJpYW50KSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlW
YWxXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CmluZGV4IDBmMWM4NzU0Y2Q2Li43YzEyZjBjMjAwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBP
YmplY3QqLCBKCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEpTR2xv
YmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKLUpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkhlYXBC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhl
YXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9J
TlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwg
U3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVu
Z3RoLCB1aW50MzJfdCBtaW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4
ODg1OGIzOGMxLi40M2JmYzZjZDYxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUzMyw2
ICs1MzMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50MzIpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQxNC4uNGNlNzQ1NGM1ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC03OSw3ICs3
OSw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3Ry
aW5nT3JPdGhlclVzZToKICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmln
SW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmln
SW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09i
amVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAg
Y2FzZSBOb3RTdHJpbmdWYXJVc2U6CkBAIC02NzUsMTAgKzY3NywxMCBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGJvb2wgaWdubwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2FzZSBWYWx1ZU1vZDoKICAgICBj
YXNlIFZhbHVlUG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSk7CisgICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNl
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAg
IHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlOworICAgICAgICBy
ZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEhlYXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQyYjE2MzU2ZjkuLjRhMzE1NjE4MzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMTc0NCw2ICsxNzQ0LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlQnJhbmNoKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmEKICAgICAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxl
UGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwogI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMy
QnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVJbnQ1MkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCkBAIC0zNTcwLDI0ICszNTcyLDQzIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGNoaWxkMSA9
IG5vZGUtPmNoaWxkMSgpOwogCi0gICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50VXNl
KSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBjaGlsZDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgbV9qaXQu
bW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0lu
dDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm5vdDMyKHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
RklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRp
ZgorCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CiAgICAgICAgIEdQ
UlJlZyBvcGVyYW5kR1BSID0gb3BlcmFuZC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQoY2hpbGQxLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChjaGls
ZDEsIG9wZXJhbmRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE5v
dEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBjaGlsZDEpOworICAgIEFTU0VSVChjaGlsZDEudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgfHwgY2hpbGQxLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworICAgIEpTVmFsdWVP
cGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgIHNwZWN1bGF0ZShub2RlLCBjaGlsZDEpOyAvLyBSZXF1aXJlZCBmb3IgdGhlIEFueUJpZ0lu
dFVzZSBjYXNlCiAgICAgSlNWYWx1ZVJlZ3Mgb3BlcmFuZFJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVS
ZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtMzYxNSwxMSArMzYzNiwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQml0d2lzZU5vdChOb2RlKiBub2RlKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc25p
cHBldFNsb3dQYXRoRnVuY3Rpb24+Ci12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJp
dE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55Qmln
SW50Qml0T3AoTm9kZSogbm9kZSkKIHsKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGls
ZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICBBU1NF
UlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IGxlZnRDaGlsZC51c2VLaW5k
KCkgPT0gQW55QmlnSW50VXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2Ug
fHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKTsKKwogICAgIGlmIChpc0tu
b3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRD
aGlsZC5ub2RlKCkpKSB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CkBA
IC0zNjY3LDExICszNjkwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0
T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgp
IHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXND
b25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAg
ICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFu
eUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
fQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBs
YWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdo
dFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM3MDcsNTIgKzM3MzIs
ODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0g
ICAgICAgIHN3aXRjaCAob3ApIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChsZWZ0Q2hp
bGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3Zl
KGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3dpdGNoKG9wKSB7CiAgICAgICAg
IGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgICAgICBlbWl0VW50eXBlZEJpdE9wPEpJVEJpdEFu
ZEdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRBbmQ+KG5vZGUpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRC
aXRPcDxKSVRCaXRYb3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0WG9yPihub2RlKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gvYm94OiBh
bmQgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAg
ICAgICAgICBtX2ppdC5hbmQ2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFZhbHVlQml0T3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBl
ZEJpdE9wPEpJVEJpdE9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdE9yPihub2RlKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gvYm94OiBv
ciBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAgICAg
ICAgICAgIG1faml0Lm9yNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdFhvcjoKKyAgICAgICAgICAgIC8vIFhvciByZW1v
dmVzIHRoZSB0YWcsIHNvIHdlIG11c3QgYWRkIGl0IGJhY2sgYWZ0ZXIgZG9pbmcgdGhlIG9wZXJh
dGlvbgorICAgICAgICAgICAgbV9qaXQueG9yNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICBtX2ppdC5vcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyks
IHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJp
Z2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0gICAgCi0gICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0R1BSID0g
bGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICAvLyBG
SVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlm
CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgIGlmKGxlZnRDaGlsZC51c2VLaW5k
KCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2UgVmFsdWVCaXRB
bmQ6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgorICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgorICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdEFuZEdlbmVyYXRvciwgb3BlcmF0aW9u
VmFsdWVCaXRBbmQ+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJpdFhv
cjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcDxKSVRCaXRYb3JH
ZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0WG9yPihub2RlKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRP
ckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wPEpJVEJpdE9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdE9yPihub2RlKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQotCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKQEAgLTM3OTIsNyArMzg0OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKICAgICBpbnQzMlJlc3VsdChy
ZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBl
ZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVu
dHlwZWRPckFueUJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEpfSklU
T3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiA9IG5vZGUtPm9wKCkgPT0gVmFs
dWVCaXRSU2hpZnQKICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCA6IG9wZXJhdGlv
blZhbHVlQml0VVJTaGlmdDsKQEAgLTM4MDIsNiArMzg1OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVm
dENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNo
aWxkMigpOwogCisgICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8
fCBsZWZ0Q2hpbGQudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCByaWdodENoaWxkLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSk7CisKICAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tu
b3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOwpAQCAtMzg5NiwyNyArMzk1NSwyNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGls
ZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIo
KTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAg
Ly8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVC
aWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0
R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0
Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3Is
IG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55Qmln
SW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4o
bm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChO
b2RlKiBub2RlKQpAQCAtMzkyNCwyNyArMzk4MywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBu
b2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAK
LSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhN
RTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJp
Z0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNl
S2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlw
ZWRPckFueUJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9kZSkKQEAgLTM5NTUsNyArNDAxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAo
bGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgp
ID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlm
dCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBl
bWl0VW50eXBlZE9yQW55QmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zOTg1LDE5ICs0MDQ0LDUwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUt
PmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAg
ICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJl
Z2lzdGVyLCBvciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTog
YWxzbywgbG9vayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2ll
bnQgZ2VuZXJhdGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Cisg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisK
KyAgICAgICAgbV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC51bmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3By
KCksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisg
ICAgICAgIC8vIEZJWE1FOiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBj
aGVjaworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaEFk
ZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRH
UFIpOworCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBT
cGVjdWxhdGlvblJlY292ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRv
IGFueXRoaW5nIHRvIGZyZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVz
dWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmln
SW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIo
KTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3Bl
Y3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0lu
dChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxk
LCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFkZEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CkBAIC00MDA1LDggKzQwOTUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAgaWYgKGlzS25vd25Ob3ROdW1i
ZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUo
KSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQp
OyAvLyBUaGVzZSB0d28gc3BlY3VsYXRpb25zIGFyZSByZXF1aXJlZCBmb3IgQW55QmlnSW50VXNl
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJp
Z2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTQwNDMsNDQgKzQxMzUsOTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJS
ZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwotI2Vs
c2UKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29s
IG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVm
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdl
IHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9y
aWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVy
IHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVu
Ym94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0
byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBy
ZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAg
ICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6
IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CiAjZW5kaWYKIAotICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGlu
ZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwotICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3Vi
SUMoYXJpdGhQcm9maWxlKTsKLSAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZVN1Yk9wdGltaXplOwotICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlv
biA9IG9wZXJhdGlvblZhbHVlU3ViOworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworCisgICAgICAgIHNwZWN1
bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCi0gICAgICAgIGNvbXBpbGVNYXRoSUMobm9kZSwg
c3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNoaW5n
RnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0lu
dFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOworICAgIC8vIEZJWE1F
OiB3aHkgZG8gY29tcGlsZVZhbHVlQWRkL2NvbXBpbGVWYWx1ZU11bCB1c2UgaXNLbm93bk5vdE51
bWJlciBidXQgbm90IFZhbHVlU3ViPworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBzcGVjdWxhdGVBbnlCaWdJbnQobGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlQW55Qmln
SW50KHJpZ2h0Q2hpbGQpOworICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNW
YWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1
ZVJlZ3MoKTsKIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0
R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25WYWx1ZVN1YiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
Ci0gICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgc3BlY3VsYXRl
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBib29s
IG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcg
PSBmYWxzZTsKKyNlbHNlCisgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAg
IGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKKyNlbmRpZgogCi0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TdWJCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJ
bmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxv
Y2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hpbmdGdW5j
dGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKIAotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgIGNvbXBpbGVNYXRoSUMo
bm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgcmV0dXJuOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBSZXBhdGNoaW5nRnVuY3Rp
b24sIHR5cGVuYW1lIE5vblJlcGF0Y2hpbmdGdW5jdGlvbj4KQEAgLTQ2NTAsNiArNDc5MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gSW4g
YWxsIG90aGVyIGNhc2VzIHRoZSBub2RlIHNob3VsZCBoYXZlIGJlZW4gdHJhbnNmb3JtZWQgaW50
byBhbiBhZGQgb3IgYSBzdWIgYnkgRml4dXBQaGFzZQorICAgIC8vIEZJWE1FOiBJIGRvbid0IHRo
aW5rIHRoaXMgaXMgdHJ1ZSwgd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBwYXRoIGZvciBB
bnlCaWdJbnQuCiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKIAogICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBA
IC00NjY1LDYgKzQ4MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMo
Tm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5v
ZGUqIG5vZGUpCiB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCwgYXQgbGVhc3QgZm9y
IEJpZ0ludDMyLCBidXQgcHJvYmFibHkgYWxzbyBmb3IgSGVhcEJpZ0ludCBoZXJlLgogICAgIENv
ZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJs
b2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICBVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKQEAgLTQ4NDUsMjAgKzQ5
ODgsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUp
CiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRD
aGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0g
QmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVz
ZSkgeworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUgYmV0d2VlbiBjb21waWxlVmFsdWVBZGQs
IGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29tcGlsZVZhbHVlTXVsIGZvciBCaWdJbnQzMiBpcyBuZWFy
bHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8gZ2V0IHJpZCBvZiB0aGUgZHVwbGljYXRpb24uCisgICAg
ICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBleHRyYSBy
ZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0ID8KKyAgICAgICAgLy8gRklYTUU6
IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJpY2tzIGZvciBhIG1vcmUgZWZmaWNp
ZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwor
CisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0Lmdw
cigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKKwor
ICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cg
Y2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hN
dWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0
R1BSKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHBhc3MgYW4gaW5mb3JtYXRpdmUg
U3BlY3VsYXRpb25SZWNvdmVyeT8KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgSSBk
byBhbnl0aGluZyB0byBmcmVlIHRlbXBHUFI/CisgICAgICAgIG1faml0LmJveEJpZ0ludDMyKHJl
c3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJp
Z0ludDMyL0hlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAg
ICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0
R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwg
bGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7
CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTXVsQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTUwNDcsMjkg
KzUyMjIsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAg
IC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28g
dGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBE
aXYgZ2V0cy4KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkp
IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAg
ICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRH
UFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkg
fHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hp
bGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50MzJVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJp
Z2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3Mo
KTsKIApAQCAtNTA4Myw2ICs1MjYyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFs
dWVPcGVyYW5kPiBsZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApA
QCAtNTMzMiwyOSArNTUxMywzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVN
b2QoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBh
dGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBi
ZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9
IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVj
dWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk1vZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0
aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxk
KTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRV
c2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlV
c2VLaW5kKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxl
ZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVS
ZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdz
ID0gb3AyLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4OTYsMzAg
KzYwODEsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBm
b3IgQmlnSW50MzIgZm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9m
dGVuLgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAg
ICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9
IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAg
ICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVu
dHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7
CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
cmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdz
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApA
QCAtNjA2OCw2ICs2MjU2LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSog
bm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgfQogICAg
IAogI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkpIHsKKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBjb25kaXRp
b24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVJbnQ1MkNvbXBhcmUobm9k
ZSwgY29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjA5NCw2ICs2Mjg2LDgg
QEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgICAgIGNvbXBpbGVTdHJpbmdJZGVu
dENvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
KyAgICAKKyAgICAvLyBGSVhNRTogYWRkIEhlYXBCaWdJbnQgY2FzZSBoZXJlIChhbmQgYWRkIGEg
Y29ycmVzcG9uZGluZyB0ZXN0LCB3ZSBzaG91bGQgcmVhbGx5IGhhdmUgY2F1Z2h0IHRoaXMpCiAK
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEpIHsKICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSkgewpAQCAtNjE3Myw3ICs2MzY3LDIyIEBAIGJvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgewor
ICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5j
aCgpOworICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CisgICAg
ICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2Nr
KTsKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5j
aE5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrID0gYnJhbmNoSW5kZXhJbkJsb2NrOworICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZSA9IGJyYW5jaE5vZGU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBjb21waWxlQmlnSW50MzJDb21wYXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleElu
QmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJ
bkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MjIwLDggKzY0MjksOCBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUhlYXBCaWdJ
bnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAg
LTYzMTUsNyArNjUyNCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShO
b2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHkobm9kZSwg
bm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBkZWFsIHdpdGggQW55QmlnSW50VXNlL0FueUJp
Z0ludFVzZSwgYW5kIHNpbWlsYXIgdmFyaWFudHMgKGUuZy4gQmlnSW50MzJVc2UgLyBIZWFwQmln
SW50VXNlLCBIZWFwQmlnSW50VXNlIC8gVW50eXBlZFVzZSwgZXRjLi4pCiAgICAgUkVMRUFTRV9B
U1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKICAgICByZXR1cm4gbm9u
U3BlY3VsYXRpdmVTdHJpY3RFcShub2RlKTsKIH0KQEAgLTEwNTc4LDE4ICsxMDc4OCwxOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlKQogICAgIHNwZWN1
bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0g
ICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2Us
IH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoY2Vs
bCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwp
LCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJZk5v
dEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVC
aWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0lu
dChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0
aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7Cisg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJl
Z3MpCkBAIC0xMDc1OSw4ICsxMDk2OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAgc3BlY3Vs
YXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAg
ICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2Fz
ZSBCaWdJbnQzMlVzZToKKyAgICAgICAgc3BlY3VsYXRlQmlnSW50MzIoZWRnZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBzcGVjdWxhdGVBbnlCaWdJ
bnQoZWRnZSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBIZWFwQmlnSW50VXNl
OgorICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0KGVk
Z2UpOwpAQCAtMTMxMDcsMTcgKzEzMzI1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb051bWVyaWMoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBh
cmd1bWVudC5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoID0gdGVtcC5ncHIoKTsKKyAgICAvLyBGSVhN
RTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlIChhbmQgZm9yIHR5cGVPZiwgYW5k
IGZvciBib29saWZ5IG9yIHdoYXRldmVyIGl0IGlzIGNhbGxlZCBpbiB0aGlzIGZpbGUpLgogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJndW1lbnRSZWdzKTsK
LSAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90QmlnSW50KGFyZ3VtZW50UmVn
cy5wYXlsb2FkR1BSKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0JpZ0ludCA9IG1f
aml0Lmp1bXAoKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90SGVhcEJp
Z0ludChhcmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgaXNIZWFwQmlnSW50ID0gbV9qaXQuanVtcCgpOwogCiAgICAgbm90Q2VsbC5saW5rKCZtX2pp
dCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE51bWJlcihhcmd1bWVu
dFJlZ3MsIHNjcmF0Y2gpKTsKIAotICAgIGlzQmlnSW50LmxpbmsoJm1faml0KTsKKyAgICBpc0hl
YXBCaWdJbnQubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRS
ZWdzLCByZXN1bHRSZWdzKTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVtZXJpYywgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwpAQCAtMTM5NzYsOSArMTQxOTUs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoKE5v
ZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgbV9jdXJyZW50Tm9kZSA9IGJyYW5jaE5v
ZGU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnRFcXVhbGl0eShOb2Rl
KiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShO
b2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVj
aWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVzZQorICAgIC8vIEZJ
WE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmlj
dCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Mjg5NQogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKQEAgLTEzOTkwLDggKzE0MjA5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiAgICAgbGVmdC51c2UoKTsKICAg
ICByaWdodC51c2UoKTsKIAotICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKSwgbGVm
dEdQUik7Ci0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7Cisg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7CisgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOwogCiAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90RXF1YWxDYXNlID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjFmYjBlOGM5N2EuLjdkMzcyYTg2M2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0z
NDYsNiArMzQ2LDcgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVk
Z2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmls
bFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCaWdJbnQz
MihFZGdlKTsKICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JU
b0ludDMyKE5vZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPik7CkBAIC0xMTQ4LDYgKzExNDksOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJ
VE9wZXJhdGlvbl9HSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9k
ZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsK
ICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKE5vZGUqLCBOb2RlKiBi
cmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjZW5kaWYKICAg
ICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5v
ZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQ
ZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6
OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0
eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CkBAIC0xMTcyLDcgKzExNzYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlTWlzY1N0cmljdEVxKE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGls
ZVN5bWJvbEVxdWFsaXR5KE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVCaWdJbnRFcXVhbGl0eShO
b2RlKik7CisgICAgdm9pZCBjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2Rl
KTsKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkoTm9kZSosIEVkZ2Ugc3lt
Ym9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7CiAKQEAgLTEyMjIsNiArMTIyNiw5IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHZvaWQgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3Nl
bWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlQm9v
bGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsK
ICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0xMjk3LDExICsxMzA0LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlTm90KE5vZGUqKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0
aEZ1bmN0aW9uPgotICAgIHZvaWQgZW1pdFVudHlwZWRCaXRPcChOb2RlKik7CisgICAgdm9pZCBl
bWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUJpdHdp
c2VPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXR3aXNlT3AoTm9kZSopOwogCi0g
ICAgdm9pZCBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0
VW50eXBlZE9yQW55QmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdChO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlU2hpZnRPcChOb2RlKik7CkBAIC0xNTc4LDYgKzE1ODUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVBbnlJbnQoRWRnZSk7CiAgICAgdm9pZCBz
cGVjdWxhdGVJbnQzMihFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3Vi
bGVSZXBBbnlJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQzMihFZGdlKTsKKyAg
ICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVh
bE51bWJlcihFZGdlKTsKQEAgLTE2MjgsOCArMTYzNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNw
ZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlU3lt
Ym9sKEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlKTsK
LSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7Ci0gICAgdm9pZCBz
cGVjdWxhdGVCaWdJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2Us
IEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSk7CiAgICAg
dm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1
bGF0ZU5vdENlbGwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdlLCBKU1ZhbHVl
UmVncywgR1BSUmVnIHRlbXApOwpAQCAtMjYwNyw2ICsyNjE2LDU0IEBAIHByaXZhdGU6CiAgICAg
R1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVy
YW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdl
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAg
ICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9qaXQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAg
aWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKwor
ICAgIH5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
Z3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1f
Z3ByT3JJbnZhbGlkKTsKKyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJlZyBn
cHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcp
CisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50
MzIoZWRnZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKworICAg
IHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOwor
ICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKICNkZWZpbmUgREZHX1RZUEVfQ0hFQ0tf
V0lUSF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdo
LCBqdW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBfZHRjX3NvdXJjZSA9
IChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRWRnZSBfZHRj
X2VkZ2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCmluZGV4IGVjZmM5MDM5MGI2Li4wNTMyMGQyN2Q2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xMjIz
LDYgKzEyMjMsMTEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVh
bihFZGdlIGVkZ2UpCiAgICAgfQogfQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFN0cmljdEVxdWFs
aXR5KEVkZ2Ugb2JqZWN0Q2hpbGQsIEVkZ2Ugb3RoZXJDaGlsZCkKIHsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcDEodGhpcywgb2JqZWN0Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMzcyOGI4NTNmYWIuLmNj
Njg4NTNmYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKQEAgLTEwMDMsNiArMTAwMyw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRnZSBlZGdlLCBEYXRhRm9ybWF0JiByZXR1
cm5GCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1
MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRC
aWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JB
U0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAg
ICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTIzNCw2ICsxMjM2LDggQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFG
b3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAt
MTMxMSw2ICsxMzE1LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNl
IERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAg
ICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZv
cm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMxOSw2ICsxMzI1LDEwNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAg
ICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRn
ZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQzMikpCisgICAg
ICAgIHJldHVybjsKKworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywgZWRnZSkp
LmdwcigpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQoRWRn
ZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdl
LCB2YWx1ZVJlZ3MuZ3ByKCkpOworICAgIG5vdENlbGwubGluaygmbV9qaXQpOworICAgIChTcGVj
dWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KSkuZ3ByKCk7Cit9CisKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0lu
dDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisg
ICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZh
bHVlLmlzQ2xlYXIoKSkgeworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtp
bmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAg
IH0KKworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFs
UmVnaXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQ
UlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAg
ICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJD
b25zdGFudCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8u
ZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKworICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisg
ICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk51
bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRn
ZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUikp
OworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9CisgICAgICAgIGluZm8u
ZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAg
ICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICByZXR1cm4gZ3ByOwor
ICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBpZiAodHlwZSAm
IH5TcGVjQmlnSW50MzIpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIoZ3ByKSk7CisgICAg
ICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElm
Tm90QmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpKTsKKyAgICAgICAgICAgIHVu
bG9jayh0ZW1wR1BSKTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0
cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgIHJldHVybiBncHI7Cisg
ICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRK
U0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRE
b3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJ
bnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICAgICAgREZHX0NSQVNI
KG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKKworICAg
IGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2Rl
LCAiQ29ycnVwdCBkYXRhIGZvcm1hdCIpOworICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsK
KyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVh
bGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTY2Miw1MyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiBu
b2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisKKyAgICBpZiAoY29uZGl0aW9u
ID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsKSB7CisgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3ggdGhlIG9wZXJhbmRzLCBz
aW5jZSB0aGUgdGFnIGJpdHMgYXJlIGlkZW50aWNhbAorICAgICAgICBtX2ppdC5jb21wYXJlNjQo
Y29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92
ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDIuZ3ByKCksIHRlbXAuZ3ByKCkp
OworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXAuZ3ByKCkpOworICAgICAgICBtX2pp
dC5jb21wYXJlNjQoY29uZGl0aW9uLCByZXN1bHQuZ3ByKCksIHRlbXAuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgfQorCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNo
b3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpW
YWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUq
IGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikK
K3sKKyAgICAvLyBPdGhlciBjb25kaXRpb25zIHdvdWxkIHJlcXVpcmUgdW5ib3hpbmcgdGhlIEJp
Z0ludDMyIHRvIGdldCBjb3JyZWN0IHJlc3VsdHMgb24gbmVnYXRpdmUgbnVtYmVycy4KKyAgICBB
U1NFUlQoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0g
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKTsKKworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJh
bmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBCYXNpY0Jsb2NrKiBub3RU
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CisKKyAgICAv
LyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwgYnJhbmNoIHRvIHRoZSB0YWtlbiBibG9jay4K
KyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0Y2ggdGFrZW4gd2l0aCBub3RUYWtlbiAmIGlu
dmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLgorICAgIGlm
ICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBjb25kaXRpb24gPSBKSVRDb21waWxl
cjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAgIEJhc2ljQmxvY2sqIHRtcCA9IHRha2VuOwor
ICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBub3RUYWtlbiA9IHRtcDsKKyAgICB9
CisKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKworICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHRha2Vu
KTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IGIzZTQxZDhkN2UxLi5kZmE3
YzYzZWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0xMjUsNyArMTI1LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgogICAgICAg
ICBjYXNlIFZhbHVlQml0WG9yOiB7Ci0gICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBtYXli
ZSBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvcGVyYW5kIGlzIGFsd2F5cyBIZWFwQmlnSW50
IGFuZCB0aGUgb3RoZXIgaXMgYWx3YXlzIEJpZ0ludDMyPworICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNzUsNyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIGlmIChtX25vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKaW5kZXgg
OGVmNzNiNmYyZTguLmM5NWM4NTMxZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAKQEAgLTE0NSw4ICsxNDUsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAg
ICAgb3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmlnSW50
VXNlOgotICAgICAgICBvdXQucHJpbnQoIkJpZ0ludCIpOworICAgIGNhc2UgQW55QmlnSW50VXNl
OgorICAgICAgICBvdXQucHJpbnQoIkFueUJpZ0ludCIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIG91dC5wcmludCgi
QmlnSW50MzIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgog
ICAgICAgICBvdXQucHJpbnQoIlN0cmluZ09iamVjdCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuaAppbmRleCA5YzEzYzViY2QzNS4uZDdiYjQ2OWRjY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCkBAIC02Niw3ICs2Niw5IEBAIGVudW0gVXNlS2lu
ZCB7CiAgICAgS25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8vIFRoaXMg
Yml6YXJyZSB0eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRlY29kZSBn
dWFyYW50ZWUgdGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90IG9iamVj
dHMpLgogICAgIFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50VXNlLAor
ICAgIEhlYXBCaWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVjdFVzZSwK
ICAgICBNYXBPYmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1NCwxMiBA
QCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAg
ICAgICAgIHJldHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2UgU3ltYm9s
VXNlOgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAg
ICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2Fz
ZSBIZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2Fz
ZSBCaWdJbnQzMlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBjYXNlIFBy
b21pc2VPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICBj
YXNlIERhdGVPYmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29sIG1heUhh
dmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVD
aGVjayhraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5kKQot
ewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93
bkludDMyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVzZToK
LSAgICBjYXNlIEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgIGNhc2Ug
RG91YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERvdWJsZVJl
cEFueUludFVzZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBr
aW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlubGluZSBi
b29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgY2FzZSBL
bm93blN0cmluZ1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0ludFVzZToK
KyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAg
Y2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2
OWQxZDM4YzEuLmEyMDRiYjZhZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCkBAIC00ODIsNyArNDgyLDkgQEAgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBCaWdJbnRV
c2U6CisgICAgICAgICAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgICAgICAgICAg
Y2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2Ug
TWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCmluZGV4IDViNDkyNWNm
ZmJjLi40YTFiMDU5MzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21tb25WYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmNwcApAQCAtNTgsNiArNTgsNyBAQCB2b2lkIENvbW1vblZhbHVlczo6aW5pdGlh
bGl6ZUNvbnN0YW50cyhCMzo6UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvYwog
ICAgIGludFB0clRocmVlID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMyk7CiAgICAgaW50UHRyRWlnaHQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCA4KTsKICAgICBkb3VibGVaZXJvID0gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIGJpZ0ludDMy
WmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSlNW
YWx1ZTo6QmlnSW50MzJUYWcpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAppbmRleCBjMWQ2ZDVhNTUx
ZC4uYjUzMjVhZjNlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tbW9uVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25W
YWx1ZXMuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGludFB0clRocmVl
IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKICAgICBM
VmFsdWUgZG91YmxlWmVybyB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsg
bnVsbHB0ciB9OwogICAgIAogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZCB7IDAgfTsKICAg
ICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZS4uOTcyN2VlZWZhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTIxMzUsMTEgKzIxMzUsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVm
dCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0
ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3Vs
dCA9IG1fb3V0LnNwZWN1bGF0ZUFkZCh1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAg
ICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxs
cHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJp
Z0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEhlYXBC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjE1NiwxMSArMjE3MywyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5j
aGlsZDIoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hl
ZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRS
aWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiBy
ZXN1bHQgPSBtX291dC5zcGVjdWxhdGVTdWIodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7Cisg
ICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwg
bnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBi
b3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25TdWJCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uU3ViSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yMTc3LDExICsyMjExLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBM
VmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAg
IENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZU11bCh1bmJveGVkTGVmdCwgdW5i
b3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxv
dywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBi
b3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVl
KGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKElu
dDY0LCBvcGVyYXRpb25NdWxCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJh
dGlvbk11bEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjU1NCwxMSArMjYwNSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlRGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
Ly8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uRGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjYzMywxMSArMjY4NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y29tcGlsZVZhbHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAvLyBGSVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAgICAgICAgaWYg
KG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9u
TW9kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1v
ZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMjgwOSwxMSArMjg2MiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZh
bHVlUG93KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSBleHBvbmVudCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8g
RklYTUU6IG1heWJlIGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBiYXNlID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5
cGUoKSwgb3BlcmF0aW9uUG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBleHBvbmVudCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzIwMCw5ICszMjU0LDIxIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXROb3QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEJpZ0ludFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgb3BlcmFuZCk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBv
cGVyYW5kID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgdW5ib3hlZE9wZXJhbmQgPSB1bmJveEJpZ0ludDMyKG9wZXJhbmQpOworICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE5vdCh1bmJveGVkT3BlcmFuZCk7CisgICAgICAgICAg
ICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFw
QmlnSW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIG9wZXJhbmQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjIwLDExICszMjg2LDI4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5i
b3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94
ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQuYml0QW5kKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworCisgICAgICAg
ICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmln
SW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludCht
X25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjQwLDEx
ICszMzIzLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRPcigpCiAgICAg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JCaWdJbnQsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAg
ICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRPcih1bmJveGVkTGVmdCwgdW5ib3hlZFJp
Z2h0KTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVz
dWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjAs
MTEgKzMzNjAsMjggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAg
ICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0WG9yKHVuYm94ZWRMZWZ0LCB1bmJv
eGVkUmlnaHQpOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQz
MihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JIZWFwQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTMyODAsMTEgKzMzOTcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJT
aGlmdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1F
OiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUuCisgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNo
aWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwog
ICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0zMzA5LDExICszNDI3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
VmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJl
LgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzIwNSw2ICs3MzI0
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIChTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KSkg
ewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyID0gbV9vdXQubmV3QmxvY2soKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzIg
PSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0Nl
bGxQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQ
YXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC03MjE0LDEwICs3MzM2LDE0IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgIC8vIG5vdE51bWJlciBjYXNlLgogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdW1iZXIsIGNvbnRpbnVhdGlvbik7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZh
bHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiks
IHVuc3VyZShub3RCaWdJbnQzMikpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Qmln
SW50MzIpOworI2VuZGlmCiAgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUo
c2xvd1BhdGgpKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0g
ICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2Rl
LT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7Cisg
ICAgICAgICAgICBtX291dC5icmFuY2goaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1f
bm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAg
ICAgICAgICAgICAvLyBXZSBoYXZlIHNldmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJp
Yy4gQnV0IFRvTnVtZXJpYyBzdGlsbCBleGlzdHMuCkBAIC04MjE3LDcgKzgzNDMsMTkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbChsb3dJbnQzMihtX25vZGUtPmNoaWxk
MSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAg
Ly8gTm8gbmVlZCB0byB1bmJveCBzaW5jZSB0aGUgdGFnIGJpdHMgYXJlIHRoZSBzYW1lIG9uIGJv
dGggc2lkZXMKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5lcXVhbChsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBr
aW5kKTsKQEAgLTgzMDAsMTEgKzg0MzgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRd
IENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVz
ZQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtMTQwNjQsOSArMTQyMDIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVtaXRC
aW5hcnlTbmlwcGV0KEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uKQogICAgIHsK
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgCi0gICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7
CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDc0NSw3ICsxNDg4NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2lu
ZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYgKHZhbHVlIGlzIGNl
bGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlz
IEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVl
IGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUt
Pmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAgICAgLy8gICAgICAg
ICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC0xNDc1NSw2
ICsxNDg5NSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIp
IHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAg
ICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgICAgICAgICAg
Ly8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAgICAgICAgIC8vIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAg
ICAgICAgICAvLyB9CkBAIC0xNDc2MiwxMyArMTQ5MDQsMTcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAg
ICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQzMkNhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50MzJDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91YmxlQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIExCYXNpY0Js
b2NrIGJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNC
bG9jayBub3RCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2s+IHJlc3VsdHM7CkBAIC0x
NDc4MiwyMCArMTQ5MjgsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90U3RyaW5nQ2FzZSwgc3RyaW5nQ2FzZSk7CiAgICAgICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUo
ZWRnZSkgJiAoU3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCi0gICAgICAgICAgICAgICAgdW5zdXJl
KGJpZ0ludENhc2UpLCB1bnN1cmUobm90U3RyaW5nT3JCaWdJbnRDYXNlKSk7CisgICAgICAgICAg
ICAgICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0g
U3BlY1N0cmluZykpLAorICAgICAgICAgICAgICAgIHVuc3VyZShoZWFwQmlnSW50Q2FzZSksIHVu
c3VyZShub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSkpOwogCi0gICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhzdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHN0cmluZ0Nhc2UsIGhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcihtX291dC5ub3RFcXVhbCh2YWx1ZSwgd2Vha1BvaW50ZXIoanNFbXB0
eVN0cmluZyhtX2dyYXBoLm1fdm0pKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgbm90U3Ry
aW5nT3JCaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhlYXBCaWdJbnRD
YXNlLCBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgbm9u
WmVyb0JpZ0ludCA9IG1fb3V0Lm5vdFplcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2Fk
MzJOb25OZWdhdGl2ZSh2YWx1ZSwgbV9oZWFwcy5KU0JpZ0ludF9sZW5ndGgpKTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihub25aZXJvQmlnSW50KSk7CiAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ09yQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UsIG5vdENl
bGxDYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBpc1RydXRoeU9iamVjdDsKICAgICAgICAgICAg
IGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKQogICAg
ICAgICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQuYm9vbGVhblRydWU7CkBAIC0xNDgz
OCw4ICsxNDk4NCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuYm94RG91YmxlKHZh
bHVlKSwgbV9vdXQuY29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
bV9vdXQuYW5jaG9yKGRvdWJsZUlzVHJ1dGh5KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90RG91YmxlQ2FzZSwgYmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaCgKKyAgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShlZGdl
KSAmIH5TcGVjQ2VsbCksCisgICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnQzMkNhc2UpLCB1
bnN1cmUobm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJp
Z0ludDMyQ2FzZSwgbm90QmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAgIExWYWx1ZSBiaWdJbnQz
Mk5vdFplcm8gPSBtX291dC5ub3RFcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KGJpZ0ludDMyTm90WmVybykpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICAgICAgCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNh
c2UsIGNvbnRpbnVhdGlvbik7CisjZWxzZQogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90
RG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyNlbmRpZgogICAgICAgICAgICAgTFZhbHVlIG1p
c2NJc1RydXRoeSA9IG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIHZhbHVlLCBtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSk7CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobWlzY0lzVHJ1dGh5KSk7CkBAIC0xNTQ0NCwx
MyArMTU2MDQsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8v
ICAgICB9IGVsc2UgaWYgKGlzIHN0cmluZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBz
dHJpbmcKLSAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8v
ICAgICB9IGVsc2UgaWYgKGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1
cm4gYmlnaW50CiAgICAgICAgIC8vICAgICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJl
dHVybiBzeW1ib2wKICAgICAgICAgLy8gICAgIH0KICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBu
dW1iZXIpIHsKICAgICAgICAgLy8gICAgIHJldHVybiBudW1iZXIKKyAgICAgICAgLy8gfSBlbHNl
IGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAgICAg
ICAvLyB9IGVsc2UgaWYgKGlzIG51bGwpIHsKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QK
ICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBib29sZWFuKSB7CkBAIC0xNTQ3OCw2ICsxNTY0MCw5
IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBib29sZWFuQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHVuZGVmaW5lZENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTU1MzAsNyArMTU2OTUsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOwogICAgICAg
ICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShj
aGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAorICAgICAgICAg
ICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNw
ZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCiAgICAgICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSks
IHVuc3VyZShzeW1ib2xDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2Fz
ZSwgc3ltYm9sQ2FzZSk7CkBAIC0xNTU0Niw4ICsxNTcxMSwxNSBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgbm90TnVtYmVyQ2FzZSk7CiAg
ICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6TnVtYmVyKTsKLSAgICAgICAgCisKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3RCaWdJ
bnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVu
VHlwZShjaGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RC
aWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2Us
IG5vdE51bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNh
c2UsIG5vdE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwogICAgICAg
ICBpZiAocHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBpc051bGwg
PSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwp
KTsKQEAgLTE2MjM4LDE1ICsxNjQxMCwzMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZh
bHVlIGxvd0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfVU5V
U0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2lu
ZCgpID09IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSk7CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7Ci0gICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAg
IAorCisgICAgTFZhbHVlIGxvd0JpZ0ludDMyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBl
ZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSk7CisKKyAgICAgICAgTG93ZXJlZE5vZGVWYWx1
ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2YWx1ZS52YWx1
ZSgpOworICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHJlc3VsdCksIGVk
Z2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMihyZXN1bHQpKTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhl
ZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAg
ICAgICByZXR1cm4gbV9vdXQuYmlnSW50MzJaZXJvOworICAgIH0KKwogICAgIExWYWx1ZSBsb3dO
b25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRCht
b2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9
PSBPYmplY3RVc2UpOwpAQCAtMTY0MzIsNyArMTY2MjAsNDAgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX251
bWJlclRhZyk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBMVmFsdWUg
aXNCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxs
VG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5
cGUsIFNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICBy
ZXR1cm4gbV9vdXQuZXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNWYWx1ZSwgbV9v
dXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIGlz
Tm90QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0
eXBlLCB+U3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAg
IHJldHVybiBtX291dC5ub3RFcXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVl
LCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykpLAorICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFs
dWUgdW5ib3hCaWdJbnQzMihMVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoMTYp
KSk7CisgICAgfQorICAgIExWYWx1ZSBib3hCaWdJbnQzMihMVmFsdWUgaW50MzJWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX291dC5iaXRPcigKKyAgICAgICAgICAgIG1fb3V0LnNobCht
X291dC56ZXJvRXh0KGludDMyVmFsdWUsIEIzOjpJbnQ2NCksIG1fb3V0LmNvbnN0SW50NjQoMTYp
KSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsK
KyAgICB9CisgICAgTFZhbHVlIGlzTm90QW55QmlnSW50KExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQu
Yml0QW5kKGlzTm90QmlnSW50MzIoanNWYWx1ZSwgdHlwZSksIGlzTm90SGVhcEJpZ0ludChqc1Zh
bHVlKSk7CisgICAgfQorI2VuZGlmCisKICAgICBMVmFsdWUgaXNDZWxsT3JNaXNjKExWYWx1ZSBq
c1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAg
ICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0NlbGxDaGVjayB8
IFNwZWNNaXNjKSkKQEAgLTE2NzQ0LDggKzE2OTY1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4oZWRnZSk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAgICAgICAgICBzcGVj
dWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY2FzZSBCaWdJ
bnQzMlVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3Vs
YXRlQW55QmlnSW50KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAg
ICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE2OTMxLDE4ICsxNzE2
MCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJv
bFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFs
dWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBp
c05vdEhlYXBCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0
eXBlICYgU3BlY0NlbGwsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4g
PSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNIZWFwQmlnSW50KSkKICAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKICAg
ICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCks
CiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuYmlnSW50U3RydWN0dXJlLT5pZCgp
KSk7CiAgICAgfQogCi0gICAgTFZhbHVlIGlzQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzSGVhcEJpZ0ludChMVmFsdWUg
Y2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAg
aWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0Jp
Z0ludCkpCisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYg
U3BlY0NlbGwsIFNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAg
ICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxs
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCkBAIC0xNzQwMCwxNSArMTc2MjksMjggQEAg
cHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwog
ICAgIH0KIAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwp
CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAg
ICAgewotICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNw
ZWNCaWdJbnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNW
YWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50KGNl
bGwpKTsKKyAgICB9CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKKyAg
ICB7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCiAgICAgewotICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0JpZ0lu
dDMyLCBpc05vdEJpZ0ludDMyKHZhbHVlKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgc3BlY3Vs
YXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RBbnlC
aWdJbnQodmFsdWUpKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVs
bE9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAyMTcxNWQzZGQyMi4u
OWJiYTc0MzliY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4
aXRDb21waWxlci5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1
YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhp
dAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJv
ZmlsZSkKLSAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0
UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAg
ICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAog
ICAgIC8vIE1hdGVyaWFsaXplIGFsbCBvYmplY3RzLiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmpl
Y3QgdW50aWwgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwCmluZGV4IGNlMDM5YmE3N2U5Li45ZjZhYjUxMTcyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAg
LTQxNSw3ICs0MTUsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlv
bjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgIHZvaWQq
IHdyYXBwZWRBZGRyZXNzID0gMDsKICAgICAgICAgdW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0g
ICAgICAgIGlmICghbm9kZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50
KCkpIHsKKyAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+
aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9k
ZS5jZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0
cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KE5vZGVGbGFnczo6SW50ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3
ZWVmNGI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
SW5saW5lcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxl
ci5oIgogI2luY2x1ZGUgIlZNLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1ByZWNpc2VBbGxvY2F0aW9uLmNwcAppbmRleCA2Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNl
dElubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJk
MjEwOTEuLjYxZjJlNzY1ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4
ICsxODcsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50
IHByZXZpZXcuCi0gICAgaWYgKGNlbGwtPmlzQmlnSW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3Ry
aW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAg
ICBpZiAoY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNC
aWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYXNIZWFwQmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJmMjk4NGExMjg5Li5kZjEwMzI0MzRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC0yMDUsNyArMjA1LDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICBjYXNlIEJp
Z0ludFR5cGU6CisgICAgY2FzZSBIZWFwQmlnSW50VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0
ZXJFcnJvcihnbG9iYWxPYmplY3QsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CmluZGV4IGViODA4MmU5YjdiLi40N2YxMWEzYmVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRy
b2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlm
ICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAg
IHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAgICAg
ICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2
ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVh
bihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICByZXN1bHQgPSAh
IXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsK
ICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2Ug
aWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJ
bnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9
PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAg
YXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAg
YXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAg
YXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigp
KTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAg
ICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJ
bnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9h
ZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAg
IGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAg
bG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWws
IHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAo
KSk7CkBAIC03NTMsNiArNzU1LDEzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVy
dFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAKICAgICBu
b3REb3VibGUubGluayh0aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGF1dG8gaXNOb3RC
aWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwg
cmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQpOworICAgIHVyc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6
IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKKyAgICBkb25lLmFw
cGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRoaXMpOwogICAgIGNvbXBh
cmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQogICAgIG1vdmUoaW52ZXJ0ID8g
VHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwpAQCAtNzY3LDcgKzc3
Niw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJ
ZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUg
Zm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNl
bGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQp
CisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkK
ICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNl
IHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRl
ZmluZWQKQEAgLTc3Nyw2ICs3ODYsOCBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIC8v
ICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1
ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkK
KyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICBy
ZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03ODYsNyArNzk3LDcgQEAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0m
IHZtLCBKU1ZhbHVlUmVncyB2YWwKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2Vs
bCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxv
YWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxv
YWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFs
dWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgxNyw3ICs4MjgsNyBAQCBBc3NlbWJs
eUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0s
IEpTVmFsdWVSZWdzIHZhbAogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoUHRyKGludmVydCA/IEVx
dWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbVB0cihqc0VtcHR5
U3RyaW5nKHZtKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQu
bGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICB0cnV0aHkuYXBw
ZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRkcmVzcyh2YWx1ZS5w
YXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIGRvbmUuYXBw
ZW5kKGp1bXAoKSk7CiAKQEAgLTg0Myw2ICs4NTQsMTMgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1w
TGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2
YWwKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
YXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZh
bHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAg
ICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaCk7CisgICAgdHJ1dGh5LmFwcGVu
ZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHNjcmF0Y2gpKTsKKyAgICBk
b25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRoaXMpOwogICAg
IHRydXRoeS5hcHBlbmQoYnJhbmNoNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUu
Z3ByKCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpKTsK
ICNlbHNlCiAgICAgYXV0byBub3RCb29sZWFuID0gYnJhbmNoSWZOb3RCb29sZWFuKHZhbHVlLCBJ
bnZhbGlkR1BSUmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCmluZGV4IDcyOWY1ODQ2MzdkLi43NTAxNzY0YzU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC05MjksNyArOTI5LDM3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1wR1BS
KTsKICNlbmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSnVtcCBi
cmFuY2hJZkJpZ0ludDMyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQorICAgIHsKKyAgICAgICAgSnVtcCBudW1iZXIg
PSBicmFuY2hJZk51bWJlcihncHIsIG1vZGUpOworICAgICAgICBKdW1wIGJpZ0ludDMyID0gYnJh
bmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUik7CisgICAgICAgIG51bWJl
ci5saW5rKHRoaXMpOworICAgICAgICByZXR1cm4gYmlnSW50MzI7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBH
UFIpCisgICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAg
ICAgICAgbW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVx
dWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9
CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1ZVJlZ3Mg
cmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOworICAgIH0KKyAgICBK
dW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcg
dGVtcEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcp
OworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNo
NjQoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykp
OworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisgICAgLy8gRklYTUU6IHJlbmFt
ZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRv
IGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgoCkBAIC05NTEsMTMgKzk4MSwxNCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BS
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAg
ICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIg
dGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJh
bmNoSWZTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BS
LCBTdHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAg
IEp1bXAgYnJhbmNoSWZTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlw
ZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBl
KTsgfQotICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJy
YW5jaElmVHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RC
aWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBC
aWdJbnRUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAg
SnVtcCBicmFuY2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmTm90VHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElm
RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBK
U0Z1bmN0aW9uVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7
IH0KICAgICAKQEAgLTEzMzgsNiArMTM2OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAg
ICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQorICAgIAorICAgIHZvaWQgdW5ib3hCaWdJbnQzMihH
UFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgdXJzaGlmdDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0
KEltbTMyKDE2KSksIGdwcik7CisgICAgfQorCisgICAgdm9pZCBib3hCaWdJbnQzMihHUFJSZWcg
Z3ByKQorICAgIHsKKyAgICAgICAgbHNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIo
MTYpKSwgZ3ByKTsKKyAgICAgICAgb3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJU
YWcpLCBncHIpOworICAgIH0KICNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE3
MTAsNyArMTc1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8v
ICAgICB9IGVsc2UgaWYgKGlzIHN0cmluZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBz
dHJpbmcKLSAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8v
ICAgICB9IGVsc2UgaWYgKGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1
cm4gYmlnaW50CiAgICAgICAgIC8vICAgICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJl
dHVybiBzeW1ib2wKQEAgLTE3MjEsNiArMTc2Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAg
IHJldHVybiBvYmplY3QKICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBib29sZWFuKSB7CiAgICAg
ICAgIC8vICAgICByZXR1cm4gYm9vbGVhbgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2lu
dDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0gZWxzZSB7
CiAgICAgICAgIC8vICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgIC8vIH0KQEAgLTE3NTIs
MTAgKzE3OTYsMTAgQEAgcHVibGljOgogCiAgICAgICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwog
Ci0gICAgICAgIEp1bXAgbm90QmlnSW50ID0gYnJhbmNoSWZOb3RCaWdJbnQoY2VsbEdQUik7Cisg
ICAgICAgIEp1bXAgbm90SGVhcEJpZ0ludCA9IGJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxsR1BS
KTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCaWdJbnQsIGZhbHNlKTsKIAotICAgICAg
ICBub3RCaWdJbnQubGluayh0aGlzKTsKKyAgICAgICAgbm90SGVhcEJpZ0ludC5saW5rKHRoaXMp
OwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlN5bWJvbCwgZmFsc2UpOwogICAgICAgICAK
ICAgICAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtMTc3MSw2ICsxODE1LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgSnVtcCBub3RCb29sZWFuID0gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MsIHRl
bXBHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJvb2xlYW4sIGZhbHNlKTsKICAg
ICAgICAgbm90Qm9vbGVhbi5saW5rKHRoaXMpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgSnVtcCBub3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihy
ZWdzLCB0ZW1wR1BSKTsKKyAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCaWdJbnQsIGZhbHNl
KTsKKyAgICAgICAgbm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZgogICAgICAgICAKICAg
ICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpVbmRlZmluZWQsIHRydWUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDdmMzU4YzEyMDNiLi44ZDQ2
OTc4YjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC01
NzEsOSArNTcxLDEwIEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpCiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogICAgIAotICAgIC8vIEp1
bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCisgICAgLy8gSnVt
cCBzbG93IGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5kIEJp
Z0ludHMpLgorICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNl
OiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93
IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncwogICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKLSAgICBv
cjY0KHJlZ1QxLCByZWdUMik7CisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKICAgICAKICAgICAvLyBKdW1wIHNsb3cgaWYgZWl0
aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMg
ZmluZSwgYW5kIHRoZW4gdGVzdApAQCAtNjE0LDkgKzYxNSwxMCBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENv
bXBpbGVPcAogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAsIHNyYzIs
IHJlZ1QxKTsKIAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIg
c3RyaW5ncykuCisgICAgLy8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwgKHRv
IGNvdmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgorICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBz
b21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25s
eSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncwogICAgIG1vdmUo
cmVnVDAsIHJlZ1QyKTsKLSAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisgICAgYW5kNjQocmVnVDEs
IHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKIAogICAgIC8v
IEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBp
bnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CkBAIC02ODYsNyArNjg4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwog
CiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
SWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAog
ICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IGNkNjY3YjJlNTg3Li5kYzFlMmM4NWE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtODY2LDcg
Kzg2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAK
ICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJ
Zk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAg
ICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCBlMzYyNjczMjVjNy4uMjNkYmQ4OTkyZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjc4NSw4ICsyNzg1LDE1
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJh
bmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1
ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1
bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisgICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQz
MkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVl
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXMo
dm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHBy
aW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjgwOCwxMCArMjgxNSwxOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJp
bVZhbHVlKSk7CisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50
MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZh
bHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNl
cnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZhbHVlID0g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHByaW1WYWx1
ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTI4NDMsOCArMjg1OSwxOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50
KHByaW1WYWx1ZSkpOworICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlm
ICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1
ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorICAgIGlmIChwcmlt
VmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpOwogICAgICAgICBh
cml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTI4NzUsOSArMjkwMSwxNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0Jp
Z0ludChwcmltVmFsdWUpKSk7CisKKyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhpcyBmdW5jdGlv
biBwcm9maWxlIHRoZSBhcmd1bWVudCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5i
aWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
LXZhbHVlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorICAgIGlmIChwcmltVmFsdWUuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5
TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJl
ciA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBiNmVlOTllMzYz
YS4uZmYxMDVmNDc3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC04NTEsNyArODUxLDcgQEAgbWFjcm8gc3Ry
aWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQogICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIG1vdmUgdDAsIHQyCi0gICAg
ICAgIG9ycSB0MSwgdDIKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwgbm90
Q2VsbE1hc2ssIC5zbG93CiAgICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sKICAg
ICAgICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKQEAgLTg4NSw3ICs4ODUsNyBAQCBtYWNy
byBzdHJpY3RFcXVhbGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5
T3BlcmF0aW9uKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkK
ICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MywgdDEpCiAgICAgICAgIG1v
dmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAg
ICAgYnRxeiB0Miwgbm90Q2VsbE1hc2ssIC5zbG93CiAgICAgICAgIGJxYWVxIHQwLCBudW1iZXJU
YWcsIC5sZWZ0T0sKICAgICAgICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKQEAgLTkxNiwy
NCArOTE2LDI2IEBAIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHJpY3Rl
cSwKIG1hY3JvIHByZU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlv
bikKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAg
bWFjcm8gdXBkYXRlQXJpdGhQcm9maWxlKHR5cGUpCi0gICAgICAgICAgICBvcmggdHlwZSwgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxl
OjptX2JpdHNbdDFdCisgICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDJdCiAgICAg
ICAgIGVuZAogCi0gICAgICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAgICAgIGxvYWRxIFtjZnIs
IHQwLCA4XSwgdDMKLSAgICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICAjIE1ldGFkYXRh
IGluIHQxLCBzcmNEc3QgaW4gdDMKLSAgICAgICAgYnFiIHQzLCBudW1iZXJUYWcsIC5zbG93Ci0g
ICAgICAgIGludGVnZXJPcGVyYXRpb24odDMsIC5zbG93KQotICAgICAgICBvcnEgbnVtYmVyVGFn
LCB0MwotICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQwLCA4XQotICAgICAgICB1cGRhdGVBcml0
aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQotICAgICAgICBkaXNwYXRjaCgpCisgICAgZ2V0KG1f
c3JjRHN0LCB0MCkKKyAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQxCisgICAgbWV0YWRhdGEodDIs
IHQzKQorICAgICMgc3JjRHN0IGluIHQxLCBtZXRhZGF0YSBpbiB0MgorICAgICMgRklYTUU6IHRo
ZSBuZXh0IGxpbmUganVtcHMgdG8gdGhlIHNsb3cgcGF0aCBmb3IgQmlnSW50MzIuIFdlIGNvdWxk
IGluc3RlYWQgaGF2ZSBhIGRlZGljYXRlZCBwYXRoIGluIGhlcmUgZm9yIHRoZW0uCisgICAgYnFi
IHQxLCBudW1iZXJUYWcsIC5zbG93CisgICAgaW50ZWdlck9wZXJhdGlvbih0MSwgLnNsb3cpCisg
ICAgb3JxIG51bWJlclRhZywgdDEKKyAgICBzdG9yZXEgdDEsIFtjZnIsIHQwLCA4XQorICAgIHVw
ZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCisgICAgZGlzcGF0Y2goKQogCiAgICAg
LnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAg
ICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKKwogZW5kCiAKIGxsaW50T3BXaXRoUHJvZmlsZShv
cF90b19udW1iZXIsIE9wVG9OdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4
IDg0ZmUzOTljZDhjLi41ODBhZDBkY2JlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5jcHAKQEAgLTgzLDYgKzgzLDEwIEBAIGNvbnN0IElkZW50aWZpZXIm
IElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29u
c3QgSWRlCiAgICAgaWYgKHJhZGl4ID09IDEwKQogICAgICAgICByZXR1cm4gaWRlbnRpZmllcjsK
IAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVl
IGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5zdHJp
bmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBK
U0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKKwogICAgIC8vIEZJWE1FOiBXZSBhcmUgYWxsb2NhdGluZyBhIEpTQmlnSW50IGp1
c3QgdG8gYmUgYWJsZSB0byB1c2UKICAgICAvLyBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nIHdoZW4g
cmFkaXggaXMgbm90IDEwLgogICAgIC8vIFRoaXMgY3JlYXRlcyBzb21lIEdDIHByZXNzdXJlLCBi
dXQgc2luY2UgdGhlc2UgaWRlbnRpZmllcnMKQEAgLTkwLDExICs5NCwxMyBAQCBjb25zdCBJZGVu
dGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYg
dm0sIGNvbnN0IElkZQogICAgIC8vIGl0IHdvbnQgYmUgbXVjaCBwcm9ibGVtYXRpYywgZ2l2ZW4g
c3VjaCBjYXNlcyBhcmUgdmVyeSByYXJlLgogICAgIC8vIFRoZXJlIGlzIGEgbG90IG9mIG9wdGlt
aXphdGlvbnMgd2UgY2FuIGFwcGx5IGhlcmUgd2hlbiBuZWNlc3NhcnkuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYyNworICAgIEpTQmlnSW50KiBo
ZWFwQmlnSW50OworICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICBoZWFwQmln
SW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7
CisgICAgQVNTRVJUKGJpZ0ludC5pc0hlYXBCaWdJbnQoKSk7CisgICAgaGVhcEJpZ0ludCA9IGJp
Z0ludC5hc0hlYXBCaWdJbnQoKTsKIAotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxw
dHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VN
b2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsK
LSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1faWRlbnRpZmllcnMuYXBwZW5k
KElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGJp
Z0ludCwgMTApKSk7CisgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgaGVhcEJpZ0ludCwgMTApKSk7CiAg
ICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggN2E2NDJjMDI2ZmQuLjFl
NGQ5ZmIwZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIK
LSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tl
ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDJmZjNmNzk3MjBiLi44YjQ2OTdmZTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtNzUsMTggKzc1
LDYgQEAgdm9pZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJ
bnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGlj
IGJvb2wgaXNTYWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVu
dC5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1bWVudC5p
c0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0g
YXJndW1lbnQuYXNEb3VibGUoKTsKLSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBudW1iZXIg
JiYgc3RkOjphYnMobnVtYmVyKSA8PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBhcmd1bWVudCkKIHsKICAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CkBAIC05
NCwyMCArODIsMTkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYgKGFyZ3Vt
ZW50LmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQp
OwotICAgIAotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAK
KwogICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3Vt
ZW50LmFzQm9vbGVhbigpKSkpOwotICAgIAotICAgIGlmIChhcmd1bWVudC5pc1VuZGVmaW5lZE9y
TnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFs
aWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwotICAgIAotICAgIEFT
U0VSVChhcmd1bWVudC5pc1N0cmluZygpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKLSAgICB9KSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBhcmd1bWVudC5hc0Jvb2xl
YW4oKSkpOworCisgICAgaWYgKGFyZ3VtZW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgcmV0dXJu
IHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmll
dykgeworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJ
bnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIEFTU0VS
VChhcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwg
YXJndW1lbnQuaXNTeW1ib2woKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9zKTsKIH0KIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAt
MTE5LDIwICsxMDYsMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVlIHBy
aW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbWl0aXZl
LmlzTnVtYmVyKCkpIHsKLSAgICAgICAgaWYgKCFpc1NhZmVJbnRlZ2VyKHByaW1pdGl2ZSkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IHNhZmUgaW50ZWdlciJfcykpOwotICAgICAg
ICAKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBpZiAocHJpbWl0aXZlLmlzSW50
MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlzSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKIAotICAgICAgICBpZiAocHJpbWl0aXZl
LmlzVUludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNVSW50MzIoKSkpOworICAgIGlmIChwcmltaXRp
dmUuaXNEb3VibGUoKSkgeworICAgICAgICBkb3VibGUgbnVtYmVyID0gcHJpbWl0aXZlLmFzRG91
YmxlKCk7CisgICAgICAgIGlmICh0cnVuYyhudW1iZXIpICE9IG51bWJlciB8fCBzdGQ6OmFicyhu
dW1iZXIpID4gbWF4U2FmZUludGVnZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJO
b3QgYSBzYWZlIGludGVnZXIiX3MpKTsKIAotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihwcmltaXRpdmUu
YXNEb3VibGUoKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzJPckhlYXAsIHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihwcmltaXRp
dmUuYXNEb3VibGUoKSkpKTsKICAgICB9Ci0gICAgCisKICAgICBFbmNvZGVkSlNWYWx1ZSByZXN1
bHQgPSB0b0JpZ0ludChnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCmluZGV4IGVl
MDA0NWRhYzk2Li42YTdmZDUwMjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRPYmplY3QuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xhc3NJbmZvIEJp
Z0ludE9iamVjdDo6c19pbmZvID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAKIAotQmlnSW50
T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJ
bnQpCiB7CiAgICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGdsb2JhbE9iamVj
dC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24o
dm0sIGJpZ0ludCk7CkBAIC00OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6QmlnSW50T2JqZWN0
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmlnSW50T2JqZWN0
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lkIEJpZ0ludE9i
amVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKaW5kZXggNDRm
Yzc2ZmJkZjkuLjEyNmVjNjhlNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRPYmplY3QuaApAQCAtMjYsNyArMjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNDEsMTEgKzQwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZt
LmJpZ0ludE9iamVjdFNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEJpZ0ludE9i
amVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCopOworICAgIHN0YXRp
YyBCaWdJbnRPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgSlNCaWdJbnQqIGludGVybmFsVmFsdWUo
KSBjb25zdCB7IHJldHVybiBhc0JpZ0ludChKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUo
KSk7IH0KKyAgICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1dyYXBw
ZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKTsgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTcsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTQmlnSW50Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEJpZ0ludE9iamVjdChWTSYs
IFN0cnVjdHVyZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggZGI0YTYxODg5OWQuLmE4NDM0Njk5OWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAK
QEAgLTc5LDEyICs3OSwyMCBAQCB2b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50
KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworICAgIC8v
IEZJWE1FOiBoZWFwLWFsbG9jYXRpbmcgYWxsIGJpZyBpbnRzIGlzIGlubmVmaWNpZW50LCBidXQg
cmUtaW1wbGVtZW50aW5nIHRvU3RyaW5nIGZvciBzbWFsbCBCaWdJbnRzIGlzIGVub3VnaCB3b3Jr
IHRoYXQgSSdtIGRlZmVycmluZyBpdCB0byBhIGxhdGVyIHBhdGNoLgorICAgIGlmICh0aGlzVmFs
dWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IHRoaXNWYWx1ZS5iaWdJbnQzMkFzSW50MzIoKSk7CisKICAgICBpZiAodGhpc1ZhbHVlLmlzQ2Vs
bCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2FzdDxKU0Jp
Z0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJuIGJpZ0lu
dDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCi0gICAg
ICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAgICAgICAg
aWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmpl
Y3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBiaWdJ
bnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChiaWdJ
bnQuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIHJldHVybiBi
aWdJbnQuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTk5LDggKzEwNyw2IEBAIHN0YXRpYyBKU1ZhbHVlIGJpZ0ludFByb3RvRnVuY1Rv
U3RyaW5nSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwog
Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0VG9TdHJp
bmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc2Nv
cGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTExOCw2ICsx
MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7
CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhlIHJpZ2h0
IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5kcyBhbmQgc2ltaWxhciB0aGluZ3MuCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCAwZTJiYzNhMjcxOS4uNjZkZjg2ZDliYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
NjksNyArNjksNiBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5
cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NzAsMTMgKzQ2
OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbmMpCiAgICAgQkVHSU4oKTsKICAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5jPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBH
RVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQq
LCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzSW5jKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpOwog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJl
c3VsdCA9IEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJl
c3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6
Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgKyAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJ
TkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTQ4NSwx
MyArNDc5LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYykKICAgICBCRUdJTigpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVu
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0Jp
Z0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEZWMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVu
dCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAg
ICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIo
V1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSAtIDEpOwogICAgIFJFVFVSTl9XSVRIX1BS
T0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAt
NTA3LDYgKzQ5Niw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJp
dGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiB7CiAgICAgVW5hcnlBcml0
aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKICAgICBwcm9maWxl
Lm9ic2VydmVBcmcob3BlcmFuZCk7CisgICAgLy8gRklYTUU6IHRoaXMgYXNzZXJ0aW9uIGlzIGlu
Y29tcGF0aWJsZSB3aXRoIHRoZSBsYXN0IGNhc2UgKE5vbk51bWVyaWMpLgogICAgIEFTU0VSVChy
ZXN1bHQuaXNOdW1iZXIoKSB8fCByZXN1bHQuaXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5p
c051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTI4LDgg
KzUxOCwxMCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3Ao
T3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYQogICAgICAgICAgICAgICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQoKSkKLSAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZEJpZ0ludCgpOworICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkK
KyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisgICAgZWxzZSBpZiAocmVz
dWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSGVhcEJpZ0lu
dCgpOwogICAgIGVsc2UKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsK
IH0KQEAgLTU0Niw4ICs1MzgsMTkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkK
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisgICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQz
MkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAg
ICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgeworICAgICAgICAgICAgICAg
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVy
YW5kKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQor
ICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkp
OwogICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgICAgICB1
cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFu
ZCk7CiAgICAgICAgIH0pOwpAQCAtNTg1LDggKzU4OCwxMCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVB
cml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBj
b2RlQgogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50NTJPdmVyZmxv
dygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZXN1bHQuaXNC
aWdJbnQoKSkKLSAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludCgpOworICAgIH0gZWxz
ZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJp
Z0ludDMyKCk7CisgICAgZWxzZSBpZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkSGVhcEJpZ0ludCgpOwogICAgIGVsc2UgCiAgICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CiB9CkBAIC02MDgsMTMgKzYxMyw4IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90b19udW1lcmljKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcFRvTnVtZXJpYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0g
R0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0lu
dCosIGRvdWJsZT4gcmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAg
ICAgcmVzdWx0ID0gV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFu
dCkpOwogICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCkBAIC02NTAsNyArNjUwLDcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBh
cml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgbmVlZCB0byBiZSBzdXJlIHRvIHJ1bgot
Ly8gdG9OdW1iZXIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdG9O
dW1iZXIoKSBpcyBpZGVtcG90ZW50CisvLyB0b051bWVyaWMvdG9CaWdJbnRPckludDMyKCkgb24g
dGhlaXIgb3BlcmFuZHMgaW4gb3JkZXIuICAoQSBjYWxsIHRvIHRoZXNlIGlzIGlkZW1wb3RlbnQK
IC8vIGlmIGFuIGV4Y2VwdGlvbiBpcyBhbHJlYWR5IHNldCBvbiB0aGUgQ2FsbEZyYW1lLikKIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX211bCkKQEAgLTY3MiwyNCArNjcyLDggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3N1YikKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU3Vi
PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7
CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVy
aWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0g
ICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BS
T0ZJTElORyhyZXN1bHQsIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JC
aW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCBy
aWdodCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gc3VidHJhY3Rpb24uIikpOwotICAgIH0KLQotICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+
KHJpZ2h0TnVtZXJpYykpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAg
ICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzAxLDI2ICs2
ODUsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BEaXY+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMp
LmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9
IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNE
aXYoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0K
LSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8
fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAm
JiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAg
ICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0
ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBj
LCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iKSk7Ci0gICAgfQotCi0gICAgZG91
YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdU
Rjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGEgLyBiKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAg
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKICAgICB9KTsKQEAgLTczMiwyNCArNjk4LDkg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX21vZCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wTW9kPigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5q
c1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1Zh
bHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdo
dC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUmVtYWlu
ZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9i
YWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRv
dWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBX
VEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgUkVUVVJOKGpzTnVtYmVyKGpzTW9k
KGEsIGIpKSk7CisgICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wb3cpCkBAIC03NTgsMjUgKzcwOSw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
b3cpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFBvdz4oKTsKICAgICBKU1ZhbHVlIGxl
ZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQg
PSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMg
PSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1BvdyhnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAg
ICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKLSAgICAgICAg
fQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9u
LiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsK
LQotICAgIFJFVFVSTihqc051bWJlcihvcGVyYXRpb25NYXRoUG93KGEsIGIpKSk7CisgICAgUkVU
VVJOKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCkBAIC03
ODUsMjIgKzcyMCwxMCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BMc2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VU
X0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwotICAgIENIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAg
ICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9w
ZXJhdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6
Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSA8PCAoV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1l
cmljKSAmIDMxKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNMU2hpZnQoZ2xvYmFsT2JqZWN0
LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCkBAIC04
MDksMjIgKzczMiwxMCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BSc2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VU
X0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAg
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQo
cmVzdWx0KTsKLSAgICAgICAgfQogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVk
IHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklM
RUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpID4+IChXVEY6OmdldDxp
bnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1JT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Vyc2hpZnQpCkBAIC04NTAsNzkgKzc2MSw0NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYml0bm90KQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cEJpdG5vdD4oKTsKLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9v
cGVyYW5kKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBvcGVyYW5kID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVy
YW5kKS5qc1ZhbHVlKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KG9wZXJhbmROdW1lcmljKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmRO
dW1lcmljKSk7Ci0gICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBSRVRVUk5fUFJP
RklMRUQocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIofldU
Rjo6Z2V0PGludDMyX3Q+KG9wZXJhbmROdW1lcmljKSkpOworICAgIGF1dG8gcmVzdWx0ID0ganNC
aXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFuZCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9iaXRhbmQpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wQml0YW5kPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xo
cykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMp
LmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5k
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAg
YXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJp
Z2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBS
RVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpICYg
V1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNCaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfYml0b3IpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQml0b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdp
c2VPcihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQor
ICAgIGF1dG8gbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0
byByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICAgICAgVEhS
T1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAg
ICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMp
IHwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9iaXR4b3IpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wQml0eG9yPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpi
aXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlv
bi4iKSk7Ci0gICAgfQorICAgIGF1dG8gbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1Zh
bHVlKCk7CisgICAgYXV0byByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7
CiAKLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51
bWVyaWMpIF4gV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNCaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENI
RUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdHlwZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCmluZGV4IDljMzQ1NDQyZjU0Li40OTBmNmVjOTQzOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtODAsNyArODAsNyBAQCB2
b2lkIEpTQmlnSW50Ojppbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZSBpbml0VHlwZSkKIAog
U3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmlnSW50
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEhlYXBCaWdJbnRUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3Jl
YXRlWmVybyhWTSYgdm0pCkBAIC0xODgsMzQgKzE4OCwyMSBAQCBKU1ZhbHVlIEpTQmlnSW50Ojp0
b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKTsKIH0KIAotT3B0aW9uYWw8
dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKQotewotICAgIGlm
IChpc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKGxlbmd0aCgpID09
IDEgJiYgIXNpZ24oKSkgewotICAgICAgICBEaWdpdCByRGlnaXQgPSBkaWdpdCgwKTsKLSAgICAg
ICAgaWYgKHJEaWdpdCA8PSA5KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHJEaWdpdCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLUpTQmlnSW50KiBKU0Jp
Z0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBz
LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzLCBFcnJvclBhcnNlTW9k
ZSBwYXJzZXJNb2RlKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFy
c2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIHBhcnNlck1v
ZGUpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczE2KCks
IHMubGVuZ3RoKCksIHBhcnNlck1vZGUpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1
aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlLCBQYXJzZUludFNpZ24gc2ln
bikKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSBw
YXJzZXJNb2RlLCBQYXJzZUludFNpZ24gc2lnbikKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAg
ICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIHMuY2hhcmFjdGVyczgoKSwg
cy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlz
YWxsb3dFbXB0eVN0cmluZyk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0s
IHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWdu
LCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogfQogCi1KU0JpZ0ludCogSlNC
aWdJbnQ6OnN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmlu
Z1ZpZXcgcykKK0pTVmFsdWUgSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcykKIHsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xv
YmFsT2JqZWN0LCBzLCBFcnJvclBhcnNlTW9kZTo6SWdub3JlRXhjZXB0aW9ucyk7CiB9CkBAIC00
NTQsMTYgKzQ0MSwyMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJlbWFpbmRlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJbgogCiBKU0JpZ0ludCogSlNC
aWdJbnQ6OmluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsK
LSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1v
cmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
cmV0dXJuIGFkZChnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsK
KyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2Jh
bE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6VW5zaWduZWQpOworICAgIEpTQmlnSW50KiByZXN1bHQg
PSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHgsIHgtPmxlbmd0aCgpKTsKKyAgICByZXN1
bHQtPnNldFNpZ24odHJ1ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSlNCaWdJbnQqIEpT
QmlnSW50OjpkZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgpCiB7
Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJpdCBt
b3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAg
IHJldHVybiBzdWIoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSk7
CisgICAgaWYgKHgtPmlzWmVybygpKQorICAgICAgICByZXR1cm4gY3JlYXRlRnJvbShnbG9iYWxP
YmplY3QtPnZtKCksIDEpOworICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJz
b2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFi
c29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAog
SlNCaWdJbnQqIEpTQmlnSW50OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIHgsIEpTQmlnSW50KiB5KQpAQCAtNTMyLDcgKzUyMyw3IEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6Yml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
eCwgSlNCaWdJCiAgICAgaWYgKHgtPnNpZ24oKSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwog
ICAgIAotICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQorICAgIC8v
IHggJiAoLXkpID09IHggJiB+KHktMSkKICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9u
ZShnbG9iYWxPYmplY3QsIHksIHktPmxlbmd0aCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKICAgICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIHkxKTsK
QEAgLTE2NDQsNyArMTYzNSw3IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJP
ZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiBTdHJpbmcgSlNC
aWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICAvLyBGSVhNRTogW0pTQ10g
UmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6dG9TdHJpbmcKLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExD
aGFyPiByZXN1bHRTdHJpbmc7CiAKICAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAz
Nik7CkBAIC0xODAyLDcgKzE3OTMsNyBAQCBib29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1i
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudW1iZXIsCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMTgxMCw3ICsxODAxLDcgQEAgSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFy
VHlwZSogIGRhdGEsIHVuc2kKICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3Bh
Y2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsKIAotICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJp
c3QgY2hhcmFjdGVycworICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZmlyc3QgY2hhcmFjdGVycwog
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdiJykpCiAgICAgICAgICAgICByZXR1cm4gcGFy
c2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJz
ZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5zaWduZWQsIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0
eVN0cmluZyk7CkBAIC0xODI0LDI0ICsxODE1LDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNp
CiAKICAgICBQYXJzZUludFNpZ24gc2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQ7CiAgICAg
aWYgKHAgPCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGRhdGFbcF0gPT0gJysnKQotICAgICAgICAg
ICAgKytwOwotICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICctJykgeworICAgICAgICBpZiAo
ZGF0YVtwXSA9PSAnLScpIHsKICAgICAgICAgICAgIHNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25l
ZDsKICAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRhdGFb
cF0gPT0gJysnKQorICAgICAgICAgICAgKytwOwogICAgIH0KIAotICAgIEpTQmlnSW50KiByZXN1
bHQgPSBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJv
clBhcnNlTW9kZSwgc2lnbik7Ci0KLSAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVybygp
KQotICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7
Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQ
YXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUg
cGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJz
ZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQogewogICAg
IEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAgdW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0x
ODUyLDcgKzE4MzcsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdAogICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VN
b2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBh
cnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVy
b3MKQEAgLTE4NjcsNDMgKzE4NTIsNzYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICBs
ZW5ndGggPSBlbmRJbmRleCArIDE7CiAKICAgICBpZiAocCA9PSBsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVaZXJvKHZtKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgMCk7CisKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IG51
bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9N
QVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRjaCAocmFk
aXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0lu
dDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICAgIGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAg
ICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAogICAgIHVuc2ln
bmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWdu
ZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdB
JyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihn
bG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlm
IHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNh
bm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFs
aXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBs
ZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAo
ZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0g
ZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtp
XSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAg
ICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGJyZWFrOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNfY2FzdDxpbnQz
Ml90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHN0YXRpY19j
YXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0g
bGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBpbnQzMl90IGRp
Z2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZsb3c+IG11bHRp
cGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoTGltaXRG
b3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAgICAgIGRpZ2l0
ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAgICAgICAgICAg
IGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAgICAgICAgICAg
IGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49
ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFb
cF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ0EnICYmIGRh
dGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdBJyAr
IDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yUGFyc2VN
b2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3Qs
ICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdldCgpKTsKIAot
ICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4ocmFk
aXgpLCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0
KSB7CisgICAgICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQg
Kj0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgZGlnaXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgaGVhcFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBp
bml0aWFsTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIC8vIHJlc3VsdCBjYW4gc3RpbGwgYmUgbnVs
bCBpZiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBnbG9iYWwgb2JqZWN0LCBhcyBhbGxvY2F0ZUZv
ciBjYW5ub3QgdGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgICAg
ICBpZiAoIWhlYXBSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgICAgICAgICAgICAgaGVhcFJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5
cGU6OldpdGhaZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoZWFwUmVz
dWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KG11bHRpcGxpZXIudW5z
YWZlR2V0KCkpLCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKICAgICB9CiAKLSAgICByZXN1
bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRydWUgOiBmYWxzZSk7
Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0o
dm0pOwotCi0gICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2Rl
ID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJG
YWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKLQotICAgIHJldHVybiBudWxscHRy
OworICAgIGhlYXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7
CisgICAgcmV0dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CiB9CiAKIGlubGluZSBKU0Jp
Z0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCkBAIC0xOTI3LDE4ICsxOTQ1
LDIwIEBAIGJvb2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7
CiAgICAgQVNTRVJUKG51bVZhbHVlLmlzTnVtYmVyKCkpOwogICAgIAotICAgIGlmIChudW1WYWx1
ZS5pc0ludDMyKCkpIHsKLSAgICAgICAgaW50IHZhbHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOwot
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOwot
Ci0gICAgICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9
PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Ci0gICAgfQorICAgIGlmIChu
dW1WYWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBlcXVhbHNUb0ludDMyKG51bVZhbHVl
LmFzSW50MzIoKSk7CiAgICAgCiAgICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUo
KTsKICAgICByZXR1cm4gY29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29u
UmVzdWx0OjpFcXVhbDsKIH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90
IHZhbHVlKQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiB0aGlzLT5pc1plcm8o
KTsKKyAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0aGlzLT5zaWduKCkgPT0g
KHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3Rk
OjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkpOworfQorCiBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3Vi
bGUgeSkKIHsKICAgICAvLyBUaGlzIGFsZ29yaXRobSBleHBlY3QgdGhhdCB0aGUgZG91YmxlIGZv
cm1hdCBpcyBJRUVFIDc1NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
aW5kZXggOGE0ZTYwOTlmNDcuLmMxM2VmNjAxNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKQEAgLTkwLDEzICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBQYXJzZUludE1vZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5n
IH07CiAgICAgZW51bSBjbGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAK
LSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJp
bmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpU
aHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwot
ICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3
LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAg
IHN0YXRpYyBKU0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdW
aWV3KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwg
U3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9k
ZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVk
KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1Zp
ZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7Cisg
ICAgc3RhdGljIEpTVmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdW
aWV3KTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1
bnNpZ25lZCByYWRpeCk7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVl
Rm9yU3RyaW5nKCk7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcmFkaXgpOwogICAgIAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEz
LDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1i
ZXIoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGlu
dDMyX3QpOwogICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAg
KzIyMiwxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCos
IFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRl
eCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUlu
dFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3Ry
aW5nKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwg
Q2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246
OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsK
IAogICAgIHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYs
IHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjU4LDkg
QEAgcHJpdmF0ZToKICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdp
dD4gbV9kYXRhOwogfTsKIAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVl
KQoraW5saW5lIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBB
U1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0Nl
bGwoKS0+aXNIZWFwQmlnSW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1
ZS5hc0NlbGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggNTQ4MDEwZWIxYzAuLmJiOWM4NzYzMTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAorI2luY2x1ZGUgIkJp
Z0ludE9iamVjdC5oIgogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKQEAg
LTcxLDYgKzcyLDEyIEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlz
RG91YmxlKCkpOwogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50
b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93
ZWQuIl9zKTsKKyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9CiAgICAgaWYgKGlzVHJ1ZSgpKQog
ICAgICAgICByZXR1cm4gMS4wOwogICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gUE5hTiA6IDA7
IC8vIG51bGwgYW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgpAQCAtMTAxLDYgKzEwOCw4IEBA
IEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2Jq
ZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0
LCBhc1ZhbHVlKCkpOworICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJ
bnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7CiAKICAgICBBU1NFUlQo
aXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0x
MTgsNiArMTI3LDExIEBAIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUo
KSB8fCBpc0ZhbHNlKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVk
aWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworICAgIGlmIChpc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4o
SlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIo
KSkpOworICAgICAgICAvLyBGSVhNRTogdGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGZp
bmQgdG9UaGlzIGZvciBKU0JpZ0ludCwgYnV0IEkgY2FuJ3QgZXZlbiBmaW5kIHdoZXJlIGl0IGlz
IGRlZmluZWQuCisgICAgICAgIHJldHVybiBoZWFwQmlnSW50LT5tZXRob2RUYWJsZShnZXRWTShn
bG9iYWxPYmplY3QpKS0+dG9UaGlzKGhlYXBCaWdJbnQsIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUp
OworICAgIH0KICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogfQpAQCAtMTMwLDcgKzE0NCw3IEBAIEpTT2JqZWN0
KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7Ci0gICAg
ICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKICAgICAgICAgQVNT
RVJUKGlzU3ltYm9sKCkpOwogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90
b3R5cGUoKTsKQEAgLTE0MCw2ICsxNTQsOCBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6
ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAoaXNCb29sZWFu
KCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyAg
ICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQ
cm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGds
b2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTI4Niw2ICszMDIsOCBAQCB2b2lkIEpTVmFsdWU6OmR1
bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAgIG91dC5wcmludCgiU3lt
Ym9sOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAg
ICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJl
Kj4oYXNDZWxsKCkpLCBjb250ZXh0KSk7CisgICAgICAgIGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgp
KQorICAgICAgICAgICAgb3V0LnByaW50KCJCaWdJbnRbaGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIs
IFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFz
c0luZm8oKS0+aXNTdWJDbGFzc09mKEpTT2JqZWN0OjppbmZvKCkpKSB7CiAgICAgICAgICAgICBv
dXQucHJpbnQoIk9iamVjdDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICAgICAg
b3V0LnByaW50KCIgd2l0aCBidXR0ZXJmbHkgIiwgUmF3UG9pbnRlcihhc09iamVjdChhc0NlbGwo
KSktPmJ1dHRlcmZseSgpKSk7CkBAIC0zMDUsNiArMzIzLDggQEAgdm9pZCBKU1ZhbHVlOjpkdW1w
SW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwog
ICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVk
Iik7CisgICAgZWxzZSBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBvdXQucHJpbnRmKCJCaWdJ
bnRbaW5saW5lXTogJWQiLCBiaWdJbnQzMkFzSW50MzIoKSk7CiAgICAgZWxzZQogICAgICAgICBv
dXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM0Nyw2ICszNjcsOCBAQCB2b2lkIEpTVmFsdWU6
OmR1bXBGb3JCYWNrdHJhY2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnBy
aW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0LnBy
aW50KCJVbmRlZmluZWQiKTsKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91
dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKICAgICBl
bHNlCiAgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAtMzg0LDE4ICs0MDYsMjMg
QEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgYm9vbCByZXR1cm5FbXAKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5n
cy5udWxsU3RyaW5nKCk7CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2
bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7Ci0gICAgaWYgKGlzU3ltYm9sKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252
ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9zKTsKLSAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUo
KTsKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIp
IDw9IDkpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3Rl
clN0cmluZyhpbnRlZ2VyICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlz
QmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsK
LSAgICAgICAgaWYgKGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJp
bmcoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKCpkaWdpdCArICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkp
OworICAgIGlmIChpc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0g
YXNIZWFwQmlnSW50KCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcmF0aGVyIGhhdmUg
dHdvIGNhc2VzIGhlcmU6IG9uZS1jaGFyYWN0ZXIgc3RyaW5nIHZzIGpzTm9uVHJpdmlhbFN0cmlu
ZyBmb3IgZXZlcnl0aGluZyBlbHNlLgorICAgICAgICBKU1N0cmluZyogcmV0dXJuU3RyaW5nID0g
SlNTdHJpbmc6OmNyZWF0ZSh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKS5y
ZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlcnJvclZhbHVlKCkpOwogICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwog
ICAgIH0KKyAgICBpZiAoaXNTeW1ib2woKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3Mp
OworICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIH0KIAogICAgIEFTU0VSVChpc0Nl
bGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIFByZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMuLjRiNGZjZmE3MGMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xNzUsNiArMTc1LDEwIEBAIHB1Ymxp
YzoKICAgICBlbnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OwogICAgIGVudW0gSlNGYWxzZVRhZyB7
IEpTRmFsc2UgfTsKICAgICBlbnVtIEpTQ2VsbFRhZyB7IEpTQ2VsbFR5cGUgfTsKKyAgICBlbnVt
IEpTQmlnSW50VGFnIHsgSlNCaWdJbnQzMk9ySGVhcCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgZW51bSBKU0JpZ0ludDMyVGFnIHsgSlNCaWdJbnQzMiB9OworI2VuZGlmCiAgICAgZW51bSBF
bmNvZGVBc0RvdWJsZVRhZyB7IEVuY29kZUFzRG91YmxlIH07CiAKICAgICBKU1ZhbHVlKCk7CkBA
IC0xODQsNiArMTg4LDExIEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlKEpTRmFsc2VUYWcpOwogICAg
IEpTVmFsdWUoSlNDZWxsKiBwdHIpOwogICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpOwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsK
KyNlbmRpZgorICAgIC8vIFJldHVybnMgZWl0aGVyIGEgQmlnSW50MzIgb3IgYSBIZWFwQmlnSW50
LgorICAgIEpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiwgaW50NjRfdCk7CiAKICAgICAvLyBOdW1i
ZXJzCiAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxNyw2ICsy
MjYsOSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBh
c0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qg
b25seSBiZSBjYWxsZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBh
c0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBi
dXQgb3RoZXJ3aXNlIGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzYsNiArMjQ4LDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0
OwogICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNv
bnN0OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBpc0JpZ0ludDMyKCkgY29uc3Q7Cisj
ZW5kaWYKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgp
IGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKQEAgLTI0NCw3ICsyNjAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNv
bnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNv
bnN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0g
ICAgICAgIAorCiAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCiAgICAgYm9vbCBnZXRTdHJp
bmcoSlNHbG9iYWxPYmplY3QqLCBXVEY6OlN0cmluZyYpIGNvbnN0OwogICAgIFdURjo6U3RyaW5n
IGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3Qg
YSBzdHJpbmcKQEAgLTI2Myw5ICsyNzksMTAgQEAgcHVibGljOgogICAgIC8vIHRvTnVtYmVyIGNv
bnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRp
b24gaGFzCiAgICAgLy8gYmVlbiBzZXQgaW4gdGhlIENhbGxGcmFtZSBhbHJlYWR5LgogICAgIGRv
dWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIAotICAgIFZhcmlhbnQ8
SlNCaWdJbnQqLCBkb3VibGU+IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAg
IFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CisgICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
KyAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkgY29uc3Q7CiAKICAgICAvLyB0b051bWJlciBj
b252ZXJzaW9uIGlmIGl0IGNhbiBiZSBkb25lIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgogICAgIE9w
dGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CkBAIC0zMTQsOCAr
MzMxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNs
b3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAg
ICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0
RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKTsKICAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmlj
dEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25z
dDsKQEAgLTQxMywxMSArNDI5LDIwIEBAIHB1YmxpYzoKICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2
ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlz
IHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAg
ICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywg
aW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlz
IG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZykgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQor
ICAgICAqIC0gV2l0aCBiaXQgMyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpLCBVbmRlZmluZWQg
YW5kIE51bGwgc2hhcmUgdGhlCiAgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYg
dW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCiAgICAgICoKICAgICAgKiBObyB2YWxp
ZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8g
cmVwcmVzZW50IGFycmF5CiAgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJl
c3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgorICAgICAq
CisgICAgICogV2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhh
dCBhcmUgc21hbGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhY
OjAwMTIKKyAgICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZv
bGxvd2luZyB0aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERv
dWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5v
dCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3
aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGgg
YSBwb2ludGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQor
ICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJp
dCAyIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBu
dWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAg
ICAvLyBUaGlzIHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0
IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQzMiw2ICs0NTcsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IE90aGVyVGFnICAgICAgID0gMHgyOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCb29sVGFnICAgICAgICA9IDB4NDsKICAgICBzdGF0
aWMgY29uc3RleHByIGludDMyX3QgVW5kZWZpbmVkVGFnICAgPSAweDg7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQzMl90IEJpZ0ludDMyVGFnICAgID0gMHgxMjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludDY0X3QgQmlnSW50MzJNYXNrICAgPSBOdW1iZXJUYWcgfCBCaWdJbnQzMlRhZzsKICAg
ICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwg
Qm9vbFRhZyB8IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUg
ICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uZjQ3
MWQzZGM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCi0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMjQwLDYgKzIzOSwxOCBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZShjb25zdCBKU0NlbGwqIHB0cikKICAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnQzMl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOwogfQogCitpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KQoreworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmln
SW50VGFnLCBWTSYgdm0sIGludDY0X3QgdmFsKQoreworICAgIHUuYXNCaXRzLnRhZyA9IENlbGxU
YWc7CisgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2YWwpOworICAgIHUuYXNC
aXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxs
Kj4ocHRyKSk7Cit9CisKIGlubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQodGFnKCkgIT0gRGVsZXRlZFZhbHVlVGFnKTsKQEAgLTMyOSw2ICszNDAsMTIg
QEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0JpdHMucGF5bG9hZCk7CiB9CiAKK0FM
V0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxK
U0JpZ0ludCo+KHUuYXNCaXRzLnBheWxvYWQpOworfQorCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWU6
OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQogewogICAgIEFTU0VSVCghaXNJ
bXB1cmVOYU4oZCkpOwpAQCAtNDY0LDYgKzQ4MSwyMiBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShKU0ZhbHNlVGFnKQogICAgIHUuYXNJbnQ2NCA9IFZhbHVlRmFsc2U7CiB9CiAKK2lubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QgdmFsdWUpCit7CisgICAgLy8g
VGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2ZSBudW1iZXJzLCBvdGhlcndpc2Ug
dGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50NjQgPSAoKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVtYmVyVGFnKSB8IEJpZ0ludDMyVGFnOworfQorCitp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludFRhZywgVk0mIHZtLCBpbnQ2NF90IHZhbHVl
KQoreworICAgIGlmICh2YWx1ZSA8PSBJTlRfTUFYICYmIHZhbHVlID49IElOVF9NSU4pCisgICAg
ICAgIHUuYXNJbnQ2NCA9ICh2YWx1ZSA8PCAxNikgfCBCaWdJbnQzMlRhZzsKKyAgICBlbHNlIHsK
KyAgICAgICAgSlNDZWxsKiBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOwor
ICAgICAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKKyAg
ICB9Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QK
IHsKICAgICAvLyBVbmRlZmluZWQgYW5kIG51bGwgc2hhcmUgdGhlIHNhbWUgdmFsdWUsIGJhciB0
aGUgJ3VuZGVmaW5lZCcgYml0IGluIHRoZSBleHRlbmRlZCB0YWcuCkBAIC01MjIsNiArNTU1LDEy
IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJl
dHVybiB1LnB0cjsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFw
QmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHUucHRyKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAKIGlubGluZSBpbnQ2NF90IHRyeUNvbnZlcnRUb0ludDUyKGRvdWJsZSBudW1iZXIp
CkBAIC02MTAsNyArNjQ5LDI3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29u
c3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gaXNCaWdJbnQz
MigpIHx8IGlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0hlYXBC
aWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNIZWFw
QmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50MzIoKSBjb25zdAor
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuICh1LmFzSW50NjQgJiBCaWdJbnQzMk1h
c2spID09IEJpZ0ludDMyVGFnOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
dS5hc0ludDY0ID4+IDE2KTsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBj
b25zdApAQCAtNjIwLDcgKzY3OSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkg
Y29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBjb25zdAogewotICAg
IHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlz
U3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuICFpc0NlbGwoKSB8
fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwo
KS0+aXNIZWFwQmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0
dGVyKCkgY29uc3QKQEAgLTc2MCw4ICs4MTksMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0
UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnUK
ICAgICAgICAgdmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IEFTU0VSVChpc1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQTmFOOworICAgIGlmIChpc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIG51bWJlciA9IFBOYU47CisgICAgICAgIHZhbHVlID0gKnRo
aXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVChpc0JpZ0ludDMy
KCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxs
b3dlZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlzOwogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4NDMsNDUgQEAgQUxXQVlTX0lOTElORSBkb3VibGUg
SlNWYWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1BTFdBWVNfSU5M
SU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFs
dWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAg
IGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91
YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0JpZ0ludCgpKQot
ICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNE
b3VibGUoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFz
QmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwge30pOwor
CisgICAgaWYgKHByaW1WYWx1ZS5pc0RvdWJsZSgpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQor
ICAgICAgICByZXR1cm4gcHJpbVZhbHVlOworCiAgICAgZG91YmxlIHZhbHVlID0gcHJpbVZhbHVl
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
MCk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9
KTsKKworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFy
aWFudDxKU0JpZ0ludCosIGludDMyX3Q+IEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFs
dWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgaWYg
KGlzSW50MzIoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgaWYg
KGlzRG91YmxlKCkgJiYgY2FuQmVJbnQzMihhc0RvdWJsZSgpKSkKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKCkpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAg
ICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgICAgICByZXR1cm4ganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSkpOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKworICAgIGlmIChwcmlt
VmFsdWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4g
cHJpbVZhbHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS50b0ludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgcmV0dXJu
IHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKyAgICByZXR1cm4g
anNOdW1iZXIodmFsdWUpOwogfQogCiBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CkBAIC0xMDMyLDM3ICsxMTAxLDE3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgZG8g
ewotICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICAg
ICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKLQotICAgICAgICBib29s
IHMxID0gdjEuaXNTdHJpbmcoKTsKLSAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7Ci0g
ICAgICAgIGlmIChzMSAmJiBzMikKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOwotCi0g
ICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHMyKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjJT
dHJpbmcgPSBhc1N0cmluZyh2MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCog
biA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKLSAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghbikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIHYyID0gSlNWYWx1ZShuKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAodjEuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKKyAg
ICAgICAgICAgIC8vIEd1YXJhbnRlZWluZyB0aGF0IGlmIHdlIGhhdmUgYSBudW1iZXIgaXQgaXMg
djIgbWFrZXMgc29tZSBvZiB0aGUgY2FzZXMgYmVsb3cgc2ltcGxlci4KKyAgICAgICAgICAgIHN0
ZDo6c3dhcCh2MSwgdjIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHMxICYmIHYyLmlzQmln
SW50KCkpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dmFs
dWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KGdsb2JhbE9iamVjdCwgdjFTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKG4p
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBkZWFs
cyB3aXRoIEJvb2xlYW5zLCBCaWdJbnQzMiwgT2JqZWN0cywgYW5kIGlzIGEgc2hvcnRjdXQgZm9y
IGEgZmV3IG1vcmUgdHlwZXMuCisgICAgICAgIC8vIEl0IGhhcyB0byBjb21lIGhlcmUgYW5kIG5v
dCBiZWZvcmUsIGJlY2F1c2UgaXQgaXMgTk9UIHRydWUgdGhhdCBOYU4gPT0gTmFOCisgICAgICAg
IGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGlmICh2
MS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRP
ck51bGwoKSkKQEAgLTEwODAsNyArMTEyOSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAK
ICAgICAgICAgaWYgKHYxLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc09iamVj
dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIHYxID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5
CiAgICAgICAgICAgICBKU1ZhbHVlIHAxID0gdjEudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAg
ICAgIHYxID0gcDE7CkBAIC0xMTAyLDU2ICsxMTUxLDgwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBK
U1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTCiAgICAgICAgIGJvb2wgc3ltMiA9IHYyLmlzU3ltYm9sKCk7CiAgICAgICAgIGlmIChzeW0x
IHx8IHN5bTIpIHsKICAgICAgICAgICAgIGlmIChzeW0xICYmIHN5bTIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGFzU3ltYm9sKHYxKSA9PSBhc1N5bWJvbCh2Mik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNs
eQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBz
MSA9IHYxLmlzU3RyaW5nKCk7CisgICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOworICAg
ICAgICBpZiAoczEpIHsKKyAgICAgICAgICAgIGlmIChzMikKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBh
c1N0cmluZyh2MikpKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwgdjIpOworICAgICAgICAg
ICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdG8gZW50ZXIgdGhlIG5leHQgY2FzZSwgc28gbG9zaW5n
IHRoZSBpbnZhcmlhbnQgb2Ygb25seSB2MiBiZWluZyBhIG51bWJlciBpcyBmaW5lCisgICAgICAg
IH0KICAgICAgICAgaWYgKHMxIHx8IHMyKSB7Ci0gICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50
b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwotICAgICAgICAgICAgZG91YmxlIGQyID0gdjIudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
LSAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBndWFy
YW50ZWVkIHRoYXQgdGhlIHN0cmluZyBpcyB2MiAodGhhbmtzIHRvIHRoZSBzd2FwIGFib3ZlKQor
ICAgICAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
djJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
IHYyID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwor
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXYyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgaWYgKHYxID09IHYyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsgLy8gRm9yIEJpZ0ludDMyCisgICAgICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2gg
dG8gdGhlIGdlbmVyaWMgY29kZSBmb3IgY29tcGFyaW5nIEJpZ0ludHMgKHdoaWNoIGlzIG9ubHkg
bWlzc2luZyB0aGUgQmlnSW50MzIvQmlnSW50MzIgY2FzZSwgaGVuY2UgdGhlIGNoZWNrIGFib3Zl
KQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodjEuaXNOdW1i
ZXIoKSB8fCB2MS5pc0Jvb2xlYW4oKSk7CisgICAgICAgICAgICAgICAgZG91YmxlIGQxID0gdjEu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZG91YmxlIGQyID0gdjIudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGQxID09IGQyOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHYxLmlzQm9vbGVhbigpKSB7CiAgICAgICAg
ICAgICBpZiAodjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZG91YmxlPih2MS5hc0Jvb2xlYW4oKSkgPT0gdjIuYXNOdW1iZXIoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHYyLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICB2MSA9IEpTVmFsdWUo
djEudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICB2MSA9IEpTVmFsdWUodjEudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KSk7CisgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgQmlnSW50L051
bWJlciBjb21wYXJpc29uIGJlbG93CisgICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgb25lIG1v
cmUgc3dhcCB0byByZXBhaXIgdGhlIHJ1bGUgdGhhdCBvbmx5IHYyIGlzIGFsbG93ZWQgdG8gYmUg
YSBudW1iZXIgaW4gdGhlc2UgY29tcGFyaXNvbnMKKyAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwg
djIpOwogICAgICAgICB9IGVsc2UgaWYgKHYyLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICBp
ZiAodjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHYyLmFzQm9vbGVhbigpKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHYxLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICB2MiA9IEpTVmFsdWUodjIudG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICB2MiA9IEpTVmFsdWUodjIudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KSk7CisgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgQmlnSW50L051bWJlciBj
b21wYXJpc29uIGJlbG93CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0Jp
Z0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVx
dWFscyhhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
djEuaXNCaWdJbnQoKSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmln
SW50KHYxKS0+ZXF1YWxzVG9OdW1iZXIodjIpOwogCi0gICAgICAgIGlmICh2Mi5pc0JpZ0ludCgp
ICYmIHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjIpLT5lcXVh
bHNUb051bWJlcih2MSk7CisgICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
ICAgIGlmICh2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMy
QXNJbnQzMigpID09IHYyLmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMy
QXNJbnQzMigpKSA9PSB2Mi5hc0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2
Mik7CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgIGlmICh2
MS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgp
LCB2Mi5hc0hlYXBCaWdJbnQoKSk7CisgICAgICAgICAgICBpZiAodjIuaXNCaWdJbnQzMigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2
Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVtYmVyKHYy
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxlICh0cnVl
KTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1
YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYxLCBKU0Nl
bGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7Ci0KLSAg
ICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkp
CisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7Ci0gICAg
aWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTQmln
SW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2MS0+aXNI
ZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8SlNCaWdJ
bnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE2MywxMCArMTIzNiwx
NiBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYy
LmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVy
KCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0
dXJuIHYxID09IHYyOworICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5i
aWdJbnQzMkFzSW50MzIoKSk7CiAKLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGlu
ZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNU
b0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2
Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2Jq
ZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOworCisgICAgcmV0dXJuIHYxID09IHYyOwog
fQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0
CkBAIC0xMTg0LDE1ICsxMjYzLDIyIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3Ry
aWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgp
KQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5h
c0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAg
ICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJ
bXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIp
LT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcp
Ci0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICBpZiAodjEuaXNIZWFw
QmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEu
YXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpKTsKKwor
ICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJl
dHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQz
MkFzSW50MzIoKSkpOworCisgICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKSB7Cisg
ICAgICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJp
bmcoKSkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmlu
Zyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCog
djJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAg
aWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbCgqdjFTdHJp
bmcsICp2MlN0cmluZykpOworICAgICAgICB9CisgICAgICAgIGlmICh2MS5hc0NlbGwoKS0+aXNI
ZWFwQmlnSW50KCkgJiYgdjIuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFz
SGVhcEJpZ0ludCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2
Mik7CkBAIC0xMjA2LDYgKzEyOTIsOCBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRv
Qm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91
YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgog
ICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFu
KCk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQz
MigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAgICByZXR1cm4gaXNUcnVlKCkg
PyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NC4uZThjNjcwYjQ3ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBpZiAo
Y2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0lu
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTExOCw3ICsxMTgsNyBAQCBi
b29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgp
IHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxs
LT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
Y2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
ZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBKU1Zh
bHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsK
ICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5
bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwot
ICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
T2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7
CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51
bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1p
dGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3Qs
IG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+
KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsK
IH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaXNT
eW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMp
LT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChp
c0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisg
ICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNT
eW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50
b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAppbmRleCA2NjVkMDg4OWNmNC4uNGQyNzM5MjU1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgog
ICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAg
ICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsK
ICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAyZGFmN2JjMGRkYi4uYzI4MzgzNjgzNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAg
LTIwNSw5ICsyMDUsOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6
aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKKyAgICByZXR1cm4gbV90eXBl
ID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkg
Y29uc3QKQEAgLTM0MSw3ICszNDEsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9C
b29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29s
ZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTM1MCw3ICszNTAsNyBAQCBp
bmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAo
aXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4o
dGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICBp
ZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlT
dGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVy
biBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApp
bmRleCAyMmMwMTIwNWMyZi4uZmUwMTJmOGM3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaApAQCAtMTAzOCw2ICsxMDM4LDggQEAgaW5saW5lIGJvb2wgSlNWYWx1
ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAg
IHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZv
ciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29s
ZWFuKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
ICEhYmlnSW50MzJBc0ludDMyKCk7CiAgICAgcmV0dXJuIGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVs
bCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBmYWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggYjAyYjM0N2Q2YTUuLjgzYmRkOWUxMGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5
cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShT
eW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkKKyAgICBDQVNFKEhlYXBCaWdJbnRUeXBl
KQogICAgIENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSkKICAgICBDQVNFKEFQSVZhbHVlV3Jh
cHBlclR5cGUpCiAgICAgQ0FTRShOYXRpdmVFeGVjdXRhYmxlVHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggMTQ3OTkyNWQ2ZjUuLjc3YTAxMTI1NjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMjcsNyArMjcsNyBAQCBlbnVt
IEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIENlbGxUeXBlLAogICAgIFN0cmluZ1R5cGUsCiAgICAg
U3ltYm9sVHlwZSwKLSAgICBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRUeXBlLAogCiAgICAg
R2V0dGVyU2V0dGVyVHlwZSwKICAgICBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4IDNjZDcxM2Q4NGYzLi44OGUz
MGYyMDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApA
QCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2ln
bmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFn
cyAmIGZsYWc7IH0KICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3Qg
eyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgp
OyB9CiAKLSAgICB1aW50OF90IG1fdHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOwogICAgIHVpbnQ4
X3QgbV9mbGFnczsKICAgICB1aW50MTZfdCBtX2ZsYWdzMjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUu
Y3BwCmluZGV4IGM0ZWJiZWM1MDM1Li4yN2EyMjFjMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5j
cHAKQEAgLTI2LDkgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlLmgiCiAKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2Ny
aWJibGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggNDkwNWQ1YmFmMDcuLjU3MjA0MGVkOGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtMzYsMTEg
KzM2LDYgQEAgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxTbG93Q2Fz
ZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3RyaWN0
RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKQotewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2Jh
bE9iamVjdCwgdjEsIHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQog
ewogICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1
ZSgpCkBAIC03MywyMSArNjgsMTcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAxU3RyaW5n
LCBhc1N0cmluZyhwMikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGFkZGl0aW9uLiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6Z2V0
PGRvdWJsZT4obGVmdE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsK
KyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRv
dWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJp
Z0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsK
KyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsK
KyAgICAgICAgcmVzdWx0ICs9IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhh
c092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOwor
ICAgIH07CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcml0aG1ldGljQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjphZGQsIGRvdWJsZU9wLCBiaWdJbnQzMk9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcykp
OwogfQogCiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQpAQCAtMTI4LDcgKzExOSw3IEBAIGJvb2wganNJ
c09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0eXBlID0gdi5hc0Nl
bGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1i
b2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBl
IHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAgICAgICBp
ZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xv
YmFsT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApp
bmRleCA0YmJlMjNjMDcyNS4uYjQyZDQyOGUwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0yMzksNiArMjM4LDM0IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21S
ZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlCiAgICAgcmV0dXJu
IHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdjEsIEpTVmFsdWUgcHJpbVZhbHVlKQoreworICAg
IEFTU0VSVChwcmltVmFsdWUuaXNQcmltaXRpdmUoKSk7CisgICAgQVNTRVJUKCFwcmltVmFsdWUu
aXNCaWdJbnQoKSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHByaW1WYWx1ZS5p
c1N0cmluZygpKSB7CisgICAgICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9i
YWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgICAgIGlmICghYmlnSW50VmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5l
ZDsKKworICAgICAgICBpZiAoYmlnSW50VmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmUodjEsIGJpZ0ludFZhbHVlLmFzSGVhcEJpZ0ludCgp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmlnSW50VmFsdWUuaXNCaWdJ
bnQzMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1c2Ugc29tZXRoaW5nIGxlc3MgaGFja3ks
IGUuZy4gc29tZSBraW5kIG9mIEpTQmlnSW50Ojpjb21wYXJlVG9JbnQzMgorICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0YXRpY19jYXN0PGRvdWJsZT4o
YmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0
OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBu
dW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlUmVzdWx0
KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQsIEpTQmlnSW50OjpD
b21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUg
PT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKQEAgLTI1NSw1MSArMjgyLDQ0
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAot
ICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBi
aWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJ
bnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7
Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAgICAgIGlmIChwcmltVmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJ
bnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFs
dWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQo
SlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRWYWx1ZSksIGNvbXBhcmlzb25N
b2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFz
QmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBhcmlzb25Nb2RlKTsKKyAgICBp
ZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAoY29t
cGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAgICAg
ICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQzMigp
OworICAgICAgICBBU1NFUlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25N
b2RlOjpMZXNzVGhhbk9yRXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMy
KCkgPD0gdjIuYmlnSW50MzJBc0ludDMyKCk7CisgICAgfQorCisgICAgSlNCaWdJbnQqIHYxSGVh
cEJpZ0ludCA9IG51bGxwdHI7CisgICAgSlNCaWdJbnQqIHYySGVhcEJpZ0ludCA9IG51bGxwdHI7
CisgICAgLy8gRklYTUU6IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRoIGZvciBhIGNvbXBhcmlzb24g
YmV0d2VlbiBhIHNtYWxsIGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAgICBpZiAodjEuaXNCaWdJbnQz
MigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjEu
YmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKQorICAg
ICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsKIAotICAgICAgICBkb3VibGUg
bnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAo
djIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UgaWYgKHYyLmlzSGVhcEJp
Z0ludCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsKKworICAg
IGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFwQmlnSW50KQorICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBCaWdJbnQsIHYySGVhcEJpZ0lu
dCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQpIHsKKyAgICAgICAg
YXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwgbnVtYmVyVmFsdWUpLCBjb21wYXJp
c29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25S
ZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZSBwcmltVmFs
dWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNCaWdJ
bnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwg
YXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29t
cGFyaXNvbk1vZGUpOwotICAgIH0KLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFz
QmlnSW50KHByaW1WYWx1ZSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAK
LSAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIHYySGVhcEJpZ0ludCwgdjEpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLQogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVj
YXVzZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29t
cGFyaXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBu
dW1iZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJp
c29uTW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVybiBjb21w
YXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8
fCBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsK
KworCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCB0b1ByaW1pdGl2ZU51bWVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2LCBKU1ZhbHVlJiBwLCBkb3VibGUmIG4pCkBA
IC0zNTcsNyArMzc3LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8
IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcy
KSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0
LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3
LDcgKzQyNyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2Fz
Tm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsK
ICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAx
LCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAt
NDUyLDcxICs0NzIsMjk4IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpz
QWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFt
ZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3As
IERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAg
IEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOwotICAgICAgICB9CisgICAgaWYgKGxlZnROdW1lcmljLmlzTnVtYmVyKCkgJiYgcmln
aHROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihkb3VibGVPcChs
ZWZ0TnVtZXJpYy5hc051bWJlcigpLCByaWdodE51bWVyaWMuYXNOdW1iZXIoKSkpOwogCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CisgICAgaWYg
KGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlz
QmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmlnSW50MzJP
cChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgSlNC
aWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBC
aWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0lu
dE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZt
LCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50
LCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgaWYgKHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGds
b2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0SGVhcEJpZ0ludCkp
OworICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkKKyAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVj
dCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KSkpOwogICAgIH0KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91Ymxl
IGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgLSBy
aWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29y
ZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgLT0gcmlnaHQ7CisgICAg
ICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGlj
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpzdWIsIGRvdWJsZU9wLCBi
aWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRy
YWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworICAgICAgICBD
aGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICBy
ZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyAgICB9OworCisgICAgcmV0dXJu
IGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRp
cGx5LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmln
aHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAg
ICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBK
U1ZhbHVlIHsKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGxlZnQgLyBy
aWdodCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpkaXZpZGUsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiJfcyk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JlbWFpbmRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBb
XSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJu
IGpzTW9kKGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChp
bnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0
aGluZyBtb3JlIGNsZXZlciBoZXJlLgorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIH07
CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBK
U0JpZ0ludDo6cmVtYWluZGVyLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIuIl9zKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwg
ZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0aFBv
dyhsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJf
dCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEV4cG9uZW50aWF0aW9uIG9uIGlu
dGVnZXJzIGlzIGJvdGggc29tZXdoYXQgc2xvdyBpbiB0aGUgYmVzdCBjYXNlLCBhbmQgdmVyeSBs
aWtlbHkgdG8gb3ZlcmZsb3cuCisgICAgICAgIC8vIFNvIGRvbid0IGJvdGhlciB0cnlpbmcgdG8g
YXZvaWQgYSBoZWFwIGFsbG9jYXRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlLCBkb3VibGVPcCwgYmlnSW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlv
bi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNJbmMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBW
YXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgVmFyaWFu
dDxKU0JpZ0ludCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgKyAxKTsKKyAgICBpZiAob3Bl
cmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3VmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgKyAx
OworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5lcyBtaWdodCBi
ZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIGlm
IChuZXdWYWx1ZSA+IElOVF9NQVgpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9CisgICAgQVNT
RVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hl
YXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1l
cmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5h
c051bWJlcigpIC0gMSk7CisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgewor
ICAgICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xs
b3dpbmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBh
IGhlbHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+
KG5ld1ZhbHVlKSk7CisgICAgfQorICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJ
bnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVjKGdsb2Jh
bE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVy
aWMgPSB2LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNJbnQzMigpKQor
ICAgICAgICByZXR1cm4ganNOdW1iZXIofm9wZXJhbmROdW1lcmljLmFzSW50MzIoKSk7CisKKyAg
ICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkp
OworCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwg
b3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1Zh
bHVlIHNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIsIGJvb2wgaXNMZWZ0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxl
ZnROdW1lcmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJp
Yy5pc0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBsZWZ0SW50MzIgPSBsZWZ0TnVtZXJpYy5h
c0ludDMyKCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5hc0lu
dDMyKCkgJiAzMTsKKyAgICAgICAgaW50MzJfdCByZXN1bHQgPSBpc0xlZnQgPyAobGVmdEludDMy
IDw8IHJpZ2h0SW50MzIpIDogKGxlZnRJbnQzMiA+PiByaWdodEludDMyKTsKKyAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKHJlc3VsdCk7CisgICAgfQogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBXVEY6
OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBsZWZ0SW50MzIgPSBsZWZ0TnVtZXJp
Yy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHRO
dW1lcmljLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAocmlnaHRJbnQzMiA8IDApIHsK
KyAgICAgICAgICAgIGlzTGVmdCA9ICFpc0xlZnQ7CisgICAgICAgICAgICByaWdodEludDMyID0g
LXJpZ2h0SW50MzI7CiAgICAgICAgIH0KIAotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIG11
bHRpcGxpY2F0aW9uLiJfcyk7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIC8vIFRoaXMg
c3RkOjptaW4gaXMgYSBiaXQgaGFja3ksIGJ1dCByZXF1aXJlZCBiZWNhdXNlIGluIEMrKyBpdCBp
cyB1bmRlZmluZWQgYmVoYXZpb3IgdG8gZG8gYSBzaGlmdCB3aGVyZSB0aGUgcmlnaHQgb3BlcmFu
ZCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBiaXQtd2lkdGggb2YgdGhlIGxlZnQgb3BlcmFu
ZC4KKyAgICAgICAgaWYgKCFpc0xlZnQpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCBsZWZ0SW50MzIgPj4gc3RkOjptaW4ocmlnaHRJbnQzMiwgMzEpKTsK
KworICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIGxlZnQgc2hpZnQgd2UgY2FuIG92ZXJmbG93
LiBJIGRlYWwgd2l0aCB0aGlzIGJ5IGFsbG9jYXRpbmcgSGVhcEJpZ0ludHMuCisgICAgICAgIC8v
IEZJWE1FOiBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBkbyBzb21ldGhpbmcgc21hcnRlciwgdHJ5
aW5nIHRvIGRvIHRoZSBsZWZ0IHNoaWZ0IGFuZCBkZXRlY3Rpbmcgc29tZWhvdyBpZiBpdCBvdmVy
Zmxvd2VkLgorICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgbGVmdEludDMyKTsKKyAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0lu
dCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodEludDMyKTsKKyAgICAgICAgaWYgKGlz
TGVmdCkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6Omxl
ZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKICAg
ICB9CiAKLSAgICBkb3VibGUgbGVmdFZhbHVlID0gIFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVy
aWMpOwotICAgIGRvdWJsZSByaWdodFZhbHVlID0gIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1l
cmljKTsKLSAgICByZXR1cm4ganNOdW1iZXIobGVmdFZhbHVlICogcmlnaHRWYWx1ZSk7CisgICAg
aWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkp
IHsKKyAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBpc0xlZnQgPyAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIgOiAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVy
YXRpb24uIjsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50
ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxl
ZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQz
MigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50
MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisKKyAgICBpZiAoaXNMZWZ0KQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xv
YmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmpl
Y3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKIH0KIAotaW5saW5lIGJvb2wg
c2NyaWJibGVGcmVlQ2VsbHMoKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTFNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAg
cmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cisg
ICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxPYmplY3QsIHYx
LCB2MiwgaXNMZWZ0KTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGlu
dHB0cl90PigweGJhZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAg
Ym9vbCBpc0xlZnQgPSBmYWxzZTsKKyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0LCB2MSwg
djIsIGlzTGVmdCk7Cit9CiAKLWlubGluZSBib29sIGlzU2NyaWJibGVkVmFsdWUoSlNWYWx1ZSB2
YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIElu
dDMyT3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmln
SW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3Qg
Y2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUp
ID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAo
bGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAg
IHJldHVybiBqc051bWJlcihpbnQzMk9wKGxlZnROdW1lcmljLmFzSW50MzIoKSwgcmlnaHROdW1l
cmljLmFzSW50MzIoKSkpOworCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSAmJiBy
aWdodE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCBpbnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAvLyBGSVhNRTogYWRkIGZhc3QgcGF0
aCBmb3IgQmlnSW50MzIgLyBIZWFwQmlnSW50LCBhbmQgZm9yIEhlYXBCaWdJbnQgLyBCaWdJbnQz
MgorICAgIC8vIEluIG1hbnkgY2FzZXMgdGhlc2UgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVu
dCB0aGFuIGhlYXAtYWxsb2NhdGluZyB0aGUgc21hbGwgYmlnLWludCBhbmQgZ29pbmcgdGhyb3Vn
aCB0aGUgZ2VuZXJpYyBwYXRoLgorICAgIC8vIEJ1dCBpdCBpcyBxdWl0ZSB0cmlja3ksIG5vdCBs
ZWFzdCBiZWNhdXNlIEhlYXBCaWdJbnQgdXNlIGEgc2lnbiBiaXQgd2hlcmVhcyBCaWdJbnQzMiB1
c2UgMi1jb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgorCisgICAgaWYgKCEobGVmdE51bWVyaWMu
aXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworCisgICAg
SlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxl
ZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQg
PSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJp
Z2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50
KCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRPcChnbG9iYWxPYmplY3Qs
IGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKIH0KIAotaW5saW5lIHZvaWQgc2Ny
aWJibGUodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNC
aXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IHNpemUgLyBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpOyBpLS07KSB7Ci0gICAgICAgIC8vIFVzZSBhIDE2LWJ5dGUgYWxpZ25lZCB2YWx1ZSB0byBl
bnN1cmUgdGhhdCBpdCBwYXNzZXMgdGhlIGNlbGwgY2hlY2suCi0gICAgICAgIHN0YXRpY19jYXN0
PEVuY29kZWRKU1ZhbHVlKj4oYmFzZSlbaV0gPSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0
PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKLSAgICB9CisgICAgYXV0byBpbnQzMk9wID0gW10g
KGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVy
biBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBw
YWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJhbmQiIGFuZCByZS1ib3gg
dGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZS4KKyAg
ICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6
Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNCaXR3aXNlT3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBp
bnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsK
KyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMy
LCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2Ug
Y291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VC
aW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VPciwgaW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicg
b3BlcmF0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sK
KyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBp
bnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8g
RklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBk
byB0aGUgInhvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVj
dGx5IG9uIHRoZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4
MTIgYXQgdGhlIGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFy
eU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9w
ZXJhdGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFs
V2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWlu
dDMyX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpYmJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDc3ZTY1YTcwNDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ2Vs
bC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAg
cmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9
CisKKyNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVm
MCkKKworaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNl
X2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJs
ZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAv
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0
ZSBhbGlnbmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4K
KyAgICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6
OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCmluZGV4IDBjZDk4ZDUyYWNjLi45NzcwOWVlNmZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjc5LDcgKzI3OSw3IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5n
UHJvdG90eXBlKCk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gQmlnSW50VHlwZSkKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBI
ZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90
eXBlKCk7CiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1i
b2xUeXBlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391711</attachid>
            <date>2020-02-25 18:24:35 -0800</date>
            <delta_ts>2020-03-02 14:00:44 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>341294</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zYjU2Yzg1OGIy
OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCkBAIC0xNCw3ICsxNCw3IEBAIGFzc2Vy
dC5zYW1lVmFsdWUgPSBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiB9CiAK
IGZ1bmN0aW9uIHRlc3REaXYoeCwgeSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAvIHks
IHosIHggKyAiIC8gIiArIHkgKyAiID0gIiArIHopOworICAgIGFzc2VydC5zYW1lVmFsdWUoeCAv
IHksIHosIHggKyAiIC8gIiArIHkgKyAiID0gIiArICh4L3kpICsgIiBidXQgc2hvdWxkIGJlICIg
KyB6KTsKIH0KIAogdGVzdERpdigweEZFRENCQTk4NzY1NDMyMTBuLCAweEZFRENCQTk4NzY1NDMy
MTBuLCAweDFuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlm
dC13cmFwcGVkLXZhbHVlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdy
YXBwZWQtdmFsdWUuanMKaW5kZXggYzY5ZGJkYTMzZDMuLmY4MTJiMWNiYTQxIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwpAQCAt
Myw3ICszLDcgQEAKIGFzc2VydCA9IHsKICAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihtZXNzYWdlICsgIiBpbnB1dDogIiArIGlucHV0ICsgIiAhPSBleHBlY3RlZDogIiAr
IGV4cGVjdGVkKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWxvZ2ljYWwtbm90LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5q
cwppbmRleCBhZjI4YTcyYjFjMy4uZDAyZTU1MmY5YzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
b2dpY2FsLW5vdC5qcwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5CaWdJbnRFbmFibGVkCiAKLWZ1
bmN0aW9uIGFzc2VydChhLCBlKSB7CitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbikgewogICAgIGlm
IChhICE9PSBlKSB7Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBsb2dpY2FsIG5lZ2F0aW9uIGZvciAiICsgbik7CiAgICAgfQog
fQogCkBAIC0xMiw5ICsxMiw5IEBAIGZ1bmN0aW9uIGxvZ2ljYWxOb3QoYSkgewogbm9JbmxpbmUo
bG9naWNhbE5vdCk7CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICBh
c3NlcnQobG9naWNhbE5vdCgxMG4pLCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4p
LCBmYWxzZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgtMW4pLCBmYWxzZSk7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFs
c2UsIDEwbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMW4pLCBmYWxzZSwgMW4pOworICAgIGFz
c2VydChsb2dpY2FsTm90KDBuKSwgdHJ1ZSwgMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KC0x
biksIGZhbHNlLCAtMW4pOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LW1vZC1qaXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1vZC1qaXQuanMKaW5kZXggODFj
NWRhN2M1YmMuLjg1OTU0MGM4NTMxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LW1vZC1qaXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzCkBAIC0y
NSw5ICsyNSw5IEBAIG5vSW5saW5lKGJpZ0ludE1vZEZvbGRpbmcpOwogCiBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKICAgICBsZXQgciA9IGJpZ0ludE1vZEZvbGRpbmcoMTAsIDMw
KTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKHIsIC0xMCwgIi0oIiArIDEwICsgIiAlICIgKyAzMCAr
ICIpID0gIiArIHIpOworICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiW051bWJlcl0gLSgi
ICsgMTAgKyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CiB9CiAKIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMG4sIDMwbik7Ci1hc3NlcnQuc2FtZVZhbHVlKHIsIC0xMG4sICItKCIgKyAxMG4g
KyAiICUgIiArIDMwbiArICIpID0gIiArIHIpOworYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTBuLCAi
W0JpZ0ludF0gLSgiICsgMTBuICsgIiAlICIgKyAzMG4gKyAiKSA9ICIgKyByKTsKIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCmluZGV4IDRlNThjYTYw
NzQwLi5jYjJmNjk1MDU3NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1yaWdo
dC1zaGlmdC1nZW5lcmFsLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hp
ZnQtZ2VuZXJhbC5qcwpAQCAtMiwxMDMgKzIsNjIgQEAKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3
IEpvc2ggV29sZmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBUaGlzIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgdGhlIEJTRCBsaWNlbnNlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLyBNb2Rp
ZmllZCBieSBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUuCiAKLWZ1bmN0aW9uIGFzc2VydChhKSB7
Ci0gICAgaWYgKCFhKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsK
K2Z1bmN0aW9uIHRlc3RSaWdodFNoaWZ0KGxlZnQsIHJpZ2h0LCBleHBlY3RlZCkKK3sKKyAgICB2
YXIgcmVzdWx0ID0gbGVmdCA+PiByaWdodDsKKyAgICBpZiAocmVzdWx0ICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIiICsgbGVmdCArICIsICIgKyByaWdodCArICIgcmVz
dWx0ZWQgaW4gIiArIHJlc3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZCk7CiB9CiAK
LWFzc2VydC5zYW1lVmFsdWUgPSBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
Ci0gICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1l
c3NhZ2UpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwIDsgKytpKSB7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMG4sIDBuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMW4sIDBiMTAx
MG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgLTJuLCAwYjEwMTAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMGIxMDFuLCAtM24sIDBiMTAxMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MGIxMDFuLCAxbiwgMGIxMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgMm4sIDFuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDNuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MG4sIC0xMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMG4sIDEyOG4sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIDBuLCAweDI0Nm4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MjQ2biwgLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjhuLCAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI5biwgMHg0OGMw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MjQ2biwgMTI4biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtNjRuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlm
dCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTE2biwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMG4sIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuKTsKKyAgICB0ZXN0UmlnaHRTaGlm
dCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZuLCAweDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzRuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMzJuLCAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMm4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCA2NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLCAxMjduLCAweDI0NjhhY24pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjhuLCAweDEyMzQ1Nm4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxMjluLCAweDkxYTJibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAtMW4sIC0weGFuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0ybiwgLTB4MTRuKTsKKyAgICB0ZXN0UmlnaHRTaGlm
dCgtNW4sIC0zbiwgLTB4MjhuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIDFuLCAtM24pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMm4sIC0ybik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVu
LCAzbiwgLTFuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMW4sIC0xMjhuLCAtMHgxMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMW4sIDBuLCAt
MW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMTI4biwgLTFuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAwbiwgLTB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MjQ2biwg
LTEyN24sIC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MjQ2biwgLTEyOG4sIC0weDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MjQ2biwgLTEyOW4sIC0weDQ4YzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MjQ2biwgMTI4biwgLTFuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTMybiwgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdo
dFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTE2biwg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAw
biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDE2
biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4pOworICAgIHRlc3RSaWdo
dFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMzJuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzNuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI3biwgLTB4MjQ2OGFkbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjhu
LCAtMHgxMjM0NTduKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOW4sIC0weDkxYTJjbik7CiB9Ci0KLWFzc2VydC5zYW1l
VmFsdWUoMG4gPj4gMG4sIDBuLCAiMG4gPj4gMG4gPT09IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KDBiMTAxbiA+PiAtMW4sIDBiMTAxMG4sICIwYjEwMW4gPj4gLTFuID09PSAwYjEwMTBuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKDBiMTAxbiA+PiAtMm4sIDBiMTAxMDBuLCAiMGIxMDFuID4+IC0ybiA9
PT0gMGIxMDEwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0zbiwgMGIxMDEwMDBu
LCAiMGIxMDFuID4+IC0zbiA9PT0gMGIxMDEwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBiMTAx
biA+PiAxbiwgMGIxMG4sICIwYjEwMW4gPj4gMW4gPT09IDBiMTBuIik7Ci1hc3NlcnQuc2FtZVZh
bHVlKDBiMTAxbiA+PiAybiwgMW4sICIwYjEwMW4gPj4gMm4gPT09IDFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKDBiMTAxbiA+PiAzbiwgMG4sICIwYjEwMW4gPj4gM24gPT09IDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKDBuID4+IC0xMjhuLCAwbiwgIjBuID4+IC0xMjhuID09PSAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgwbiA+PiAxMjhuLCAwbiwgIjBuID4+IDEyOG4gPT09IDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKDB4MjQ2biA+PiAwbiwgMHgyNDZuLCAiMHgyNDZuID4+IDBuID09PSAweDI0Nm4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IC0xMjduLCAweDEyMzAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwbiwgIjB4MjQ2biA+PiAtMTI3biA9PT0gMHgxMjMwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IC0x
MjhuLCAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIjB4MjQ2biA+PiAt
MTI4biA9PT0gMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoMHgyNDZuID4+IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwbiwgIjB4MjQ2biA+PiAtMTI5biA9PT0gMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDEyOG4sIDBuLCAi
MHgyNDZuID4+IDEyOG4gPT09IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRuLCAweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4sCi0gICIweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRuID09PSAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IC0zMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4s
Ci0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09
PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAw
MG4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMTZu
ID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IDBuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwKLSAg
IjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuID09PSAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuLCAw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzRuLAotICAiMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzRuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMybiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IDMybiA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuIik7Ci1hc3Nl
cnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
biA+PiA2NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYW4sCi0gICIweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDEyN24sIDB4MjQ2OGFjbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IDB4MjQ2OGFjbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMTI4biwgMHgxMjM0NTZuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI4biA9PT0gMHgxMjM0NTZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAweDkxYTJi
biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4g
PT09IDB4OTFhMmJuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAtMW4sIC0weGFuLCAiLTVu
ID4+IC0xbiA9PT0gLTB4YW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0ybiwgLTB4MTRu
LCAiLTVuID4+IC0ybiA9PT0gLTB4MTRuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAtM24s
IC0weDI4biwgIi01biA+PiAtM24gPT09IC0weDI4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gMW4sIC0zbiwgIi01biA+PiAxbiA9PT0gLTNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+
PiAybiwgLTJuLCAiLTVuID4+IDJuID09PSAtMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+
IDNuLCAtMW4sICItNW4gPj4gM24gPT09IC0xbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4g
LTEyOG4sIC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMW4gPj4gLTEy
OG4gPT09IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTFuID4+IDBuLCAtMW4sICItMW4gPj4gMG4gPT09IC0xbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtMW4gPj4gMTI4biwgLTFuLCAiLTFuID4+IDEyOG4gPT09IC0xbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IDBuLCAtMHgyNDZuLCAiLTB4MjQ2biA+PiAwbiA9PT0gLTB4
MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjduLCAtMHgxMjMwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjduID09PSAtMHgxMjMw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4
MjQ2biA+PiAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAi
LTB4MjQ2biA+PiAtMTI4biA9PT0gLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyOW4sIC0weDQ4YzAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyOW4gPT09IC0weDQ4YzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgy
NDZuID4+IDEyOG4sIC0xbiwgIi0weDI0Nm4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
LTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAw
MDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAtNjRuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAw
MDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMTZuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAwbiwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzVuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09
PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzNuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gNjRuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JibiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuIik7
Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI3biwgLTB4MjQ2OGFkbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduID09PSAtMHgyNDY4YWRuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
MTI4biwgLTB4MTIzNDU3biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjhuID09PSAtMHgxMjM0NTduIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biwgLTB4OTFh
MmNuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEy
OW4gPT09IC0weDkxYTJjbiIpOwotCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3Ry
aW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0
LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28o
YXJyYXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5
Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBl
Y3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24t
Y2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2Vw
dGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4
Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0
aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEg
PSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIg
PSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAg
ICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBz
MjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOC4uYmE2NTFiMGU0MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC04NjYsNiArODY2LDcgQEAKIAkJMkFEODkzMkIxN0UzODY4RjAw
NjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVy
YXRpb25TY29wZS5oICovOyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0
dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0
MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3Jp
Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyog
U2NyaWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1
NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQy
M0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFG
MCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzNCMkE1NDcyMjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFs
dWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODRGQjFCREFDREFDMDA4MEZGNzQgLyogQjNWYWx1ZUlubGluZXMuaCAqLzsgfTsKQEAg
LTM1MDcsNiArMzUwOCw3IEBACiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlE
VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdEODk5
OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNG
MTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
Mzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lv
blRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJl
c3Npb25UcmVlcy5jcHA7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9u
VHJlZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVG
MDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBwYXRoID0g
YjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURl
YWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRWxpbWlu
YXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTQzLDYgKzc1NDUsNyBAQAogCQkJCTBGRTA1MDIw
MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oICovLAogCQkJCTBGRTA1
MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIx
QUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggKi8sCisJCQkJMzMxMTFCOEEyMzk3MjU2
NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8sCiAJCQkJMTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJB
IC8qIFNjcmlwdEV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUNEMURDMDJENzkwMEFBMjlC
QSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi8sCiAJCQkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3
IC8qIFNjcmlwdEZldGNoZXIuaCAqLywKQEAgLTg5MDcsNiArODkxMCw3IEBACiAJCQkJMEZFQzg1
OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmli
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxs
b2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFG
MDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0
RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBjMTAwMjQw
NGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaApAQCAtNDY5OCw3ICs0Njk4LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAvLyBJbW1lZGlhdGVzOgogICAgICAgICAvLwotICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hv
dWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVt
aXR0ZWQuCisgICAgICAgIC8vIEFuIGltbWVkaWF0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUg
YXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KICAgICAgICAgLy8gVGhl
IHdyaXRlcyBhcmUgdW5jaGVja2VkIHNpbmNlIHRoZSBvcGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3
aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4KIAogICAgICAgICB2b2lkIGltbWVkaWF0ZTgoaW50IGlt
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2Zp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAK
aW5kZXggZmVhNjY3NDViNjIuLmEwYzNkMjYzMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4K
LXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxs
SGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2
b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhl
bHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVy
c01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxk
RW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICgh
c2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFz
aG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgs
OSArNDgsMTkgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5r
KCZqaXQpOwogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
bm90QmlnSW50MzI7CisgICAgaml0LmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihy
ZWdzLCB0ZW1wR1BSKTsKKyAgICBlbWl0U2V0QmlnSW50MzIoaml0KTsKKyAgICBkb25lLmFwcGVu
ZChqaXQuanVtcCgpKTsKKyAgICBub3RCaWdJbnQzMi5saW5rKCZqaXQpOworI2Vsc2UKKyAgICAo
dm9pZCkgdGVtcEdQUjsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5j
aElmTm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5j
aElmTm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1pdFNldEJpZ0ludChqaXQp
OworICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQocmVncy5w
YXlsb2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQpOwogICAgIGRvbmUuYXBw
ZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZqaXQpOwpAQCAtODgsMTkg
Kzk4LDM5IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1l
cmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0
QmlnSW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVt
aXRTZXRCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEJpdGZpZWxk
VHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICByZXR1cm4gKG1fYml0
cyAmIG1hc2spICE9IG1hc2s7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAgQml0Zmll
bGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICBCaXRmaWVsZFR5cGUg
bWFzayA9IE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludDsKICAgICByZXR1cm4gKG1fYml0cyAm
IG1hc2spICE9IG1hc2s7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVh
cEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNl
dEJpZ0ludCgpKQotICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVz
dWx0czo6QmlnSW50KTsKKyAgICBpZiAoc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAg
ICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQp
OwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBl
Pgordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludDMyKENDYWxs
SGVscGVycyYgaml0KSBjb25zdAoreworICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkK
KyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0lu
dDMyKTsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+CiB2b2lk
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhl
bHBlcnMmIGppdCwgQml0ZmllbGRUeXBlIG1hc2spIGNvbnN0CiB7CkBAIC0xNDksOCArMTc5LDEy
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2Zp
bGU8VD4mIHByb2ZpbGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSW50NTJP
dmVyZmxvdyIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQoKSkgewotICAgICAgICAgICAgb3V0LnBy
aW50KHNlcGFyYXRvciwgIkJpZ0ludCIpOworICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZl
SGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSGVhcEJp
Z0ludCIpOworICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOworICAgICAgICB9CisgICAgICAg
IGlmIChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBvdXQucHJp
bnQoc2VwYXJhdG9yLCAiQmlnSW50MzIiKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Bcml0aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuaAppbmRleCA2YWRkMWEyNmIwYS4uN2MxZmU3MTNiMDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCwyMSArNzQsMjQg
QEAgcHVibGljOgogICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAogICAgICAgICBJ
bnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAogICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8
PCA0LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAorICAgICAgICBIZWFwQmln
SW50ICAgICAgID0gMSA8PCA1LAorICAgICAgICBCaWdJbnQzMiAgICAgICAgID0gMSA8PCA2LAog
ICAgIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNjsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA3OwogCiAgICAg
T2JzZXJ2ZWRSZXN1bHRzKCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IE9ic2VydmVkUmVzdWx0
cyh1aW50OF90IGJpdHMpCiAgICAgICAgIDogbV9iaXRzKGJpdHMpCiAgICAgeyB9CiAKLSAgICBi
b29sIGRpZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91
YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBk
aWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8
IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgSGVhcEJpZ0ludCB8IEJpZ0ludDMyKTsgfQog
ICAgIGJvb2wgZGlkT2JzZXJ2ZURvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJv
RG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJv
RG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTm9uTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wg
ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOZWdaZXJvRG91Ymxl
OyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygpIHsgcmV0dXJuIG1fYml0cyAmIE5v
bk51bWVyaWM7IH0KLSAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSB7IHJldHVybiBtX2JpdHMg
JiBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSB7IHJldHVybiBtX2JpdHMg
JiAoSGVhcEJpZ0ludCB8IEJpZ0ludDMyKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBCaWdJ
bnQoKSB7IHJldHVybiBtX2JpdHMgJiBIZWFwQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiBCaWdJbnQzMjsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMgJiBJbnQzMk92ZXJmbG93OyB9CiAg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDUy
T3ZlcmZsb3c7IH0KIApAQCAtMTA5LDEzICsxMTIsMTYgQEAgcHVibGljOgogICAgIGJvb2wgZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5k
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJp
YygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVOb25OdW1lcmlj
KCk7IH0KICAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZl
ZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVIZWFw
QmlnSW50KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUhlYXBC
aWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgY29uc3QgeyByZXR1cm4g
b2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludDMyKCk7IH0KICAgICBib29sIGRpZE9i
c2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlk
T2JzZXJ2ZUludDMyT3ZlcmZsb3coKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpOyB9CiAKICAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0
Qml0KE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSk7IH0KICAgICB2b2lkIHNldE9i
c2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0Rv
dWJsZSk7IH0KICAgICB2b2lkIHNldE9ic2VydmVkTm9uTnVtZXJpYygpIHsgc2V0Qml0KE9ic2Vy
dmVkUmVzdWx0czo6Tm9uTnVtZXJpYyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkg
eyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZl
ZEhlYXBCaWdJbnQoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOyB9Cisg
ICAgdm9pZCBzZXRPYnNlcnZlZEJpZ0ludDMyKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpC
aWdJbnQzMik7IH0KICAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpIHsgc2V0Qml0
KE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyk7IH0KICAgICB2b2lkIHNldE9ic2VydmVk
SW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyk7
IH0KIApAQCAtMTI3LDggKzEzMywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2JpdHMgfD0g
T2JzZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92
ZXJmbG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlIHwgT2JzZXJ2ZWRSZXN1
bHRzOjpOZWdaZXJvRG91YmxlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBtX2JpdHMg
fD0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1
ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0
czo6SGVhcEJpZ0ludDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBt
X2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljOwpAQCAtMTM5LDE5ICsxNDksMjIg
QEAgcHVibGljOgogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8
IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQg
c2VlcyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1u
dW1lcmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1
ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICB2b2lkIGVt
aXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQ
UiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwogCiAgICAgLy8gU2V0cyAo
SW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVy
b0RvdWJsZSkuCiAgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CiAgICAgdm9p
ZCBlbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBOb25O
dW1lcmljCiAgICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
ICAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7CiAKLSAgICAvLyBTZXRz
IEJpZ0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAg
ICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRT
ZXRIZWFwQmlnSW50KCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhl
bHBlcnMmKSBjb25zdDsKKworICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkgY29uc3Q7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgZW1pdFNldEJpZ0ludDMyKENDYWxsSGVscGVy
cyYpIGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lkIGVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxs
SGVscGVycyYsIEJpdGZpZWxkVHlwZSkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAg
LTE3NSw3ICsxODgsNyBAQCB1c2luZyBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsK
IGNsYXNzIFVuYXJ5QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRo
UHJvZmlsZUJhc2U+IHsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFyZ09ic2VydmVk
VHlwZVNoaWZ0ID0gT2JzZXJ2ZWRSZXN1bHRzOjpudW1CaXRzTmVlZGVkOwogCi0gICAgc3RhdGlj
X2Fzc2VydChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRl
ZCA8PSBzaXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEg
dGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CisgICAgc3RhdGljX2Fzc2Vy
dChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBz
aXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRoZSB0eXBl
IG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBV
bmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGlj
X2Nhc3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNo
aWZ0KSk7CiAKQEAgLTI1Nyw3ICsyNzAsNyBAQCBjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGUgOiBw
dWJsaWMgQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsKIAogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBzcGVjaWFsRmFzdFBh
dGhCaXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCk7Ci0gICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOworICAgIHN0YXRpY19hc3Nl
cnQoKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsg
MSkgPD0gc2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4g
dGhlIHVuZGVybHlpbmcgdHlwZS4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQ
YXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3Vs
ZCBub3QgaW50ZXJzZWN0LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0
ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJz
ZWN0LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNwZWNpYWxG
YXN0UGF0aEJpdCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGljX2Nhc3Q8QmluYXJ5QXJp
dGhQcm9maWxlQmFzZT4ofmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaykpLCAiVGhlc2UgYml0
cyBzaG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBh
IGhpZ2hlciBiaXQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YzU0
YjQzZGRjMy4uYzYwOTY1YmNjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgot
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTFlZWZhMDA5OGUuLjNj
MGVjZmNmMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCmluZGV4IDMyZjU4OGRiZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBA
QCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUs
CiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAg
ICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0
YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8
IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0
YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5h
dGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAg
ICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpl
bWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0
Cit2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2Ug
Tm9uZToKQEAgLTY3LDEyICs2NywxMiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUu
dW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZl
VGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVS
ZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlB
cml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVn
aXN0ZXJzKTsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0
KGppdCwgcmVncywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggZThiNjVlYWQ0NmUuLjUzMzkyYzYyNTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTgzLDcgKzgzLDggQEAgcHVibGljOgog
ICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2tpbmQg
IT0gTm9uZTsgfQogCi0gICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiwgSlNW
YWx1ZVJlZ3MpIGNvbnN0OworICAgIC8vIFRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgaXMgb25seSBu
ZWVkZWQgb24gNjQtYml0cyBidWlsZHMgKGZvciB0ZXN0aW5nIEJpZ0ludDMyKS4KKyAgICB2b2lk
IGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXBH
UFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKSBjb25zdDsKICAgICB2b2lk
IHJlcG9ydFZhbHVlKEpTVmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggMTA1M2JhNTJiNTQuLjc3
MWM3OWI4NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMzksMTEgKzIzOSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9u
KFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICAg
ICAgc3RyT3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNU
b3AgPSBmYWxzZTsKLQotICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50KQotICAgICAgICAg
ICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaXNU
b3AgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVlID09IFNwZWNJbnQzMk9ubHkp
CkBAIC0yNzgsNyArMjczLDIzIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBv
dXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBpc1RvcCA9IGZhbHNlOwogICAgIH0KLSAgICAKKworICAgIGlmICgodmFsdWUgJiBTcGVjQmln
SW50KSA9PSBTcGVjQmlnSW50KQorICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0JpZ0lu
dDMyKQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNI
ZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgfQorI2VuZGlmCisKICAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQogICAgICAgICBzdHJPdXQucHJpbnQo
IkRvdWJsZUltcHVyZU5hTiIpOwogICAgIApAQCAtNDMxLDcgKzQ0Miw3IEBAIFNwZWN1bGF0ZWRU
eXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykK
ICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBK
U0JpZ0ludDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAgICAgcmV0
dXJuIFNwZWNIZWFwQmlnSW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0
OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC00OTksOCArNTEw
LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBpZiAoc3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4gU3BlY1N5
bWJvbDsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBl
KQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmln
SW50OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2ZWRBcnJh
eVR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVybiBzcGVj
dWxhdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01MzYsNiAr
NTQ3LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1
ZSkKICAgICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAgIHJldHVy
biBTcGVjTm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQog
ICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAg
aWYgKHZhbHVlLmlzQm9vbGVhbigpKQpAQCAtNTk1LDggKzYwOCw4IEBAIE9wdGlvbmFsPFNwZWN1
bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAgICAgIHJl
dHVybiBTcGVjU3RyaW5nOwogICAgIGNhc2UgU3ltYm9sVHlwZToKICAgICAgICAgcmV0dXJuIFNw
ZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgotICAgICAgICByZXR1cm4gU3BlY0JpZ0lu
dDsKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJ
bnQ7CiAgICAgY2FzZSBBcnJheVR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjQXJyYXk7CiAgICAg
Y2FzZSBEZXJpdmVkQXJyYXlUeXBlOgpAQCAtNjMyLDYgKzY0NSwxMCBAQCBTcGVjdWxhdGVkVHlw
ZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVjdWxh
dGVkVHlwZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0eXBlIHw9
IFNwZWNTdHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAgIHR5cGUg
fD0gU3BlY0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkLi5k
ZjBiOTFhNzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05OCwxMiArOTgsMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PAog
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBOdWxs
IG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAv
LyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgog
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZh
bHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3
T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFw
QmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAKK3N0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludDMyICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHNtYWxsIEJpZ0ludCB0aGF0IGlz
IGlubGluZSB0aGUgSlNWYWx1ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
QmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JpZ0ludDMyIHwgU3BlY0hl
YXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09i
amVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjUHJpbWl0
aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBT
cGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgYW55IG5v
bi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY09i
amVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNwZWNB
cnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RBcmd1
bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNSZWdF
eHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3BlY01hcE9i
amVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0T2Jq
ZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RPdGhl
ciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBh
bnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3Qg
fCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmlnSW50OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNw
ZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92
ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgorc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0Nl
bGxPdGhlciB8IFNwZWNIZWFwQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNwZWNCeXRlY29kZU51bWJl
ciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBT
cGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNl
cHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRz
IHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNCeXRlY29kZVRvcCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJdCBjYW4gYmUgYW55dGhp
bmcgdGhhdCBieXRlY29kZSBjb3VsZCBzZWUgcGx1cyBleG90aWMgZW5jb2RpbmdzIG9mIG51bWJl
cnMuCiAKQEAgLTE4NSw5ICsxODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1N5bWJvbDsK
IH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisKK2lubGluZSBi
b29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjSGVhcEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wgaXNCaWdJ
bnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0JpZ0ludDsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjQmlnSW50
KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBmYTNhYmJkMTFhZC4uY2VkN2Q2ZGMx
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCiAgKgpAQCAtMTY2NiwxMSArMTY2Niwx
MiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZQogICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0
aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBTeW1ib2xUeXBlKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgeworICAgICAgICAgICAgLypp
ZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKICAgICAgICAg
ICAgICAgICByZXdpbmQoKTsKICAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0
KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgQmlnSW50VHlwZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9Ki8KKyAgICAgICAgICAgIC8v
IEZJWE1FOiBhZGQgYSBjYXNlIGZvciBCaWdJbnQuIEl0IHdpbGwgcHJvYmFibHkgcmVxdWlyZSBh
ZGRpbmcgYSBuZXcgT3BJc0JpZ0ludCBvcGNvZGUsIG5vdyB0aGF0IHdlIGhhdmUgYm90aCBCaWdJ
bnQzMiBhbmQgSGVhcEJpZ0ludCAoc28gT3BJc0NlbGxXaXRoVHlwZSBjYW5ub3QgYmUgdXNlZCku
CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICBy
ZXdpbmQoKTsKICAgICAgICAgICAgICAgICBPcElzT2JqZWN0T3JOdWxsOjplbWl0KHRoaXMsIGRz
dCwgb3AubV92YWx1ZSk7CkBAIC0yODc2LDcgKzI4NzcsNyBAQCBKU1ZhbHVlIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1
aW50OAogICAgIHJldHVybiBtX2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRlbnRp
Zmllci5pbXBsKCksIHJhZGl4LCBzaWduKSwgWyZdIHsKICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0oKSk7CiAgICAgICAgIGF1dG8gcGFyc2VJbnRTaWduID0gc2ln
biA/IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlNpZ25lZCA6IEpTQmlnSW50OjpQYXJzZUludFNp
Z246OlVuc2lnbmVkOwotICAgICAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6
cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmln
SW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOworICAg
ICAgICBKU1ZhbHVlIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZt
KCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6
OlRocm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCAyOTg5Mzc0MGE4NS4uMGEwMDNiOGY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTEwODksNyArMTA4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVzaW5nIE51bWJl
ck1hcCA9IEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgSWRlbnRpZmll
clN0cmluZ01hcCA9IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50
aWZpZXJSZXBIYXNoPjsKLSAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hN
YXA8QmlnSW50TWFwRW50cnksIEpTQmlnSW50Kj47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJC
aWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU1ZhbHVlPjsKICAgICAgICAgdXNp
bmcgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU2V0ID0gSGFzaFNldDxSZWY8VGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yPj47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlRGVzY3JpcHRvck1hcCA9IEhh
c2hNYXA8dWludDY0X3QsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiwgV1RGOjpJbnRIYXNo
PHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTk1ODAwYWZmMjYuLjMyODNkN2Y5MGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk51bWJlckNv
bnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRT
dGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVD
YWNoZS5oIgpAQCAtMjE0LDcgKzIxMyw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNB
bklkZW50aXR5KFZNJiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAg
ICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5t
X3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewog
ICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAg
ICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlw
ZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5
cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9
PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkg
PT0gSGVhcEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBk
b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhl
cjoKQEAgLTUwMiw3ICs1MDEsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNC
aWdJbnQzMik7CisgICAgICAgICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAg
ICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxz
ZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNTMyLDcgKzUzNiwxMyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRCaW5hcnlCaXR3aXNlT3Ao
bm9kZSkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIGJpbmFy
eVVzZUtpbmQgbWVhbnMgdGhhdCB3ZSBjYW5ub3Qgc3BlY2lhbGl6ZSB0byAoZm9yIGV4YW1wbGUp
IGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4K
KyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAg
IEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9k
ZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBA
IC03MjIsMTEgKzczMiwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogCiAgICAgY2FzZSBW
YWx1ZVN1YjoKICAgICBjYXNlIFZhbHVlQWRkOiB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVh
cEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCBTcGVjU3RyaW5nIGhlcmUgZm9yIFZhbHVl
U3ViPyBJdCBzZWVtcyBsaWtlIHdlIG9ubHkgbmVlZCBpdCBmb3IgVmFsdWVBZGQuCiAgICAgICAg
ICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5nIHwgU3BlY0J5dGVjb2RlTnVtYmVy
IHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC04ODYsNiArODk5
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
VmFsdWVOZWdhdGU6IHsKKyAgICAgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIG11Y2ggc21hcnRl
ciB0aGluZ3MgZm9yIEJpZ0ludHMsIHNlZSBWYWx1ZUFkZC9WYWx1ZVN1Yi4KICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICBicmVhazsKQEAgLTk1OCw3ICs5NzIsMTEgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAg
ICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgdHlwZU9mRG91YmxlSW5jT3JEZWMo
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAg
ICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQz
MlVzZToKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC05NzQsNyArOTkyLDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNWYWx1ZSBjaGlsZFkgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGRYICYmIGNoaWxkWSAmJiBj
aGlsZFguaXNOdW1iZXIoKSAmJiBjaGlsZFkuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBjYWxsIGBkaWRGb2xkQ2xvYmJlcldvcmxkYCBoZXJlIGJlY2F1c2UgdGhpcyBw
YXRoIGlzIG9ubHkgcG9zc2libGUKLSAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBp
cyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBCaWdJbnRVc2UsIGNoaWxkcmVuIHdpbGwgYmUK
KyAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUg
Y2FzZSBvZiBBbnlCaWdJbnRVc2Ugb3IgZnJpZW5kcywgY2hpbGRyZW4gd2lsbCBiZQogICAgICAg
ICAgICAgLy8gY2xlYXJlZCBieSBgQWJzdHJhY3RJbnRlcnByZXRlcjo6ZXhlY3V0ZUVmZmVjdHNg
LgogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgLy8gT3Vy
IGJveGluZyBzY2hlbWUgaGVyZSBtYXRjaGVzIHdoYXQgd2UgZG8gaW4gb3BlcmF0aW9uVmFsdWVQ
b3cuCkBAIC05ODIsNyArMTAwMCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhl
YXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJp
Z0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJ
bnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTIsNyArMTAxMiwxMCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2UgVmFsdWVNdWw6IHsKLSAgICAgICAgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB3
aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBWYWx1ZVN1Yj8KKyAgICAgICAgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlw
ZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5i
aW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJ
bnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtMTA1
Niw3ICsxMDc5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRs
ZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtMTkzNiwxMyAr
MTk2MSwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBub3Qg
bGF0ZXIgKGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxhY2VtZW50cyBieSBmYWxzZS90cnVlKS4K
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkgewogICAgICAg
ICAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBC
aWdJbnQgdG8gSlNDLgotICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ0NlbGxDb25zdGFudCA9
IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZh
bHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpOworICAgICAgICAgICAgYXV0byBpc05v
blN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3Ry
aW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAgfTsKIAotICAgICAg
ICAgICAgaWYgKGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nQ2Vs
bENvbnN0YW50KHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRD
ZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChyaWdo
dCkpIHsKICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGlu
Zyh0cnVlKTsKICAgICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0Jvb2xlYW4pOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2NCw3ICsxOTkwLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN5bWJvbFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
aXNjVXNlLCBVbnR5cGVkVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fCAvLyBGSVhNRTogSSBhbSBjb25mdXNlZCwgaG93
IGNhbiB3ZSBldmVyIGhhdmUgdHdvIGRpZmZlcmVudCB1c2Uga2luZHMsIHdoZW4gdGhleSBhcmUg
bGl0dGVyYWxseSB0aGUgc2FtZSBjaGlsZD8KICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwKICAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJ
ZGVudFVzZSkgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggYjIzMThmZTAzYWUuLjhhODdlNDRhZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02ODUsNyArNjg1LDkgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZToKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50
VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRV
c2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAgICAgICAgZGVmKFB1cmVWYWx1
ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToK
QEAgLTcwNyw3ICs3MDksOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgVmFs
dWVQb3c6CiAgICAgY2FzZSBWYWx1ZUJpdExTaGlmdDoKICAgICBjYXNlIFZhbHVlQml0UlNoaWZ0
OgotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIHNpbmdsZS1hcmd1bWVudCBpc0JpbmFyeVVzZUtpbmQg
d291bGQgcHJldmVudCB1cyBmcm9tIHNwZWNpYWxpemluZyAoZm9yIGV4YW1wbGUpIGZvciBhIEhl
YXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmln
SW50VXNlKSkgewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggYjQzZjdjZjU0ZTEuLmFjNjgzNDMz
MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1
Y2luZyBCaWdJbnQgdG8gSlNDLgogICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5n
T3JCaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0
cmluZygpICYmICF2YWx1ZS5pc0JpZ0ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1
ZS5pc0hlYXBCaWdJbnQoKTsKICAgICAgICAgICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChjaGlsZDFDb25zdGFu
dCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQzYzhm
ZDVkYy4uN2NhNGIxYjVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGU5N2RlMTBmNmY0Li4xYmZmOWQz
NzZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjAxLDE0ICsyMDEsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2Rl
UmVzdWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRo
ZSBmcmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxsIGlzIGtl
cHQgYWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lzZS4KKyAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0byBhIHNw
ZWNpYWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCisgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7CisgICAg
ICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSht
X2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50
T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgLy8gSGVhcEJpZ0ludHMgYXJlIGNlbGxzLCBzbyB0aGUg
ZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmln
SW50MzIoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVl
QWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25z
dGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCAxKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRD
aGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0
IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGVub3VnaCBmb3Igbm93LgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBjb25zaWRlciBoYXZpbmcgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uIGZvciBz
bWFsbCBCaWdJbnRzIGluc3RlYWQuCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBp
cyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhlcndpc2Uu
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9wdGltaXplIGluYy9kZWMgdG8g
YSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4gdGhhdCBjYXNlLgogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOwot
ICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwg
T3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZShtX2luZGV4SW5CbG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4s
IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDEpKSkp
OwogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25z
dGFudE9uZSkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgICAgICAgICAvLyBCaWdJbnRzIGFyZSBjdXJyZW50bHkgY2VsbHMsIHNvIHRo
ZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgLy8g
VGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2VuZGlmIC8vIFVTRShC
SUdJTlQzMikKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUludDUyKCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMg
PyBBcml0aEFkZCA6IEFyaXRoU3ViKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1v
ZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwpAQCAtMjM0LDEyICsyNTQsMjAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAg
RWRnZSYgY2hpbGQyID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5v
ZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKKyNlbmRpZgorCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVk
VXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQy
KTsKQEAgLTI2Nyw4ICsyOTUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9y
OgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOiB7CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMzEyLDcgKzM1MywxNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBpZiAob3BlcmFu
ZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAg
IG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgICAgICAgICBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQz
MigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihvcGVyYW5kRWRn
ZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRT
cGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbHNlCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZW5kaWYK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxh
dGVVbnR5cGVkRm9yQml0T3BzKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNl
PihvcGVyYW5kRWRnZSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ1Nyw5ICs1MDgsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5v
ZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQyKTsKKyNlbmRpZgogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtNTQ1LDggKzYwNCwy
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOwogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGxlZnRDaGlsZC5ub2RlKCks
IHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0lu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGls
ZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtNTg3LDEyICs2NTksMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2Um
IGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGls
ZCA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGxlZnRDaGlsZCk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAg
ICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGls
ZC5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGxlZnRDaGls
ZCk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KHJpZ2h0Q2hpbGQpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihyaWdodENoaWxkKTsKICAgICAgICAgICAgICAg
ICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOyAKICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRD
aGlsZC5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihsZWZ0
Q2hpbGQpOwpAQCAtNjU2LDEyICs3MzYsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgVmFsdWVQb3c6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjaWYgVVNFKEJJR0lOVDMy
KQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxB
bnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFu
eUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFy
RmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVu
dHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwpAQCAtMjg4MCw3ICsyOTY4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAg
bm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CkBAIC0yOTUzLDcgKzMwNTAsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBpcyBCaWdJbnQsIHdlIGF0dGVtcHQg
dG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNpbmNlIGl0IGNhbiBvbmx5IHJldHVy
biBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0
eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDMzLDEzICszNTM5LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIEtub3du
U3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRV
c2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmpl
Y3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAg
ICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkKICAgICAgICAgICAgICAgICB8fCBp
c0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAg
ICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRv
VW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IHdoYXQg
c2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UgPworICAgICAg
ICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBhbGwgb2YgdGhlIFVzZUtpbmRzIHdo
aWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NDksMTIgKzQwNTcsMjYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RF
cSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGls
ZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0
cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVT
dHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAgICAgICAg
IGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZp
eEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxLi5mODE3MGQ5MmJmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAi
REZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCAxMzQ1NWI1YzI5Zi4uOTdmMTdhMDg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjU0MSw2ICsyNTQxLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAg
IH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwor
ICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpCiAgICAgewpAQCAt
Mjc0MSw3ICsyNzUzLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCk7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBib29sIHNob3VsZFNw
ZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0
ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0
ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApp
bmRleCA4MzRiNjg3MDExMy4uZTFkODVlOWRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcApAQCAtMzgzLDEwICszODMsMTQgQEAgdm9pZCBPU1JFeGl0Ojpjb21w
aWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBj
b25zdAogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEg
c3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAg
ICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KICAgICAgICAgICAgICAg
ICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgYWxzbyB1c2UgdGhlIG5v
dENlbGxNYXNrUmVnaXN0ZXIgYXMgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIsIGZvciB0aGUgc2FtZSBy
ZWFzb24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGZpbmQgYSBsZXNzIGdyb3NzIHdheSBv
ZiBkb2luZyB0aGlzLCBtYXliZSB0aHJvdWdoIGRlbGF5aW5nIHRoZXNlIG9wZXJhdGlvbnMgdW50
aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21lIHNwYXJlIHJlZ2lzdGVycyBhcm91bmQ/CisgICAgICAg
ICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlciksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5l
bWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIo
KSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRS
ZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSwg
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
cik7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGlmIChleGl0Lm1f
anNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAgICAgICAgICAgICAgIC8vIFNhdmUgYSBy
ZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgpAQCAtMzk4LDcgKzQwMiw3IEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYg
ZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBzY3JhdGNoKHNjcmF0Y2hU
YWcsIHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBq
aXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpLCBzY3JhdGNoKTsK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gpOwor
ICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCwgSW52
YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnBvcFRv
UmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNj
cmF0Y2hQYXlsb2FkKTsKQEAgLTQwNywxMCArNDExLDEwIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29u
c3QKICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKICAgICAgICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNW
YWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSwgSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3MoKSwg
SW52YWxpZEdQUlJlZyk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMu
LmUwZTg3MjFlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZGI5Yzlk
NzY3Li5hMjY1YzBhYTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShE
RkdfSklUKQpAQCAtMjIxLDU2ICsyMjAsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1
dFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbAogICAg
IGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3Qp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIE51bWJl
ck9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJpbmFyeU9w
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmln
SW50T3AsIE51bWJlck9wZXJhdGlvbiYmIG51bWJlck9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3Nh
Z2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAg
SlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBv
cDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmlj
ID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3AyLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpKSk7Ci0KLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9wKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMp
LCBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgSW50MzJPcGVyYXRpb24+Ci1zdGF0aWMgQUxX
QVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwgSW50MzJPcGVy
YXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3AyLnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsK
LSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGludDMyT3AoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSkpOwotfQotCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBFbmNvZGVkSlNWYWx1ZSBwYXJzZUludFJlc3VsdChkb3VibGUgaW5wdXQpCiB7CiAgICAgaW50
IGFzSW50ID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1dCk7CkBAIC00NzAsNzEgKzQxOSwzNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQp
IC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10g
KGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBq
c01vZChsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxP
YmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlv
bi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUmVtYWluZGVyKGdsb2JhbE9iamVj
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsK
LQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkK
LSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJp
Yyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2YWx1ZSArIDEpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzSW5jKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJh
bmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3Bl
cmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihv
cGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2YWx1
ZSAtIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRGVjKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAKLSAgICBhdXRvIG9wZXJh
bmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpiaXR3aXNl
Tm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKH5XVEY6OmdldDxpbnQzMl90
PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lz
ZU5vdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikKQEAgLTU0MywxNSArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0g
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50
MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7Ci0g
ICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5j
b2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZUFuZChnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTYwLDE1ICs0NjQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50
KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVm
dCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0
LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdo
dDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU3NywxNSArNDczLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmln
SW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3Qs
IGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IF4g
cmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0
LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24u
Il9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZVhvcihnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU5NCwxNSArNDgyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0
KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10g
KGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVy
biBsZWZ0IDw8IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJp
bmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9w
LCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQg
c2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0xTaGlm
dChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTYxMSwx
NSArNDkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJp
dFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnNp
Z25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAg
IGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMy
X3QgewotICAgICAgICByZXR1cm4gbGVmdCA+PiAocmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0g
ICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1JTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NTcsMTUgKzUyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJs
ZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsKLSAgICB9
OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0RpdihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAg
LTY3NCwxNSArNTM4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBi
aWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVm
dCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0g
ICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3Vi
bGUgewotICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0aFBvdyhsZWZ0LCByaWdodCk7Ci0gICAg
fTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1BvdyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIGRvdWJsZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCkBAIC0xNDc5LDcgKzEzMzUsNyBAQCBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVnZXhwLT50
ZXN0KGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViSGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE0OTEsNyArMTM0Nyw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFs
T2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSkKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTAyLDcgKzEzNTgsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmpl
Y3QsIG9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUxNCw3ICsxMzcwLDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5KGdsb2JhbE9iamVjdCwg
bGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAgICAgCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RI
ZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUyNiw3ICsxMzgy
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFp
bmRlcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTUzOCw3ICsxMzk0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4g
SlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTU1MCw3ICsxNDA2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnRPcGVy
YW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU2Miw3ICsxNDE4LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQo
Z2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE1NzQsNyArMTQzMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAg
cmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmln
aHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1ODYsNyArMTQ0Miw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1OTgsNyArMTQ1
NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWdu
ZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9
CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTYxMCw3ICsxNDY2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoK
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYyOCw3ICsxNDg0LDcgQEAgc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CisgICAgcmV0dXJuIEpT
VmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CiB9CiAK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBhcmcxLCBFbmNvZGVkSlNWYWx1ZSBhcmcyKQpA
QCAtMTY3MywxMCArMTUyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1
dG8gdmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPih2YXJpYW50KSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXVEY6OmdldDxKU0JpZ0ludCo+KHZhcmlh
bnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJs
ZT4odmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwZjFjODc1NGNkNi4uM2YwNGY4OWNk
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTgx
LDE4ICsxODEsMTggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0
cmluZyhKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEoKIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZf
SU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Vi
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBXVEZfSU5URVJOQUw7CitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVj
dChWTSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVl
KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMo
Vk0qLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IG1pbkNhcGFjaXR5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzEuLmI1ODg2NDcyY2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTMyLDcgKzUzMiwxOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3ltYm9sKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50MzIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNIZWFwQmlnSW50
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkg
ewogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmln
SW50KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIyZDE0Li40Y2U3NDU0YzU4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTc5
LDcgKzc5LDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgY2Fz
ZSBTdHJpbmdPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2Fz
ZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNlIEhl
YXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAg
ICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKQEAgLTY3NSwxMCArNjc3LDEwIEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBWYWx1ZURpdjoKICAgICBjYXNlIFZhbHVlTW9kOgog
ICAgIGNhc2UgVmFsdWVQb3c6Ci0gICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50VXNlKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAg
ICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2U7CisgICAg
ICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZTsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAwMmU4ZDA2ODA3OS4uZmFjYWM1
ZDRmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTcwNiw2ICsxNzA2LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZUJyYW5jaChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAg
ICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24p
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludDMyVXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8
fCBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpKQorICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
QmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNlbmRpZgogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJ
bnQ1MlJlcFVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChub2Rl
LCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwpAQCAtMzUzMywyNCArMzUzNyw0NCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKIHsKICAgICBFZGdl
JiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKIAotICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09
IEJpZ0ludFVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBjaGlsZDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIC8vIEZJ
WE1FOiBpdCBzaG91bGQgYmUgdHJpdmlhbGx5IG1vcmUgZWZmaWNpZW50IHRvIGp1c3QgZG8gYml0
WG9yKG9wZXJhbmQsIDB4MDAwMEZGRkZGRkZGMDAwMCk7CisgICAgICAgIG1faml0Lm1vdmUob3Bl
cmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1
bHRHUFIpOworICAgICAgICBtX2ppdC5ub3QzMihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5i
b3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBv
cnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hp
bGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIg
PSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJh
bmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7
CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxk
MSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEu
dXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0
aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5v
ZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBK
U1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICszNjAyLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5j
dGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBu
b2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2Um
IHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNl
S2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRV
c2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVm
dENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsK
LSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxl
ZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJl
Z3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0zNjMwLDExICszNjU4LDEzIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNF
X0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgp
KTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1w
bGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENo
aWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwg
bGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVn
cyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlz
Q29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAg
ICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQg
Zm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3Mo
KTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDAsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0g
bm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwog
Ci0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxk
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgIHN3aXRjaCAob3ApIHsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2Ug
JiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKwor
ICAgICAgICBzd2l0Y2gob3ApIHsKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAg
ICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJp
dEFuZD4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgVmFsdWVCaXRY
b3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBlZEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3Bl
cmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGJpdEFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0
aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAgICAgICAgICAgIG1faml0LmFuZDY0KHJpZ2h0
LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFs
dWVCaXRPcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0T3JHZW5lcmF0b3Is
IG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGJpdE9yIGRvZXMgbm90IGludGVyZmVyZSB3
aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQub3I2NChyaWdo
dC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZh
bHVlQml0WG9yOgorICAgICAgICAgICAgLy8gQml0WG9yIHJlbW92ZXMgdGhlIHRhZywgc28gd2Ug
bXVzdCBhZGQgaXQgYmFjayBhZnRlciBkb2luZyB0aGUgb3BlcmF0aW9uCisgICAgICAgICAgICBt
X2ppdC54b3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm9y
NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQo
bGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkg
PT0gQmlnSW50VXNlKTsKLSAgICAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQ
UlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBm
b3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmKGxlZnRDaGls
ZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBzcGVjdWxhdGVC
aWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAg
IHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChvcCkgewog
ICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55Qmln
SW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9u
VmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJpdE9y
OgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0T3JHZW5l
cmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0K
LSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBu
b2RlKQpAQCAtMzc1NSw3ICszODE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJp
dHdpc2VPcChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5v
ZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25fR0pKIHNuaXBwZXRT
bG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlmdAogICAgICAgICA/
IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0OwpAQCAt
Mzc2NSw5ICszODI3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQx
KCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGlz
S25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdo
dENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsK
KyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90
TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1Zh
bHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1OSwyNyArMzkyMywy
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKiBub2Rl
KQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRH
UFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsK
IAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmln
aHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRCaXRPcDxK
SVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihub2RlKTsKKyAg
ICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVy
YXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyArMzk1MSwyNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxk
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNo
aWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0SGVh
cEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Ao
bm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9kZSkKQEAgLTM5
MTgsNyArMzk4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKE5vZGUq
IG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJp
Z2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9w
KG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDEyLDY5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxl
ZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5j
aGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewot
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMg
ZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8v
IEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3Jl
IGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAg
ICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShy
aWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQ
Uik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92
ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQu
YnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIs
IHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9y
bWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hv
dWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJ
bnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwg
cmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVl
UmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVn
cygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6IGNhbGwgYSBtb3JlIHNwZWNp
YWxpemVkIGZ1bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGRO
b3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0lu
dAorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVC
aWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0
R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKQEAgLTQwMDYsNDQgKzQxMjAsOTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7
CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRz
U2NyYXRjaEZQUlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hH
UFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7Ci0j
ZW5kaWYKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBy
aWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJl
YWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdo
dCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRy
aWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJl
c3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94
QmlnSW50MzIodGVtcEdQUik7CiAKLSAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7Ci0gICAgICAgIGF1dG8g
cmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKLSAgICAgICAg
YXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKyAgICAgICAg
Ly8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFj
cm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CiAK
LSAgICAgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBu
ZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKTsKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNw
ZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8g
YW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1
bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJ
bnQzMi9IZWFwQmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAvLyBGSVhN
RTogd2h5IGRvIGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVNdWwgdXNlIGlzS25vd25Ob3RO
dW1iZXIgYnV0IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgc3BlY3VsYXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZUFueUJp
Z0ludChyaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0Lmpz
VmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFs
dWVSZWdzKCk7CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdo
dEdQUiA9IHJpZ2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAotICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0
ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJ
R0lOVDMyKQogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKLSAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworCisgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBS
UmVnID0gZmFsc2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsK
KyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CisjZW5kaWYKKworICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0
aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOworICAg
IGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKKyAg
ICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworCisgICAg
Y29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0
Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAg
ICByZXR1cm47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJl
cGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYx
Myw2ICs0Nzc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUq
IG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkK
IHsKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUgc2hvdWxkIGhhdmUgYmVlbiB0
cmFuc2Zvcm1lZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1cFBoYXNlCisgICAgLy8gRklY
TUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBz
b21lIHBhdGggZm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTQ2MjgsNiArNDc5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVOZWdhdGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRo
LCBhdCBsZWFzdCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBhbHNvIGZvciBIZWFwQmlnSW50
IGhlcmUuCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCku
YmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNDgwOCwyOSArNDk3Myw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVN
dWwoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBjb2RlIGJldHdlZW4gY29t
cGlsZVZhbHVlQWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBpbGVWYWx1ZU11bCBmb3IgQmln
SW50MzIgaXMgbmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdldCByaWQgb2YgdGhlIGR1cGxp
Y2F0aW9uLgorICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVk
IHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAg
ICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3Ig
YSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
dGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUg
dGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0g
bV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRl
bXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFu
IGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhN
RTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5i
b3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hp
bGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEJpZ0ludCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0
Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewot
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpT
VmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90
TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5u
b2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1Zh
bHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTAxMCwyOSArNTIwOSwz
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxk
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklY
TUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdo
IHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIERpdiBnZXRz
LgorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1
bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tu
b3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2Rl
KCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBA
IC01MDQ2LDYgKzUyNDksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYo
Tm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VSVChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IGxlZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCkBAIC01Mjk1
LDI5ICs1NTAwLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2Rl
KiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2Um
IHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3Ig
QmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ug
b2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJp
Z0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENo
aWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kQmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwog
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2Us
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxl
ZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgcmlnaHRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxk
KTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3Mgb3Ax
UmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIG9wMlJlZ3MgPSBvcDIu
anNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNTg1OSwzMCArNjA2OCwz
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxk
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEgZmFzdCBwYXRoIGZvciBCaWdJ
bnQzMiBmb3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxvdyBwcmV0dHkgb2Z0ZW4uCisg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJl
ZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQu
Z3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UG93SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKIAotICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
IHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENo
aWxkKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAg
ICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC02MDMw
LDYgKzYyNDIsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFy
ZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlm
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUy
UmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7
CkBAIC02MDU3LDYgKzYyNzUsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUq
IG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgICAgICAg
ICAgY29tcGlsZVN0cmluZ0lkZW50Q29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBj
YXNlIGhlcmUgKGFuZCBhZGQgYSBjb3JyZXNwb25kaW5nIHRlc3QsIHdlIHNob3VsZCByZWFsbHkg
aGF2ZSBjYXVnaHQgdGhpcykKIAogICAgIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewog
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKSB7CkBAIC02MTM2
LDcgKzYzNTYsMjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUq
IG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0jaWYgVVNFKEpTVkFM
VUU2NCkgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAh
PSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0
KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVCaWdJbnQz
MkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAg
ICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAg
ICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2Vu
ZGlmCisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRl
dGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0g
VUlOVF9NQVgpIHsKQEAgLTYxODMsOCArNjQyMCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICBjb21waWxlQmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5
KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtNjI3OCw4ICs2
NTE1LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0eShub2RlLCBub2RlLT5jaGls
ZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IAotICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSk7
CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUt
PmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICByZXR1cm4gbm9uU3BlY3VsYXRp
dmVTdHJpY3RFcShub2RlKTsKIH0KIApAQCAtMTA1NDEsMTggKzEwNzc4LDE4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRlU3lt
Ym9sKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKLSAgICBERkdf
VFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgflNwZWND
ZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChjZWxsKSk7Cisg
ICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2Us
IH5TcGVjQ2VsbENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElmTm90SGVhcEJp
Z0ludChjZWxsKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJpZ0ludChF
ZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2Ug
ZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVk
Z2UpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKKyAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKQEAg
LTEwNzIyLDggKzEwOTU5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2Rl
KiwgRWRnZSBlZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBzcGVjdWxhdGVTeW1i
b2woZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmlnSW50VXNlOgotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGNhc2UgQmlnSW50
MzJVc2U6CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2Up
OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
dHJpbmdPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdChlZGdlKTsKQEAg
LTEzMDczLDE3ICsxMzMxOCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1l
cmljKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQu
anNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBh
IGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0eXBlT2YsIGFuZCBmb3IgYm9v
bGlmeSBvciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBmaWxlKS4KIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVncyk7Ci0gICAgc2xv
d0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChhcmd1bWVudFJlZ3MucGF5bG9h
ZEdQUigpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJbnQgPSBtX2ppdC5qdW1w
KCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoYXJn
dW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSGVh
cEJpZ0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCBz
Y3JhdGNoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7CisgICAgaXNIZWFwQmlnSW50
LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVz
dWx0UmVncyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTQyLDkgKzE0MTg4LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2Rl
LCBOb2RlKiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSogbm9k
ZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQg
dmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAvLyBGSVhNRTogW0VT
TmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxz
IGZvciBiaWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CkBAIC0xMzk1Niw4ICsxNDIwMiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQudXNlKCk7CiAgICAgcmlnaHQu
dXNlKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOwot
ICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOworICAgIHNwZWN1
bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOworICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWws
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5hNjU1ZGU5ODNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Niw2ICsz
NDYsOSBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSk7CiAg
ICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlQm9vbGVhbihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVCaWdJbnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVyYXRlZE9wZXJhbmRUeXBlIGNo
ZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAgICAgdm9pZCBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+KTsKQEAgLTExNDgs
NiArMTE1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2Rl
KiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVDb25kaXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2go
Tm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJy
YW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwpAQCAtMTE3Miw3
ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1pc2NTdHJpY3RFcShOb2RlKik7
CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7Ci0gICAgdm9pZCBjb21w
aWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhlYXBCaWdJbnRFcXVh
bGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFs
aXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwogCkBAIC0xMjIy
LDYgKzEyMjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBj
b21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZUJpZ0ludDMyQ29tcGFy
ZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAg
ICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0x
Mjk3LDExICsxMzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlTm90KE5v
ZGUqKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3Bl
cmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQgZW1pdFVudHlwZWRCaXRPcChO
b2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXR3
aXNlT3AoTm9kZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2Rl
Kik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZUJpdFJTaGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2hpZnRPcChOb2RlKik7CkBA
IC0xNTc5LDYgKzE1ODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlSW50MzIoRWRn
ZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwQW55SW50KEVkZ2Up
OwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQg
c3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQoRWRn
ZSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1
bGF0ZURvdWJsZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjI4LDggKzE2NDEsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlKTsKICAgICB2b2lkIHNw
ZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1i
b2woRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOwot
ICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJp
Z0ludChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAg
dm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRn
ZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDcsNiArMjYyMCw1NiBAQCBwcml2
YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKyNpZiBVU0UoQklHSU5UMzIp
CitjbGFzcyBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisg
ICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQor
ICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKworICAg
IEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0K
KworICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5u
b2RlKCk7CisgICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9n
cHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlk
ID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkpOworICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAg
bV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJ
VCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwor
fTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUgREZHX1RZUEVfQ0hFQ0tfV0lU
SF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBq
dW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBfZHRjX3NvdXJjZSA9IChz
b3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRWRnZSBfZHRjX2Vk
Z2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IGIwN2NiMjU3NWQxLi41NjhiNWYzYzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4LDcgKzEzOCw4IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0
YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogeworICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7
CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhn
cHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9k
ZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAgICB9CiAgICAgCi0gICAg
SlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9w
ZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNTRVJUKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50
VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5v
ZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShu
b2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigp
KTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAgR1BSUmVnIGFyZzJHUFIg
PSBhcmcyLmdwcigpOwogICAgIApAQCAtMzY0LDcgKzM2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFu
Y2hOb2RlCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6
IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAg
IAorCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5j
aElmQ2VsbChyZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxR1BSKTsKQEAgLTM3NCw5ICszNzgsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9k
ZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCByaWdo
dERvdWJsZSA9IG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzJHUFIpOwogICAgICAgICByaWdodE9L
LmxpbmsoJm1faml0KTsKICAgICAgICAgCi0gICAgICAgIGJyYW5jaDY0KGludmVydCA/IEpJVENv
bXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwg
dGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3JjZUp1bXApOwotICAgICAgICAKICAg
ICAgICAgdHdvQ2VsbHNDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAgYnJhbmNoNjQoSklUQ29t
cGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2Vu
KTsKICAgICAgICAgCkBAIC00NDIsMTAgKzQ0Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkK
ICAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihhcmcyUmVncywg
SW52YWxpZEdQUlJlZykpOwogICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwogCi0gICAgbV9qaXQu
Y29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpF
cXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOwotCi0gICAg
SklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQogICAgIHR3b0NlbGxzQ2Fz
ZS5saW5rKCZtX2ppdCk7CiAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQo
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCkpKTsK
IApAQCAtNDUzLDggKzQ1MCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIAogICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRp
b25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFSZWdzLCBhcmcyUmVncykpOwogCi0gICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0KICAgICB1
bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwMyw2ICs5OTgsOCBAQCBHUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZv
cm1hdCYgcmV0dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBE
YXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAg
ICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3Jt
YXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzQsNiArMTIzMSw4IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogICAgIGNhc2Ug
RGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBE
YXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBo
KCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVm
YXVsdDoKQEAgLTEzMTEsNiArMTMxMCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJ
bnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJC
YWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTksNiArMTMy
MCwxMDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdl
IGVkZ2UpCiAgICAgfQogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5
cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsK
KyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7CisgICAgbm90
Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBl
ZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1
ZSwgU3BlY0JpZ0ludDMyKTsKKyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CisgICAgICAgIGlm
IChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25J
bmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdp
c3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2Ug
RGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAg
ICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNW
YWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNWYWx1
ZSkpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAg
fQorCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3Jk
ZXJTcGlsbGVkKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9z
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0JpZ0lu
dDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQ
Uik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAg
IGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6
IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2Nr
KGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0
SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5s
b2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2pp
dC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxs
b2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdw
ciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9Cisg
ICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0lu
dDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRC
b29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1h
dEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3Jt
YXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9k
ZSwgIkJhZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNI
KG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9ybWF0Iik7Cisg
ICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAvLyBVU0UoQklH
SU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0
eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTY1OSw1NSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiBub2Rl
LCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQogCisjaWYgVVNF
KEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZShO
b2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24p
Cit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworCisg
ICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94
IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAg
bV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Cisg
ICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2pp
dC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUob3AyLmdw
cigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wLmdwcigp
KTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0LmdwcigpLCB0ZW1w
LmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFkZCBhIERhdGFG
b3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3IzMihUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNWYWx1ZVJl
c3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwor
fQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3VsZCByZXF1aXJl
IHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9uIG5lZ2F0aXZl
IG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwg
fHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAgICBCYXNpY0Js
b2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAg
QmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2Vu
LmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0
aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdp
dGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwg
dGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgY29uZGl0
aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBCYXNpY0Jsb2Nr
KiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAgICAgbm90VGFr
ZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwg
b3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5kaWYgLy8gVVNF
KEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5v
ZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggYjNlNDFkOGQ3ZTEuLmRmYTdjNjNlZDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAKQEAgLTEyNSw3ICsxMjUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFZhbHVl
Qml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRBbmQ6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRY
b3I6IHsKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpCisgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG1heWJlIHN1cHBvcnQgdGhlIGNh
c2Ugd2hlcmUgb25lIG9wZXJhbmQgaXMgYWx3YXlzIEhlYXBCaWdJbnQgYW5kIHRoZSBvdGhlciBp
cyBhbHdheXMgQmlnSW50MzI/CisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQW55QmlnSW50VXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCiAgICAgICAg
ICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTM3NSw3ICszNzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRV
c2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAg
ICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKIAogICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAppbmRleCA4ZWY3M2I2ZjJlOC4uYWI2
MzFjOWNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE0NSw4ICsxNDUsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVz
ZUtpbmQgdXNlS2luZCkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAgb3V0LnByaW50KCJT
eW1ib2wiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmlnSW50VXNlOgotICAgICAgICBv
dXQucHJpbnQoIkJpZ0ludCIpOworICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBvdXQu
cHJpbnQoIkFueUJpZ0ludCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgorICAgICAgICBvdXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIG91dC5wcmludCgiQmlnSW50MzIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBvdXQucHJp
bnQoIlN0cmluZ09iamVjdCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaApp
bmRleCA5YzEzYzViY2QzNS4uZjRmN2IzM2JiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsOSBAQCBlbnVtIFVzZUtpbmQgewogICAgIEtub3du
U3RyaW5nVXNlLAogICAgIEtub3duUHJpbWl0aXZlVXNlLCAvLyBUaGlzIGJpemFycmUgdHlwZSBh
cmlzZXMgZm9yIG9wX3N0cmNhdCwgd2hpY2ggaGFzIGEgYnl0ZWNvZGUgZ3VhcmFudGVlIHRoYXQg
aXQgd2lsbCBvbmx5IHNlZSBwcmltaXRpdmVzIChpLmUuIG5vdCBvYmplY3RzKS4KICAgICBTeW1i
b2xVc2UsCi0gICAgQmlnSW50VXNlLAorICAgIEFueUJpZ0ludFVzZSwKKyAgICBIZWFwQmlnSW50
VXNlLAorICAgIEJpZ0ludDMyVXNlLAogICAgIERhdGVPYmplY3RVc2UsCiAgICAgTWFwT2JqZWN0
VXNlLAogICAgIFNldE9iamVjdFVzZSwKQEAgLTE1Miw4ICsxNTQsMTIgQEAgaW5saW5lIFNwZWN1
bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1c2VLaW5kKQogICAgICAgICByZXR1cm4g
U3BlY0hlYXBUb3AgJiB+U3BlY09iamVjdDsKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRVc2U6CisgICAgY2FzZSBBbnlCaWdJ
bnRVc2U6CiAgICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFVz
ZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OworICAgIGNhc2UgQmlnSW50MzJVc2U6
CisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgY2FzZSBQcm9taXNlT2JqZWN0VXNl
OgogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7CiAgICAgY2FzZSBEYXRlT2JqZWN0
VXNlOgpAQCAtMjEyLDI0ICsyMTgsNiBAQCBpbmxpbmUgYm9vbCBtYXlIYXZlVHlwZUNoZWNrKFVz
ZUtpbmQga2luZCkKICAgICByZXR1cm4gIXNob3VsZE5vdEhhdmVUeXBlQ2hlY2soa2luZCk7CiB9
CiAKLWlubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2gg
KGtpbmQpIHsKLSAgICBjYXNlIEludDMyVXNlOgotICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAg
ICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgY2FzZSBJbnQ1
MlJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFJlYWxV
c2U6Ci0gICAgY2FzZSBBbnlJbnRVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KIGlubGluZSBib29sIGlzRG91YmxlKFVzZUtpbmQga2luZCkKIHsKICAgICBz
d2l0Y2ggKGtpbmQpIHsKQEAgLTI2MSw3ICsyNDksNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNl
S2luZCBraW5kKQogICAgIGNhc2UgU3RyaW5nVXNlOgogICAgIGNhc2UgS25vd25TdHJpbmdVc2U6
CiAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgY2FzZSBCaWdJbnRVc2U6CisgICAgY2FzZSBIZWFw
QmlnSW50VXNlOgogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgIGNhc2UgU3RyaW5nT3JT
dHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjNjlkMWQzOGMxLi5hMjA0
YmI2YWZlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtNDgyLDcgKzQ4Miw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBo
JiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAg
ICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50MzJV
c2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1hcE9iamVjdFVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZiYy4uYzBmNGYyYjA2
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAK
QEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxpemVDb25zdGFudHMo
QjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAgICBpbnRQdHJUaHJl
ZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMpOwog
ICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3Vi
bGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYmln
SW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25W
YWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKaW5k
ZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBMVmFs
dWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGludFB0ckVpZ2h0IHsgbnVs
bHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9OwotICAgIAorI2lmIFVT
RShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsgbnVsbHB0ciB9OworI2VuZGlm
CisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAgY29uc3QgdW5zaWdu
ZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVlIGJyYW5jaFdlaWdodHMgeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggODAzNjM5MDdiOWUuLmQ2ZmQyNDVkYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEzNSwxMSArMjEzNSwyOCBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7
CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7
CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOwor
ICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOwor
CisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxhdGVBZGQodW5i
b3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJl
c3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAg
ICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmln
SW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludCht
X25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChw
b2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIxNzMsMjggQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgewor
ICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
OworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQp
OworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQp
OworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxhdGVTdWIo
dW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9u
KHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAg
ICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTc3LDExICsy
MjExLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hC
aWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJp
Z0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQu
c3BlY3VsYXRlTXVsKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxl
c3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3Jp
Z2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVz
dWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjg1LDcgKzIzMzYs
MjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsK
LSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
bm90IHN1cHBvcnRlZCBieSB0aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNo
aWxkMigpKTsKIApAQCAtMjU1NCwxMSArMjYxOSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlRGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
Ly8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uRGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjYzMywxOCArMjY5OSwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y29tcGlsZVZhbHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAvLyBGSVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAgICAgICAgaWYg
KG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9u
TW9kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1v
ZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlw
ZWRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlLCBtX25vZGUt
PmJpbmFyeVVzZUtpbmQoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgIH0KQEAgLTI4MDksMTcgKzI4NzgsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZVBvdygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBM
VmFsdWUgZXhwb25lbnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8v
IEZJWE1FOiBtYXliZSBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvblBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgZXhwb25lbnQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChVbnR5cGVkVXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRV
c2UpKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1
bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQpA
QCAtMzIwMCw5ICszMjczLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRO
b3QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAgICAgICAgICAg
TFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEJp
Z0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQz
MlVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Iob3Bl
cmFuZCwgbV9vdXQuY29uc3RJbnQ2NCgweDAwMDBGRkZGRkZGRjAwMDApKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgb3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMjAsMTEgKzMzMDMsMjMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5i
b3gsIHNpbmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0MCwxMSArMzMz
NSwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAv
LyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkg
Yml0QW5kCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVmdCwgcmln
aHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjAsMTEgKzMz
NjcsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0TWlzc2luZ1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2luZ1RhZywg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjgwLDExICszMzk5LDI5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50MzJVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNtYXJ0ZXIg
aGVyZQorICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVzZSBhIHJp
Z2h0LXNoaWZ0IGJ5IGEgbmVnYXRpdmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3IgQmlnSW50
cy4KKyAgICAgICAgICAgIC8vIFNvIGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZsb3cuCisK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJpdFJTaGlm
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyOTYsMjQg
KzM0MzMsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmFTaHIo
CiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1f
b3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigz
MSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0
IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9m
IHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0TFNoaWZ0
KCkKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAgIGxvd0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAg
IG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQz
MigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2Vm
dWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFz
dCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0
QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExT
aGlmdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzMzMCw3ICszNDY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICBzZXRJbnQzMihtX291dC5sU2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklY
TUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVk
ZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lk
IGNvbXBpbGVVSW50MzJUb051bWJlcigpCkBAIC03MzU1LDYgKzc0OTMsOSBAQCBwcml2YXRlOgog
ICAgICAgICAKICAgICAgICAgaWYgKGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkubV90
eXBlICYgKFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3ROdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2so
KTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNzM2NCwxMCArNzUwNSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAv
LyBub3ROdW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1f
bm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RCaWdJbnQz
MikpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2VuZGlmCiAg
ICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsKIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBtX291dC5i
cmFuY2goaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1
cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAvLyBXZSBo
YXZlIHNldmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVtZXJpYyBz
dGlsbCBleGlzdHMuCkBAIC04MzI0LDcgKzg0NjksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODM2Nyw3ICs4NTE1LDk0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAg
Ly8gTm8gbmVlZCB0byB1bmJveCBzaW5jZSB0aGUgdGFnIGJpdHMgYXJlIHRoZSBzYW1lIG9uIGJv
dGggc2lkZXMKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5lcXVhbChsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc3RhcnQgd2l0
aCBpZiAobGVmdCA9PSByaWdodCksIGJlY2F1c2Ugd2UgbXVzdCBpbnNlcnQgdGhlIHJpZ2h0IGNo
ZWNrcyAoc2VlIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiBhYm92ZSkKKyAgICAgICAgICAgIC8v
IFRoZSBjb2RlIHRoYXQgd2UgZ2VuZXJhdGUgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nIHBzZXVk
by1jb2RlOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihsZWZ0
KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0soaXNI
ZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6
OmVxdWFsc1RvSW50MzIocmlnaHQsIHVuYm94ZWQobGVmdCkpOworICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQobGVmdCkpCisgICAgICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
aWYgKGlzQmlnSW50MzIocmlnaHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmln
SW50OjplcXVhbHNUb0ludDMyKGxlZnQsIHVuYm94ZWQocmlnaHQpKTsKKyAgICAgICAgICAgICBD
SEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0Jp
Z0ludDo6ZXF1YWxzKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgYm90aEFyZUJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG9ubHlMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNOb3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzSGVhcEJpZ0ludCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQmlnSW50MzIg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc05vdEJp
Z0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c0JpZ0ludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUobGVm
dElzQmlnSW50MzIpLCB1bnN1cmUobGVmdElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAg
Ly8gRklYTUU6IHNldCB0aGUgb3JkZXIgb2YgdGhlIGJsb2NrcyB0byBtYXhpbWl6ZSBmYWxsdGhy
b3VnaAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzQmlnSW50MzIpOworICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIocmlnaHQsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDIoKSkpLCB1bnN1cmUoYm90aEFyZUJpZ0ludDMyKSwgdW5zdXJlKG9ubHlMZWZ0SXNCaWdJ
bnQzMikpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhib3RoQXJlQmlnSW50MzIpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlMZWZ0SXNC
aWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExlZnRJc0JpZ0ludDMyID0gbV9v
dXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkNv
bXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCByaWdo
dCwgdW5ib3hlZExlZnQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05vdEJpZ0ludDMyKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUobGVmdEVxdWFs
c1JpZ2h0KSwgdW5zdXJlKGxlZnRJc0hlYXBCaWdJbnQpKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obGVmdEVxdWFsc1JpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
c3VsdExlZnRFcXVhbHNSaWdodCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxlZnRJc0hlYXBCaWdJbnQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlz
QmlnSW50MzIocmlnaHQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDIoKSkpLCB1bnN1cmUocmln
aHRJc0JpZ0ludDMyKSwgdW5zdXJlKHJpZ2h0SXNOb3RCaWdJbnQzMikpOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhyaWdodElzQmlnSW50MzIpOworICAgICAgICAgICAgTFZhbHVlIHVu
Ym94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgcmVzdWx0UmlnaHRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwo
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMy
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCB1bmJveGVkUmlnaHQpKSk7CisgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHJpZ2h0SXNOb3RCaWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0Jp
Z0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmln
IGludHMKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI4OTUKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhIZWFwQmln
SW50ID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBzZXRCb29s
ZWFuKG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0Qm90aEFyZUJpZ0ludDMyLCByZXN1bHRMZWZ0SXNC
aWdJbnQzMiwgcmVzdWx0TGVmdEVxdWFsc1JpZ2h0LCByZXN1bHRSaWdodElzQmlnSW50MzIsIHJl
c3VsdEJvdGhIZWFwQmlnSW50KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtp
bmQpOwpAQCAtODQ1MCwxMSArODY4NSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0g
Q3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNl
CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVk
IHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CkBAIC0xNDIxNCw5ICsxNDQ0OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1pdEJp
bmFyeVNuaXBwZXQoSl9KSVRPcGVyYXRpb25fR0pKIHNsb3dQYXRoRnVuY3Rpb24pCiAgICAgewog
ICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICAKLSAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogCiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxl
ZnRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsK
ICAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDIoKSkucmVzdWx0VHlwZSgpKTsKQEAgLTE0MjgyLDggKzE0NTE5LDExIEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAKLSAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+
Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVm
dE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkpOwog
ICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQ4OTUsNyArMTUxMzUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcg
Y29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAgICAgICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxs
KSB7Ci0gICAgICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBC
aWdJbnQpCisgICAgICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBp
cyBIZWFwQmlnSW50KQogICAgICAgICAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5s
ZW5ndGgKICAgICAgICAgICAgIC8vICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vICAgICAgICAg
ZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtMTQ5MDUsNiAr
MTUxNDUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJ
bnQzMih2YWx1ZSkKICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7
CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAg
ICAgICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAgICAgICAgIC8v
ICAgICByZXN1bHQgPSAodmFsdWUgIT0gQmlnSW50MzJUYWcpCiAgICAgICAgICAgICAvLyB9IGVs
c2UgewogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgICAg
ICAgICAgLy8gfQpAQCAtMTQ5MTIsMTMgKzE1MTU0LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3RTdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIHN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAg
TEJhc2ljQmxvY2sgYmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBM
QmFzaWNCbG9jayBub3RTdHJpbmdPckJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgaGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50MzJDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEludDMyQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdERvdWJsZUNhc2UgPSBtX291
dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2s+IHJlc3VsdHM7CkBAIC0xNDkz
MiwyMCArMTUxNzgsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90U3RyaW5nQ2FzZSwgc3RyaW5nQ2FzZSk7CiAgICAgICAgICAgICBtX291
dC5icmFuY2goCi0gICAgICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRn
ZSkgJiAoU3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCi0gICAgICAgICAgICAgICAgdW5zdXJlKGJp
Z0ludENhc2UpLCB1bnN1cmUobm90U3RyaW5nT3JCaWdJbnRDYXNlKSk7CisgICAgICAgICAgICAg
ICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0gU3Bl
Y1N0cmluZykpLAorICAgICAgICAgICAgICAgIHVuc3VyZShoZWFwQmlnSW50Q2FzZSksIHVuc3Vy
ZShub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhzdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHN0cmluZ0Nhc2UsIGhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihtX291dC5ub3RFcXVhbCh2YWx1ZSwgd2Vha1BvaW50ZXIoanNFbXB0eVN0
cmluZyhtX2dyYXBoLm1fdm0pKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgbm90U3RyaW5n
T3JCaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhlYXBCaWdJbnRDYXNl
LCBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgbm9uWmVy
b0JpZ0ludCA9IG1fb3V0Lm5vdFplcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJO
b25OZWdhdGl2ZSh2YWx1ZSwgbV9oZWFwcy5KU0JpZ0ludF9sZW5ndGgpKTsKICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihub25aZXJvQmlnSW50KSk7CiAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdFN0cmluZ09yQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UsIG5vdENlbGxD
YXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBpc1RydXRoeU9iamVjdDsKICAgICAgICAgICAgIGlm
IChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKQogICAgICAg
ICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQuYm9vbGVhblRydWU7CkBAIC0xNDk4OCw4
ICsxNTIzNCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuYm94RG91YmxlKHZhbHVl
KSwgbV9vdXQuY29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9v
dXQuYW5jaG9yKGRvdWJsZUlzVHJ1dGh5KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhub3REb3VibGVDYXNlLCBiaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgICAgICBpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYg
flNwZWNDZWxsKSwKKyAgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMyQ2FzZSksIHVuc3Vy
ZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50
MzJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZhbHVlIGJpZ0ludDMyTm90
WmVybyA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJp
Z0ludDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYmln
SW50MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwg
Y29udGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3Vi
bGVDYXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAgICBMVmFsdWUgbWlzY0lz
VHJ1dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAgLTE1NTk0LDEzICsx
NTg1NCwxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAg
IH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmlu
ZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAg
IH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBi
aWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJu
IHN5bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIG51bWJl
cikgewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAgICAvLyB9IGVsc2UgaWYg
KGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8v
IH0gZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAg
ICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NjI4LDYgKzE1ODkwLDkgQEAg
cHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMkNhc2UgPSBt
X291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYm9vbGVhbkNhc2UgPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRlZmluZWRDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKQEAgLTE1NjgwLDcgKzE1OTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQp
ICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAgICAgIGlz
SGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2Jq
ZWN0IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2UpLCB1bnN1
cmUoc3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIHN5
bWJvbENhc2UpOwpAQCAtMTU2OTYsOCArMTU5NjEsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJlckNhc2UpOwogICAgICAg
ICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3RCaWdJbnQzMkNh
c2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShj
aGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RCaWdJbnQz
MkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2UsIG5vdE51
bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5v
dE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwogICAgICAgICBpZiAo
cHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBpc051bGwgPSBtX291
dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKQEAg
LTE2Mzg4LDE1ICsxNjY2MCwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxv
d0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09
IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSk7CiAK
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7Ci0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50
KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihFZGdlIGVkZ2UsIE9wZXJh
bmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworCisgICAgICAgIExv
d2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsK
KyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZShyZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIocmVzdWx0KSk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heUhh
dmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVybWluYXRlKFVuY291
bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVybzsKKyAgICB9CisjZW5k
aWYKKwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1
bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
biB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY1ODIsNyArMTY4NzIsNzIg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQuemVyb0V4
dCh2YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAgIHJldHVy
biBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAgICAgICAgIG1fb3V0
LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykp
LAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOwor
ICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRl
ZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92
ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0
dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAorICAgICAgICAgICAg
bV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJN
YXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFn
KSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoanNWYWx1ZSwg
bV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVlIGJveEJpZ0ludDMyKExW
YWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE9yKAorICAg
ICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1ZSwgQjM6OkludDY0KSwg
bV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RBbnlCaWdJbnQoTFZh
bHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7Cisg
ICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0JpZ0lu
dCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIC8vIGlmIChpc0JpZ0lu
dDMyKQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAvLyBpZiAoIWlzQ2VsbCkK
KyAgICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0dXJuICFpc0hlYXBCaWdJ
bnQKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAg
ICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQmln
SW50MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5G
YWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RCaWdJbnQz
MkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUpLCB1bnN1
cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVyblRy
dWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSk7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0ludCA9IG1fb3V0LmFuY2hv
cihpc05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRydWUsIHJldHVybklz
Tm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgIExW
YWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBT
cGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5W
YWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTY4OTQsOCArMTcyNDks
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgc3Bl
Y3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJp
Z0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVC
aWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0lu
dFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgICAg
IGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAgICAgICAgIHNwZWN1
bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MDgxLDE4ICsxNzQ0NCwxOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0cnVjdHVyZS0+aWQo
KSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3Vs
YXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnQo
TFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0g
ICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGws
IH5TcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVl
KHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAgIHJldHVybiBw
cm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKICAgICAgICAgICAgIG1fb3V0
LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCiAgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKHZtKCkuYmlnSW50U3RydWN0dXJlLT5pZCgpKSk7CiAgICAgfQogCi0g
ICAgTFZhbHVlIGlzQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3Bl
Y0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzSGVhcEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRl
ZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92
ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0JpZ0ludCkpCisgICAgICAg
IGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNI
ZWFwQmlnSW50KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBt
X291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2Vs
bF9zdHJ1Y3R1cmVJRCksCkBAIC0xNzU1MCwxNSArMTc5MTMsMjggQEAgcHJpdmF0ZToKICAgICAg
ICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0KIAotICAgIHZv
aWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgdm9pZCBzcGVj
dWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgeworICAgICAgICBG
VExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNIZWFwQmlnSW50LCBp
c05vdEhlYXBCaWdJbnQoY2VsbCkpOworICAgIH0KKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBs
b3dDZWxsKGVkZ2UpKTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBzcGVj
dWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBGVExfVFlQRV9DSEVDSyhq
c1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QmlnSW50KGNlbGwpKTsK
KyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBl
ZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIodmFsdWUpKTsKICAgICB9CiAKLSAgICB2
b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJ
bnQoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIGxvd0Nl
bGwoZWRnZSkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7CiAgICAg
fQorI2VuZGlmCiAKICAgICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBM
VmFsdWUgY2VsbCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHAKaW5kZXggMjE3MTVkM2RkMjIuLjliYmE3NDM5YmNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0y
ODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBl
eGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUpCi0gICAgICAgICAgICBl
eGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNW
YWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9y
LT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZv
OjpyZWdUMCksIEdQUkluZm86OnJlZ1QxKTsKICAgICB9CiAKICAgICAvLyBNYXRlcmlhbGl6ZSBh
bGwgb2JqZWN0cy4gRG9uJ3QgbWF0ZXJpYWxpemUgYW4gb2JqZWN0IHVudGlsIGFsbApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRl
eCBjZTAzOWJhNzdlOS4uOWY2YWI1MTE3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgU3Ry
aW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVhcFNu
YXBzaG90Tm9kZSYpPiBhbGxvd04KIAogICAgICAgICB2b2lkKiB3cmFwcGVkQWRkcmVzcyA9IDA7
CiAgICAgICAgIHVuc2lnbmVkIGxhYmVsSW5kZXggPSAwOwotICAgICAgICBpZiAoIW5vZGUuY2Vs
bC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0JpZ0ludCgpKSB7CisgICAgICAgIGlmICgh
bm9kZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2VsbC0+c3RydWN0dXJlKHZt
KTsKICAgICAgICAgICAgIGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmdsb2JhbE9iamVj
dCgpKQogICAgICAgICAgICAgICAgIGZsYWdzIHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOb2Rl
RmxhZ3M6OkludGVybmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmgKaW5kZXggOTlmYTQwZWJiNDQuLmYyN2VlZjRiNDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAj
aW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVk
ZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJWTS5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5j
cHAKaW5kZXggNmNiYWVjMTY0NDMuLjAzMjQ2OWZlNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3Jp
YmJsZS5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDgxMzMyZDIxMDkxLi42MWYyZTc2NWYyNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0xODcsOCArMTg3LDggQEAgdm9pZCBJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
aGVhcE9iamVjdElkLAogICAgIH0KIAogICAgIC8vIEJpZ0ludCBwcmV2aWV3LgotICAgIGlmIChj
ZWxsLT5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50Ojp0cnlH
ZXRTdHJpbmcodm0sIGFzQmlnSW50KGNlbGwpLCAxMCk7CisgICAgaWYgKGNlbGwtPmlzSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50Ojp0cnlHZXRTdHJpbmco
dm0sIGFzSGVhcEJpZ0ludChjZWxsKSwgMTApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApp
bmRleCBiZjI5ODRhMTI4OS4uZGYxMDMyNDM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHVu
c2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBhcmd1bWVudHMsIHVpbnQzMl90CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nVHlw
ZToKICAgICBjYXNlIFN5bWJvbFR5cGU6Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgorICAgIGNhc2Ug
SGVhcEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2JqZWN0
LCAgYXJndW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBlYjgwODJlOWI3Yi4u
NDhlYWE0MDNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRD
b252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIHsK
ICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToK
ICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3Ry
aW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBv
ciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+
bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGluZ3Mg
Zm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNjk4LDYgKzY5OCw4IEBAIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsdWUsIEdQUlJlCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkK
ICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8vICAgICByZXN1bHQg
PSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50
MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZhbHVlKQogICAgIC8v
IH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgIC8vIH0K
QEAgLTcwNiw3ICs3MDgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1
ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogCiAgICAgYXV0byBu
b3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlzU3RyaW5nID0gYnJh
bmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlzQmlnSW50ID0gYnJh
bmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9
IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAgICAgaWYgKHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NFUlQoc2NyYXRjaElm
U2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwpAQCAt
NzI5LDcgKzczMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9C
b29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgY29tcGFyZVB0cihp
bnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIHJlc3VsdCwgcmVz
dWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0aGlz
KTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICBsb2FkMzIoQWRkcmVzcyh2YWx1
ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0KTsKICAg
ICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1t
MzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKQEAgLTc1Miw2ICs3NTQs
MTUgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0m
IHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwog
CiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8g
aXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5n
cHIoKSwgcmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQpOworICAgIHVyc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgIGNvbXBhcmUzMihpbnZlcnQgPyBF
cXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKKyAgICBk
b25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRoaXMpOworI2Vu
ZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGNvbXBhcmU2NChp
bnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQpAQCAtNzY3LDcgKzc3OCw3IEBAIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2
bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNv
bnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAv
LyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAg
IGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAg
ICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAg
ICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTc3
Nyw2ICs3ODgsOCBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6
YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIC8vICAgICByZXN1bHQg
PSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIp
IHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVs
c2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hC
aWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1
ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03ODYsNyArNzk5LDcgQEAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWwKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAg
ICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0g
ICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7Cisg
ICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQ
UigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAg
ICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAh
PSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgxNyw3ICs4MzAsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1
bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdz
IHZhbAogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoUHRyKGludmVydCA/IEVxdWFsIDogTm90RXF1
YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbVB0cihqc0VtcHR5U3RyaW5nKHZtKSkp
KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0aGlzKTsK
KyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRl
c3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCks
IEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7
CiAKQEAgLTg0Miw2ICs4NTUsMTUgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB9CiAK
ICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0byBp
c05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVlLmdw
cigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICB1cnNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaCk7CisgICAgdHJ1dGh5LmFwcGVuZChicmFu
Y2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHNjcmF0Y2gpKTsKKyAgICBkb25lLmFw
cGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRydXRoeS5hcHBlbmQoYnJh
bmNoNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpKTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA2NjhmMGU1YWMxNS4uZGI2
NDhhYmJiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTkyOSw3ICs5MjksMzcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoSWZO
b3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlmCiAgICAgfQotICAgIAor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQzMihHUFJSZWcgZ3By
LCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVy
cykKKyAgICB7CisgICAgICAgIEp1bXAgbnVtYmVyID0gYnJhbmNoSWZOdW1iZXIoZ3ByLCBtb2Rl
KTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJl
cihncHIsIHRlbXBHUFIpOworICAgICAgICBudW1iZXIubGluayh0aGlzKTsKKyAgICAgICAgcmV0
dXJuIGJpZ0ludDMyOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQzMktub3duTm90
TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsK
KyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQ
Uik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJ
bnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihyZWdz
LmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludDMyS25v
d25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICBB
U1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBH
UFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0
ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJ
R0lOVDMyKQorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRo
YXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5j
aElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgo
CkBAIC05NTEsMTMgKzk4MSwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYnJh
bmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTog
cmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5w
dXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNoSWZTdHJpbmcoR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1bXAg
YnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlw
ZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZTeW1ib2woR1BSUmVn
IGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQog
ICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZCaWdJ
bnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBCaWdJbnRU
eXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0
dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQorICAgIEp1bXAgYnJh
bmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2Vs
bEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdEhlYXBCaWdJbnQo
R1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBIZWFwQmln
SW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsg
cmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICBKdW1w
IGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90
VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICAKQEAgLTEzMzgsNiArMTM2OSwx
OSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgfQor
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCB1
bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICB1cnNoaWZ0NjQodHJ1c3Rl
ZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICB9CisKKyAgICB2b2lkIGJveEJp
Z0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBsc2hpZnQ2NCh0cnVzdGVkSW1tMzJG
b3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAgICBvcjY0KFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQogI2VuZGlmCiAKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQpAQCAtMTcxOCw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgICAgICAvLyAgICAgICAg
IH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAg
ICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQp
IHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAv
LyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcyOSw2ICsxNzczLDggQEAgcHVibGljOgog
ICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJv
b2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisgICAgICAgIC8vIH0gZWxz
ZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdpbnQKICAgICAg
ICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRlZmluZWQKICAgICAgICAg
Ly8gfQpAQCAtMTc2MCwxMCArMTgwNiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgbm90U3RyaW5n
LmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBicmFuY2hJZk5vdEJpZ0lu
dChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0gYnJhbmNoSWZOb3RIZWFw
QmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFs
c2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAgICAgICBub3RIZWFwQmln
SW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6U3ltYm9sLCBmYWxz
ZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7CkBAIC0xNzc5LDYgKzE4
MjUsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4gPSBicmFuY2hJZk5vdEJv
b2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6Qm9vbGVh
biwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIEp1bXAgbm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25v
d25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6
QmlnSW50LCBmYWxzZSk7CisgICAgICAgIG5vdEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5kaWYK
ICAgICAgICAgCiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6VW5kZWZpbmVkLCB0cnVlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRl
eCAzYTMyYzMyNjE4OS4uZjUwYzMwMzA2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDc2LDYgKzQ3Niw3IEBAIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFVuYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5l
Z2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVn
SUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAg
ICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlD
KTsKKyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0
aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVt
aXRNYXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVy
YXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9CiAKQEAg
LTQ4NCw2ICs0ODUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKICAgICBKSVROZWdJQyogbmVnSUMgPSBiaXR3aXNlX2Nhc3Q8SklUTmVn
SUMqPihtX2luc3RydWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbikpOworICAg
IC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1
ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAgZW1pdE1hdGhJ
Q1Nsb3c8T3BOZWdhdGU+KG5lZ0lDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3Bl
cmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCmluZGV4IGZkZTAwYmNjOGM5Li42MjA3NjMzNDhjNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9n
YS5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NzEsOSArNTcxLDE1IEBAIHZvaWQgSklUOjpj
b21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBD
b21waWxlT3BTdHJpCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwg
c3JjMiwgcmVnVDEpOwogICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAo
dG8gY292ZXIgc3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292
ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAv
LyBGSVhNRTogd2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJl
IGlzIGEgQmlnSW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGgg
YXJlIHN0cmluZ3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0
byBjb3ZlciBzdHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKICAgICAKICAgICAvLyBKdW1wIHNsb3cg
aWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hp
Y2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdApAQCAtNjE0LDkgKzYyMCwxNSBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIENvbXBpbGVPcAogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAs
IHNyYzIsIHJlZ1QxKTsKIAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8g
Y292ZXIgc3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIg
c3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBG
SVhNRTogd2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlz
IGEgQmlnSW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJl
IHN0cmluZ3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBj
b3ZlciBzdHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRT
bG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKIAogICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRo
ZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBm
aW5lLCBhbmQgdGhlbiB0ZXN0CkBAIC02ODYsNyArNjk4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVtcCBpc05vdENl
bGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90
QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJl
Z1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5r
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CmluZGV4IGIxMWY2NTVmY2I2Li4zMzU2ODFmNWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2Vs
bCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RC
aWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVn
VDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmso
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCA3YmRmMWY3MzJiZi4uMjQ3ZTYzMGU1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTI5Niw2ICsxMjk2LDE5IEBAIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGdsb2JhbE9iamVjdCwg
c3JjMSwgc3JjMik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGhlYXBCaWdJbnQsIGludDMyX3Qgc21hbGxJbnQpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoaGVhcEJpZ0ludC0+
aXNIZWFwQmlnSW50KCkpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4oaGVh
cEJpZ0ludCktPmVxdWFsc1RvSW50MzIoc21hbGxJbnQpOworfQorI2VuZGlmCisKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoUHJvZmlsZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBj
b25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTI4MTUsNiArMjgyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
CiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIg
dG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2Fu
IGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcGVyYW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4Mjcs
OCArMjg0MSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBwcmltVmFs
dWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFs
dWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFw
QmlnSW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTI4MzYsNiArMjg1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQog
CisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFs
dWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpA
QCAtMjg1MCwxMCArMjg3NCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFs
dWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJ
TlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3Vs
dChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1
ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTI4NjQsNiArMjg5OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
CisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFs
dWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQs
IEpJVE5lZ0lDKiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBA
IC0yODg0LDkgKzI5MjAsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICAKICAgICBK
U1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAg
ICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBp
bnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAo
dmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlm
IChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpOwogICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTI4OTgsNiArMjk0Niw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0
aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBK
SVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
MjkxNyw5ICsyOTY2LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAo
cHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhpcyBmdW5jdGlvbiBwcm9maWxlIHRo
ZSBhcmd1bWVudCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50
MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51
cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0g
cHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDYwMGZjYTI5ZGMyLi4yMDliM2MzZjhjNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogaGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lOVEVSTkFMOwogI2Vsc2UK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogbGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDM0MTY4MGFiZWU4Li4wOGQwY2JiYTE0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAg
LTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NTEsNyAr
ODUxLDggQEAgbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFs
aXR5T3BlcmF0aW9uKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0
MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAg
IG1vdmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgIyBUaGlzICdhbmQnIGNv
dWxkIGJlIGFuICdvcicgaWYgbm90IGZvciBCaWdJbnQzMgorICAgICAgICBhbmRxIHQxLCB0Mgog
ICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKICAgICAgICAgYnFhZXEgdDAsIG51
bWJlclRhZywgLmxlZnRPSwogICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwpAQCAt
ODg1LDcgKzg4Niw4IEBAIG1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQzLCB0MSkKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAg
ICAjIFRoaXMgJ2FuZCcgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyCisgICAg
ICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwogICAg
ICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCiAgICAgICAgIGJ0cW56IHQwLCBudW1i
ZXJUYWcsIC5zbG93CkBAIC05MTYsMjQgKzkxOCwyNiBAQCBzdHJpY3RFcXVhbGl0eUp1bXBPcChq
bnN0cmljdGVxLCBPcEpuc3RyaWN0ZXEsCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAg
ICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQKIAotICAgICAgICBnZXQobV9zcmNEc3QsIHQw
KQotICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0
MikKLSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0
MywgbnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykK
LSAgICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwg
OF0KLSAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKLSAgICAgICAg
ZGlzcGF0Y2goKQorICAgIGdldChtX3NyY0RzdCwgdDApCisgICAgbG9hZHEgW2NmciwgdDAsIDhd
LCB0MQorICAgIG1ldGFkYXRhKHQyLCB0MykKKyAgICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRhdGEg
aW4gdDIKKyAgICAjIEZJWE1FOiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGgg
Zm9yIEJpZ0ludDMyLiBXZSBjb3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBo
ZXJlIGZvciB0aGVtLgorICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgIGludGVnZXJP
cGVyYXRpb24odDEsIC5zbG93KQorICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgc3RvcmVxIHQx
LCBbY2ZyLCB0MCwgOF0KKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQor
ICAgIGRpc3BhdGNoKCkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCisKIGVuZAog
CiBsbGludE9wV2l0aFByb2ZpbGUob3BfdG9fbnVtYmVyLCBPcFRvTnVtYmVyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmNwcAppbmRleCA4NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVlMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC04Myw2ICs4Mywx
MCBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFs
SWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAg
ICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CisgICAgSlNWYWx1ZSBiaWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0
ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1v
ZGU6OlRocm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwor
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisKICAgICAvLyBGSVhNRTogV2UgYXJlIGFs
bG9jYXRpbmcgYSBKU0JpZ0ludCBqdXN0IHRvIGJlIGFibGUgdG8gdXNlCiAgICAgLy8gSlNCaWdJ
bnQ6OnRyeUdldFN0cmluZyB3aGVuIHJhZGl4IGlzIG5vdCAxMC4KICAgICAvLyBUaGlzIGNyZWF0
ZXMgc29tZSBHQyBwcmVzc3VyZSwgYnV0IHNpbmNlIHRoZXNlIGlkZW50aWZpZXJzCkBAIC05MCwx
MSArOTQsMTUgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50
RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICAvLyBpdCB3b250IGJlIG11
Y2ggcHJvYmxlbWF0aWMsIGdpdmVuIHN1Y2ggY2FzZXMgYXJlIHZlcnkgcmFyZS4KICAgICAvLyBU
aGVyZSBpcyBhIGxvdCBvZiBvcHRpbWl6YXRpb25zIHdlIGNhbiBhcHBseSBoZXJlIHdoZW4gbmVj
ZXNzYXJ5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc2MjcKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBK
U0JpZ0ludCogYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlm
aWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2Vw
dGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwotICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGJpZ0ludCwgMTApKSk7Cisg
ICAgSlNCaWdJbnQqIGhlYXBCaWdJbnQ7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJ
bnQuaXNCaWdJbnQzMigpKQorICAgICAgICBoZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgZWxzZQorI2VuZGlmCisgICAg
ICAgIGhlYXBCaWdJbnQgPSBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisKKyAgICBtX2lkZW50aWZp
ZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3Ry
aW5nKHZtLCBoZWFwQmlnSW50LCAxMCkpKTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDYg
QEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmZmM2Y3OTcyMGIuLjVmMGQ1
NDg0ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
Q29uc3RydWN0b3IuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzUsMTggKzc1LDYgQEAgdm9pZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJbnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSkKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGJvb2wgaXNTYWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3Vt
ZW50KQotewotICAgIGlmIChhcmd1bWVudC5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgaWYgKCFhcmd1bWVudC5pc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBkb3VibGUgbnVtYmVyID0gYXJndW1lbnQuYXNEb3VibGUoKTsKLSAgICByZXR1cm4g
dHJ1bmMobnVtYmVyKSA9PSBudW1iZXIgJiYgc3RkOjphYnMobnVtYmVyKSA8PSBtYXhTYWZlSW50
ZWdlcigpOwotfQotCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBBU1NFUlQoYXJndW1l
bnQuaXNQcmltaXRpdmUoKSk7CkBAIC05NCwyMCArODIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1l
bnQpCiAgICAgCiAgICAgaWYgKGFyZ3VtZW50LmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYXJndW1lbnQpOwotICAgIAorCisgICAgaWYgKGFyZ3VtZW50LmlzQm9v
bGVhbigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgYXJndW1lbnQuYXNCb29sZWFuKCkpKTsK
KyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAo
YXJndW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2Jh
bE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZp
ZXcpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZp
bmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgp
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAg
aWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNC
b29sZWFuKCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkg
fHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1
bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFy
Z3VtZW50LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
dG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3
KSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGds
b2JhbE9iamVjdCwgdmlldykpOwotICAgIH0pKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50
IG9wZXJhdGlvbiJfcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKQEAgLTExOSwyMCArMTExLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgaWYgKHByaW1pdGl2ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIGlmICghaXNTYWZl
SW50ZWdlcihwcmltaXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzYWZl
IGludGVnZXIiX3MpKTsKLSAgICAgICAgCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7Cisg
ICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBwcmlt
aXRpdmUuYXNJbnQzMigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZW5kaWYK
KyAgICB9CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc1VJbnQzMigpKQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZl
LmFzVUludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlzRG91YmxlKCkpIHsKKyAgICAgICAg
ZG91YmxlIG51bWJlciA9IHByaW1pdGl2ZS5hc0RvdWJsZSgpOworICAgICAgICBpZiAodHJ1bmMo
bnVtYmVyKSAhPSBudW1iZXIgfHwgc3RkOjphYnMobnVtYmVyKSA+IG1heFNhZmVJbnRlZ2VyKCkp
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGEgc2FmZSBpbnRlZ2VyIl9zKSk7CiAK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyT3JIZWFwLCB2
bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQot
ICAgIAorCiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0
LCBwcmltaXRpdmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50T2JqZWN0LmNwcAppbmRleCBlZTAwNDVkYWM5Ni4uZTYxOTgyYjkzYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9s
aW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3
ICszNyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShCaWdJbnRP
YmplY3QpOwogY29uc3QgQ2xhc3NJbmZvIEJpZ0ludE9iamVjdDo6c19pbmZvID0geyAiQmlnSW50
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShC
aWdJbnRPYmplY3QpIH07CiAKIAotQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBiaWdJbnQpCitC
aWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmlnSW50T2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBC
aWdJbnRPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwog
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGJpZ0ludCk7CkBAIC00OSw3ICs0OSw3IEBA
IEJpZ0ludE9iamVjdDo6QmlnSW50T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiB9CiAKLXZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQmln
SW50KiBiaWdJbnQpCit2b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50T2JqZWN0LmgKaW5kZXggNDRmYzc2ZmJkZjkuLmE2MzU0YTE2ZWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWls
LmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU1dy
YXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBK
U0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3JhcHBl
ck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCBkYjRhNjE4
ODk5ZC4uZmI1YjlmYWIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDEyICs3OSwyNCBAQCB2b2lkIEJpZ0ludFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFs
dWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogaGVhcC1h
bGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJlLWltcGxlbWVudGlu
ZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0aGF0IEknbSBkZWZl
cnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0aGlzVmFsdWUuYmln
SW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7
CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+
KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAgICAgICAgaWYgKEJp
Z0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2
bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBi
aWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYK
KyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk5LDggKzExMSw2IEBAIHN0YXRpYyBKU1Zh
bHVlIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBv
ciBCaWdJbnRPYmplY3QiX3MpOwogCi0gICAgQVNTRVJUKHZhbHVlKTsKLQogICAgIGludDMyX3Qg
cmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKQEAgLTExOCw2ICsxMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHNob3Vs
ZCBpbnRyb2R1Y2UgdGhlIHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5kcyBhbmQgc2ltaWxh
ciB0aGluZ3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1Rv
TG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9T
dHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NGQ4ZmI0YjQyMi4u
NzQzZWM4YzFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVy
YXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNDcwLDEzICs0NjksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5j
KQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAg
ICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsK
LSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9i
YWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVl
IHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3Vs
dFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICBy
ZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAg
ICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0
LCB7IH0pOwogfQogCkBAIC00ODUsMTMgKzQ3OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9kZWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigp
OwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1
ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1
bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVj
KGdsb2JhbE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpT
VmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAg
ICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAx
KTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCBy
ZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTUwOCw3ICs0OTcsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRl
QXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEs
IEpTVmEKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQ
cm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVz
dWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNO
dW1iZXIoKSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJv
ZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxz
ZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJp
Z0ludDMyKCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051
bWJlcigpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBp
ZiAob3BlcmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZEludDMyT3ZlcmZsb3coKTsKQEAgLTUyOCwxMCArNTI1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRl
QXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEs
IEpTVmEKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZs
b3coKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0Lmlz
QmlnSW50KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNl
Ci0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vs
c2UKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0
ZTo6TWV0YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0Niw4ICs1NDAsMjIgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENI
RUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAg
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQo
cHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJ
bnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0lu
dDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAg
ICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRh
dGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBw
cmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRp
ZgorCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJ
bnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAg
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBv
cGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01ODUsOCArNTkzLDEyIEBAIHN0YXRpYyB2b2lkIHVw
ZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqIGNvZGVCCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92
ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3Vs
dC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAg
fSBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2Jz
ZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3Vs
dC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOwor
I2VuZGlmCiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMo
KTsKIH0KQEAgLTYwOCwxMyArNjIwLDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251
bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1l
cmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQp
LmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50
ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1i
ZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTcsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3Bl
cmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9w
ZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8v
IHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4g
IChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFs
cmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bXVsKQpAQCAtNjcyLDI0ICs2NzksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0g
R0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VU
X0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVm
dC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpz
dWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAg
ICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7
Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVU
VVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVG
b3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0
LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY5Miw4IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBK
U1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkco
cmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJp
dGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGlu
IGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4o
bGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVy
aWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9X
SVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmlu
YXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmln
aHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs3MDUsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1
ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJp
Z2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1l
cmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0g
ICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3Bl
cmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1l
cmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVz
dWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1OCwyNSArNzE2
LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhz
KS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5q
c1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBy
aWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93
KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0g
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAg
ICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBk
b3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0g
V1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9w
ZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzI3LDEwIEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExz
aGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmln
aHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
ICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBU
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAg
ICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMp
IDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzM5LDEwIEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJz
aGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmln
aHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAg
ICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJf
cykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQz
Ml90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAz
MSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg1MCw3OSAr
NzY4LDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4o
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3Bl
cmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0lu
dE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0g
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmpl
Y3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAg
ICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAot
ICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51
bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBv
cGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVz
dWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJ
TigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBs
ZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BS
T0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGlu
IGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VU
X0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0
ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihX
VEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51
bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0
LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAg
ICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBh
dXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0lu
dE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0
ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2Ug
J29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmpl
Y3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJP
RklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsK
ICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
YXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBs
ZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0g
R0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChq
c051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90
PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBl
b2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMz
NDU0NDJmNTQuLjAyYTViNzFkYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBD
YWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUo
SW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4OCwz
NCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxK
U0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xl
RGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICByZXR1
cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAgICAg
IERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1v
ZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYg
KHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hh
cmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7
CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VN
b2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMs
IHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBz
aWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xv
YmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFy
c2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAgICBy
ZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5n
dGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dF
bXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0JpZ0lu
dDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmll
dyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFyc2VN
b2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQxLDIzIEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJv
YmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwg
eCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQorICAg
ICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpV
bnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9i
amVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHBy
b2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmplY3Qs
IHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsK
KyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgp
LCAxKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRl
U3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNvbHV0
ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpTQmln
SW50KiBKU0JpZ0ludDo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUzMiw3ICs1MjYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpT
QmlnSQogICAgIGlmICh4LT5zaWduKCkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAK
LSAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4ICYg
KC15KSA9PSB4ICYgfih5LTEpCiAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xv
YmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBAIC0x
NjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50
Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJldmlz
aXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4g
cmVzdWx0U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwpA
QCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTE4MTAsNyArMTgwNCw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUq
ICBkYXRhLCB1bnNpCiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRh
dGFbcF0pKQogICAgICAgICArK3A7CiAKLSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNo
YXJhY3RlcnMKKyAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
ZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VNb2Rl
LCBQYXJzZUludFNpZ246OlVuc2lnbmVkLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJp
bmcpOwpAQCAtMTgyNCwyNCArMTgxOCwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogCiAg
ICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlmIChw
IDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAgICsr
cDsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRhdGFb
cF0gPT0gJy0nKSB7CiAgICAgICAgICAgICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7CiAg
ICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3BdID09
ICcrJykKKyAgICAgICAgICAgICsrcDsKICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0g
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJz
ZU1vZGUsIHNpZ24pOwotCi0gICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKLSAg
ICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwg
ZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VN
b2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNl
TW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2Rl
LCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBBU1NF
UlQobGVuZ3RoID49IDApOwogICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1Miw3
ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6
VGhyb3dFeGNlcHRpb25zKQogICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBT
dHJpbmcgdG8gQmlnSW50IikpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCkBA
IC0xODY2LDQ0ICsxODU0LDg2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBsZW5n
dGggPSBlbmRJbmRleCArIDE7CiAKLSAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAgPT0g
bGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZt
KTsKLQotICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAx
MCk7Ci0gICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2ln
bmVkIGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQg
PSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBz
dGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFz
IGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAg
IGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5p
dGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0
OwotICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAg
ICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+
PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAt
ICdhJyArIDEwOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwg
bGltaXRBKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRp
cGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdp
dCkpOworI2VuZGlmCiAgICAgfQogCi0gICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJ
bnRTaWduOjpTaWduZWQgPyB0cnVlIDogZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0
byBwaWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRG
b3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0lu
dDMyOworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAg
ICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MTA6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9
IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0g
bnVsbHB0cjsKIAotICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBhcnNl
TW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0
LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQgbGlt
aXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1p
dGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2ln
bmVkIGxpbWl0QSA9ICdBJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7Cisg
ICAgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBs
ZW5ndGgpIHsKKyAgICAgICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50
MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsr
aSwgKytwKSB7CisgICAgICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRp
cGxpZXIgKj0gcmFkaXg7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtw
XSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAg
ICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAg
ICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBl
bHNlIGlmIChkYXRhW3BdID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAg
ICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBC
aWdJbnQiKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwg
bXVsdGlwbGllci51bnNhZmVHZXQoKSk7CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7Cisg
ICAgICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9
PSBQYXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGhlYXBSZXN1bHQg
PSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgaW5pdGlhbExlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2
ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFu
IGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICAgICAgaWYgKCFoZWFwUmVzdWx0
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
IGhlYXBSZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRp
cGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihtdWx0aXBsaWVyLnVuc2FmZUdldCgpKSwgc3RhdGlj
X2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisgICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aGVhcFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICBy
ZXR1cm4gaGVhcFJlc3VsdC0+cmlnaHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpE
aWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikKQEAgLTE5MjcsMTggKzE5NTcsMjAgQEAg
Ym9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBB
U1NFUlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50
MzIoKSkgewotICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAg
IGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAg
ICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1
ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJz
KHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVl
LmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQz
MigpKTsKICAgICAKICAgICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAg
IHJldHVybiBjb21wYXJlVG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6
OkVxdWFsOwogfQogCitib29sIEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUp
Cit7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAg
IHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUg
PCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhz
dGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29u
UmVzdWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQog
ewogICAgIC8vIFRoaXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlz
IElFRUUgNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4
YTRlNjA5OWY0Ny4uOTdmYzkxNjUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2Fp
byBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTkwLDEzICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUlu
dE1vZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51
bSBjbGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMg
SlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50
OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlv
bnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBK
U0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNl
TW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0Jp
Z0ludCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywg
dWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNl
cHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFy
c2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpT
VmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAg
IHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRp
eCk7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7
CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwog
ICAgIAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzExMiw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMo
SlNCaWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwogICAg
IHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIyMiwxMCBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBz
dGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBw
YXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0g
ICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5
cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQg
cmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25l
ZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgs
IEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFy
c2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRp
YyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJh
ZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjU4LDkgQEAgcHJpdmF0ZToK
ICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwog
fTsKIAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpT
QmlnSW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUu
YXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFw
QmlnSW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5k
ZXggNTQ4MDEwZWIxYzAuLjVjNWEzMmFjZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRl
ICJCb29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCkBAIC03MSw2ICs3MiwxNCBAQCBkb3VibGUg
SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXND
ZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4i
X3MpOworICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUo
KSkKICAgICAgICAgcmV0dXJuIDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4g
OiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTAs
MTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9i
YWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxP
YmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAqdGhpcyk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVy
cm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMzEsMTQgQEAgSlNWYWx1ZSBK
U1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmpl
Y3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3Qs
IGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOwor
ICAgICAgICAvLyBGSVhNRTogdGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGZpbmQgdG9U
aGlzIGZvciBKU0JpZ0ludCwgYnV0IEkgY2FuJ3QgZXZlbiBmaW5kIHdoZXJlIGl0IGlzIGRlZmlu
ZWQuCisgICAgICAgIHJldHVybiBoZWFwQmlnSW50LT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxP
YmplY3QpKS0+dG9UaGlzKGhlYXBCaWdJbnQsIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAg
IH0KKyNlbmRpZgorCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KQEAgLTEzMCw3ICsxNTEsNyBAQCBKU09i
amVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSBjb25zdAogICAgIGlmIChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmco
KSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwot
ICAgICAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAgICAgICAg
IEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9s
UHJvdG90eXBlKCk7CkBAIC0xNDAsNiArMTYxLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50
aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jv
b2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKKyNlbmRpZgogCiAgICAgQVNTRVJU
KGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAt
Mjg2LDYgKzMxMSw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0
dXJlKAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXNDZWxs
KCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFz
c09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJl
OiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQpKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJpbnQo
IkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwog
ICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNP
YmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBSYXdQ
b2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRlcmZs
eSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAgLTMw
NSw2ICszMzIsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1
cmUoCiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVk
KCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lu
bGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAg
ICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM0Nyw2ICszNzgsMTAgQEAgdm9pZCBKU1Zh
bHVlOjpkdW1wRm9yQmFja3RyYWNlKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91
dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91
dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlz
QmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmln
SW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklO
VkFMSUQiKTsKIH0KQEAgLTM4NCwxOCArNDE5LDI1IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0
cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgcmV0dXJuRW1w
CiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MubnVsbFN0cmluZygpOwogICAgIGlmIChp
c1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0
cmluZygpOwotICAgIGlmIChpc1N5bWJvbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJf
cyk7Ci0gICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0lu
dDMyKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkK
KyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KGludGVnZXIgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2
bS5udW1lcmljU3RyaW5ncy5hZGQoaW50ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQo
KSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAg
ICBpZiAoYXV0byBkaWdpdCA9IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmco
KmRpZ2l0ICsgJzAnKTsKLSAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisjZW5k
aWYKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9
IGFzSGVhcEJpZ0ludCgpOworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJhdGhlciBoYXZl
IHR3byBjYXNlcyBoZXJlOiBvbmUtY2hhcmFjdGVyIHN0cmluZyB2cyBqc05vblRyaXZpYWxTdHJp
bmcgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9
IEpTU3RyaW5nOjpjcmVhdGUodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCku
cmVsZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIHJldHVyblN0cmluZzsK
ICAgICB9CisgICAgaWYgKGlzU3ltYm9sKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9z
KTsKKyAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXND
ZWxsKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xvYmFs
T2JqZWN0LCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCmluZGV4IDU4NmFmM2ZhYjM3Li5mOTU2ZWZmZjQ1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE3Niw2ICsxNzYsMTAgQEAgcHVibGljOgogICAgIGVu
dW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9
OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworICAgIGVudW0gSlNCaWdJbnRU
YWcgeyBKU0JpZ0ludDMyT3JIZWFwIH07CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVudW0gSlNC
aWdJbnQzMlRhZyB7IEpTQmlnSW50MzIgfTsKKyNlbmRpZgogICAgIGVudW0gRW5jb2RlQXNEb3Vi
bGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OwogCiAgICAgSlNWYWx1ZSgpOwpAQCAtMTg1LDYgKzE4
OSwxMSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpT
Q2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgorICAg
IC8vIFJldHVybnMgZWl0aGVyIGEgQmlnSW50MzIgb3IgYSBIZWFwQmlnSW50LgorICAgIEpTVmFs
dWUoSlNCaWdJbnRUYWcsIFZNJiwgaW50NjRfdCk7CiAKICAgICAvLyBOdW1iZXJzCiAgICAgSlNW
YWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxOCw2ICsyMjcsOSBAQCBwdWJs
aWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBj
b25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5IGJlIGNhbGxl
ZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50MzJGb3JBcml0
aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBvdGhlcndpc2Ug
bGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzNyw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlz
QmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsKKyAgICBib29s
IGlzQmlnSW50MzIoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9v
bCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsK
QEAgLTI0NSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0
IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBp
bmhlcml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvT3JOdWxs
KFZNJikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCiAg
ICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBXVEY6OlN0cmluZyYpIGNvbnN0Owog
ICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBudWxs
IHN0cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2NCw5ICsyNzgsMTAgQEAgcHVibGljOgogICAg
IC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJl
ZSBpZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8gYmVlbiBzZXQgaW4gdGhlIENhbGxGcmFtZSBh
bHJlYWR5LgogICAgIGRvdWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAg
IAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiB0b0JpZ0ludE9ySW50
MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9OdW1lcmljKEpTR2xv
YmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkgY29uc3Q7CiAKICAg
ICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0IGNhbiBiZSBkb25lIHdpdGhvdXQgc2lkZSBl
ZmZlY3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29u
c3Q7CkBAIC0zMTUsOCArMzMwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGVxdWFsU2xv
d0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0
aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNs
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3Rh
dGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsRm9yQ2VsbHMo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKTsKICAgICBzdGF0aWMgVHJp
U3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9v
bCBpc0NlbGwoKSBjb25zdDsKQEAgLTQxNCwxMSArNDI4LDIwIEBAIHB1YmxpYzoKICAgICAgKiBU
aGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgICAgICogLSBCaXQg
MSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBv
aW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1t
ZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRlcnMuCi0gICAgICog
LSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZykgVW5kZWZpbmVkIGFuZCBO
dWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQgMyBtYXNrZWQgb3V0IChVbmRlZmluZWRU
YWcpLCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCiAgICAgICogICBzYW1lIHZhbHVlLCBh
bGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCiAgICAgICoK
ICAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0
aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CiAgICAgICogaG9sZXMsIGFuZCBhcyBhIEMr
KyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVl
IG9mIDApLgorICAgICAqCisgICAgICogV2hlbiBVU0UoQklHSU5UMzIpLCB3ZSBoYXZlIGEgc3Bl
Y2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFsbCAoMzItYml0IGF0
IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAqIFRoaXMgcmVw
cmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAg
KiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtz
IHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBw
b2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNldCB0byB0cnVlCisg
ICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFu
a3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUg
Y29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisg
ICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZpbmVkIGJlY2F1c2Ug
Yml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40
OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgd2ls
bCBiZWdpbgpAQCAtNDMzLDYgKzQ1NiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQzMl90IE90aGVyVGFnICAgICAgID0gMHgyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
MzJfdCBCb29sVGFnICAgICAgICA9IDB4NDsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3Qg
VW5kZWZpbmVkVGFnICAgPSAweDg7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50MzJfdCBCaWdJbnQzMlRhZyAgICA9IDB4MTI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQ2NF90IEJpZ0ludDMyTWFzayAgID0gTnVtYmVyVGFnIHwgQmlnSW50MzJUYWc7CisjZW5k
aWYKICAgICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlh
dGVzLgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVy
VGFnIHwgQm9vbFRhZyB8IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1
ZVRydWUgICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0
ZS4uZjY4ZTJjMzBjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5o
IgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI0MCw2ICsyMzksMTMgQEAgaW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCiAgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKIH0KIAor
aW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2YWwp
Cit7CisgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKKyAgICBhdXRvIHB0ciA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZhbCk7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5lIEpTVmFs
dWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxldGVk
VmFsdWVUYWcpOwpAQCAtMzI5LDYgKzMzNSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNW
YWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
Pih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1
ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7
Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywg
ZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQsNiArNDc2
LDE5IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5hc0ludDY0
ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcs
IFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZh
bHVlIDw9IElOVF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikgeworICAgICAgICB1LmFzSW50NjQg
PSAodmFsdWUgPDwgMTYpIHwgQmlnSW50MzJUYWc7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKworICAgIEpTQ2VsbCogcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVl
KTsKKyAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKK30K
KwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewogICAg
IC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5k
ZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KQEAgLTUyMiw4ICs1NDcsMjIgQEAgQUxX
QVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUu
cHRyOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQo
KSBjb25zdAoreworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTQmlnSW50Kj4odS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
IAorI2lmIFVTRShCSUdJTlQzMikKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJU
YWcsIGludDMyX3QgdmFsdWUpCit7CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZv
ciBuZWdhdGl2ZSBudW1iZXJzLCBvdGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAg
ICB1LmFzSW50NjQgPSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVt
YmVyVGFnKSB8IEJpZ0ludDMyVGFnOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5s
aW5lIGludDY0X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBpZiAo
bnVtYmVyICE9IG51bWJlcikKQEAgLTYxMCw5ICs2NDksMzEgQEAgaW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNTdHJpbmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAg
IHJldHVybiBpc0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29s
IEpTVmFsdWU6OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNC
aWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5hc0lu
dDY0ICYgQmlnSW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBKU1Zh
bHVlOjpiaWdJbnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOworfQor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2wo
KSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsK
QEAgLTYyMCw3ICs2ODEsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0
CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJv
bCgpIHx8IGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXND
ZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlz
SGVhcEJpZ0ludCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigp
IGNvbnN0CkBAIC03NjAsOCArODIxLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1p
dGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAg
ICAgIHZhbHVlID0gKnRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NF
UlQoaXNVbmRlZmluZWQoKSk7Ci0gICAgbnVtYmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICBudW1iZXIgPSBQTmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQu
Il9zKTsKKyAgICBudW1iZXIgPSAwLjA7CiAgICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTc3NSw0NCArODQ1LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFs
dWU6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0
dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBW
YXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0
b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAo
aXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgp
KQotICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAg
ICAgcmV0dXJuIGFzQmlnSW50KCp0aGlzKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91Ymxl
KCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0g
Z2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAw
KTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0lu
dChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKworICAg
IGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAg
ICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051
bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwot
ICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisK
KyAgICByZXR1cm4ganNOdW1iZXIodmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIFZhcmlhbnQ8
SlNCaWdJbnQqLCBpbnQzMl90PiBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0
b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAg
ICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIGlmIChpc0lu
dDMyKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIGlmIChpc0Rv
dWJsZSgpICYmIGNhbkJlSW50MzIoYXNEb3VibGUoKSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAg
cmV0dXJuIGFzQmlnSW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KGFzRG91YmxlKCkpKTsKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSBwcmltVmFsdWUgPSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZl
ck51bWJlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICBpZiAocHJpbVZhbHVl
LmlzSW50MzIoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1W
YWx1ZTsKKwogICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1
ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisgICAgcmV0dXJuIGpzTnVt
YmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTAzMiwzNyArMTEwMywxNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGRvIHsKLSAg
ICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICAgICAgYm9vbCBzMSA9
IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwotICAgICAg
ICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFz
U3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyh2MikpKTsKLQotICAgICAg
ICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewotICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5n
ID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBK
U0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7Ci0gICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAo
IW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CisgICAgICAg
ICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3ZSBoYXZlIGEgbnVtYmVyIGl0IGlzIHYyIG1h
a2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNpbXBsZXIuCisgICAgICAgICAgICBzdGQ6OnN3
YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzMSAmJiB2Mi5pc0JpZ0ludCgp
KSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnZhbHVlKGds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChn
bG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYxID0gSlNWYWx1ZShuKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgZGVhbHMgd2l0
aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMsIGFuZCBpcyBhIHNob3J0Y3V0IGZvciBhIGZl
dyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBoYXMgdG8gY29tZSBoZXJlIGFuZCBub3QgYmVm
b3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRoYXQgTmFOID09IE5hTgorICAgICAgICBpZiAo
djEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAodjEuaXNV
bmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCkBAIC0xMDgwLDcgKzExMzEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1
YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAg
ICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNPYmplY3QoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNseQogICAg
ICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICB2
MSA9IHAxOwpAQCAtMTEwMiw1NiArMTE1Myw4NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1
ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwog
ICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAoc3ltMSB8fCBz
eW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAgICAgICAgIHJl
dHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgczEgPSB2
MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKKyAgICAgICAg
aWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJp
bmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgICAgIC8v
IFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRoZSBuZXh0IGNhc2UsIHNvIGxvc2luZyB0aGUg
aW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBudW1iZXIgaXMgZmluZQorICAgICAgICB9CiAg
ICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAgICAgICAgZG91YmxlIGQxID0gdjEudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVl
ZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5rcyB0byB0aGUgc3dhcCBhYm92ZSkKKyAgICAg
ICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHYyU3Ry
aW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2MiA9
IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKKyAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRo
ZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBCaWdJbnRzICh3aGljaCBpcyBvbmx5IG1pc3Np
bmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2UsIGhlbmNlIHRoZSBjaGVjayBhYm92ZSkKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHYxLmlzTnVtYmVyKCkg
fHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAgICAgICAg
aWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRv
dWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIg
Y29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIG9uZSBtb3JlIHN3
YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25seSB2MiBpcyBhbGxvd2VkIHRvIGJlIGEgbnVt
YmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsK
ICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewotICAgICAgICAgICAgaWYgKHYx
LmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2
MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwor
ICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFy
aXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQo
KSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMo
YXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlz
QmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2
MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2
MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9O
dW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKHYxLmlzQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigpOworICAgICAgICAgICAgaWYg
KHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYyLmFzRG91YmxlKCk7CisgICAgICAgICAgICBz
dGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwor
ICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2MS5h
c0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYx
LmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVtYmVyKHYy
KTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwogfQogCiAvLyBFQ01BIDExLjkuMwotQUxXQVlT
X0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK0FMV0FZU19JTkxJ
TkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpCiB7Ci0gICAgQVNTRVJUKHYxLmlzQ2Vs
bCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAm
JiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICBpZiAodjEtPmlzU3RyaW5nKCkgJiYgdjIt
PmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9i
amVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0lu
dCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmln
SW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi0+aXNIZWFwQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHN0YXRpY19jYXN0PEpTQmlnSW50
Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYyKSk7CiAgICAgcmV0dXJuIHYxID09IHYy
OwogfQogCkBAIC0xMTYzLDEwICsxMjQyLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OnN0cmlj
dEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHYx
LmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwg
IXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50
MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMy
QXNJbnQzMigpKTsKKyNlbmRpZgogCi0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxp
bmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0Nl
bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2
MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOworCisgICAgcmV0dXJuIHYxID09IHYyOwogfQogCiBp
bmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0CkBAIC0x
MTg0LDE1ICsxMjcwLDIzIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1
YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5p
c051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9PSB2Mi5h
c051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAg
ICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5hc0NlbGwo
KS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAgICBjb25z
dCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7
Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlH
ZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdU
Rjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
IHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJ
bnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkK
KyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMy
KHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYg
djIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwq
IHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAg
IGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUlt
cGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQorICAgICAgICAg
ICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRl
KFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxzKHYxLmFz
SGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAKICAgICByZXR1
cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMzAwLDEwIEBAIGlubGluZSBUcmlT
dGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGlzTm90
WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRl
OyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXND
ZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmln
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKSA/IFRydWVUcmlT
dGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCmluZGV4IDI0ZWQ2NTIzMzc5Li45MGM1YTdmYzEyNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgQ29uc3RydWN0
VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwg
Y2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKQorICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgaWRl
bnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxs
LT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSlNDZWxs
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+
aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9s
KCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGlkZW50aWZpZXIp
LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNDZWxs
Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRo
aXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAgIGlmIChp
c1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhp
cyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7Ci0gICAgaWYgKGlz
QmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBw
cmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0
aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKIH0KQEAgLTE2
OSw3ICsxNjksNyBAQCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLCBKUwogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2Jh
bE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVy
KGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAg
aWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNC
aWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPmdl
dFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogfQpAQCAtMTgw
LDcgKzE4MCw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmlu
Zyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIGlmIChpc1N5bWJvbCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvTnVtYmVy
KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0lu
dCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNP
YmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTE5MCw3ICsxOTAs
NyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwogICAgIGlmIChpc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNI
ZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+
KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDEw
Njc0OWRlM2NlLi43ZjkyNTA0ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVl
cnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgIGJvb2wgaXNC
aWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wg
aXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCmluZGV4IDJkYWY3YmMwZGRiLi5jMjgzODM2ODM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjA1LDkgKzIw
NSw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBt
X3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNDZWxsOjppc0JpZ0ludCgp
IGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzSGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gSGVhcEJp
Z0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdApAQCAt
MzQxLDcgKzM0MSw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKTsK
LSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKTsKICAg
ICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmplY3QpKS0+bWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAtMzUwLDcgKzM1MCw3IEBAIGlubGluZSBUcmlT
dGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9C
b29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFs
c2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDIyYzAx
MjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29s
ZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBh
c0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZvciBOYU4KICAg
ICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAg
ICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCiAgICAgcmV0dXJuIGlzVHJ1
ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBmYWxzZS4K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggYTEzMzdj
NmE0ZWYuLjBkYzViNzRjMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNFKFN0cmlu
Z1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkKKyAgICBD
QVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoU3RydWN0dXJlUmFyZURhdGFUeXBlKQogICAg
IENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSkKICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDBmODY4YTZhZTA3
Li5kMTQ2NDMzZDQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAg
LTI2LDggKzI2LDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBUaGUgQ2VsbFR5
cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBKU0NlbGwuCiAg
ICAgQ2VsbFR5cGUsCiAgICAgU3RyaW5nVHlwZSwKLSAgICBCaWdJbnRUeXBlLAotICAgIExhc3RN
YXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEJpZ0ludFR5cGUsCisgICAgSGVhcEJpZ0ludFR5cGUs
CisgICAgTGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gSGVhcEJpZ0ludFR5cGUsCiAgICAg
U3ltYm9sVHlwZSwKIAogICAgIFN0cnVjdHVyZVJhcmVEYXRhVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBm
bGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBm
bGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNT
RVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQog
Ci0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1f
ZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApp
bmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBA
IC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJhZjA3Li41M2VkMTI0ZTVlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTEgKzM2LDYgQEAgYm9v
bCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9i
YWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQot
ewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEs
IHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4
Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03Mywy
MSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhw
MikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9u
LiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVm
dE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJl
c3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdl
dCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9Owor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9i
amVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAog
SlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdikKQEAgLTEyOCw3ICsxMjUsNyBAQCBib29sIGpzSXNPYmplY3RU
eXBlT3JOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAg
ICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5
cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8
fCB0eXBlID09IEJpZ0ludFR5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBl
ID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2Jq
ZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVj
dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJi
ZTIzYzA3MjUuLjRiYTU5OTVmZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
Mi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIK
ICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0j
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIzOSw2ICsy
MzgsMzUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmUKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIu
cmVsZWFzZSgpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0
IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiB2MSwgSlNWYWx1ZSBwcmltVmFsdWUpCit7CisgICAgQVNTRVJUKHByaW1W
YWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgpKTsK
KworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsK
KyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChn
bG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdDo6VW5kZWZpbmVkKTsKKyAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOworCisgICAgICAg
IGlmIChiaWdJbnRWYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6Y29tcGFyZSh2MSwgYmlnSW50VmFsdWUuYXNIZWFwQmlnSW50KCkpOworCisgICAgICAg
IEFTU0VSVChiaWdJbnRWYWx1ZS5pc0JpZ0ludDMyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgLy8gRklYTUU6IHVzZSBzb21ldGhpbmcgbGVzcyBoYWNreSwgZS5nLiBzb21lIGtpbmQg
b2YgSlNCaWdJbnQ6OmNvbXBhcmVUb0ludDMyCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29t
cGFyZVRvRG91YmxlKHYxLCBzdGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMy
QXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBw
cmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1
cm4gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdB
WVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdCBjb21wYXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNv
bk1vZGUpCiB7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZTo6TGVzc1RoYW4pCkBAIC0yNTUsNTEgKzI4Myw1MCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
YmlnSW50Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBK
U1ZhbAogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAm
JiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2Rl
KTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IHYyOwotICAgICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAg
ICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9i
YWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAg
aWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmln
SW50KHYxKSwgYmlnSW50VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHBy
aW1WYWx1ZSkpLCBjb21wYXJpc29uTW9kZSk7CiAKLSAgICAgICAgZG91YmxlIG51bWJlclZhbHVl
ID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1
bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MSksIG51bWJlclZhbHVlKSwg
Y29tcGFyaXNvbk1vZGUpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNCaWdJbnQz
MigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0g
SlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAgICAgICAgICAgIHJldHVybiB2
MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBBU1NF
UlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9y
RXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPD0gdjIuYmlnSW50
MzJBc0ludDMyKCk7CiAgICAgfQotICAgIAotICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0g
ICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRW
YWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHBy
aW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworI2VuZGlmCisKKyAgICBKU0JpZ0ludCog
djFIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICBKU0JpZ0ludCogdjJIZWFwQmlnSW50ID0gbnVs
bHB0cjsKKyAgICAvLyBGSVhNRTogaGF2ZSBzb21lIGZhc3QtaXNoIHBhdGggZm9yIGEgY29tcGFy
aXNvbiBiZXR3ZWVuIGEgc21hbGwgYW5kIGEgbGFyZ2UgYmlnLWludAorICAgIGlmICh2MS5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFwQmlnSW50KCk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAg
djFIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQz
MigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2Mkhl
YXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxz
ZSBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAo
djFIZWFwQmlnSW50ICYmIHYySGVhcEJpZ0ludCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBh
cmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUodjFIZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQpLCBj
b21wYXJpc29uTW9kZSk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50KSB7CisgICAgICAgIGF1dG8g
Y29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCwgdjFIZWFwQmlnSW50LCB2Mik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6
Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOworICAg
ICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJp
c29uTW9kZSk7CiAgICAgfQotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAg
ICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJ
bnQocHJpbVZhbHVlKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAg
IGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAorICAgIGF1dG8gY29tcGFy
aXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
djJIZWFwQmlnSW50LCB2MSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhlIHYy
Ci0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCA9IEpTQmln
SW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBudW1iZXJWYWx1ZSk7CiAgICAgaWYg
KGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCiAg
ICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmln
SW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8fCBjb21wYXJpc29uUmVzdWx0ID09
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKKworCiB9CiAKIEFMV0FZU19JTkxJ
TkUgYm9vbCB0b1ByaW1pdGl2ZU51bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2LCBKU1ZhbHVlJiBwLCBkb3VibGUmIG4pCkBAIC0zNTcsNyArMzg0LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAg
ICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5p
c0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpD
b21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3LDcgKzQzNCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlm
ICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmln
SW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBh
cmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzksMzQ3IEBAIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9i
amVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5
cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFy
eU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIs
IEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRv
dWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdl
KQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHROdW1lcmlj
ID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0
TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1l
cmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVy
aWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVm
dEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpT
QmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFs
T2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAg
ICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0Jp
Z0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1l
cmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1l
cmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQz
MigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3Qs
IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAg
fSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1l
cmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9
CisjZWxzZQorICAgICh2b2lkKSBiaWdJbnQzMk9wOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hl
YXBCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVy
aWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlm
CisKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKK30KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3Vi
bGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAg
fTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJf
dCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdo
dDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6
SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBs
ZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlP
cChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnN1YiwgZG91YmxlT3AsIGJpZ0ludDMy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24u
Il9zKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVP
cCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICBy
ZXR1cm4gbGVmdCAqIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0
OworICAgICAgICByZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZs
b3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisg
ICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFy
aXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRpcGx5
LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAgICBh
dXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1Zh
bHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICghcmlnaHQpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0Jp
Z0ludDMyLCBsZWZ0IC8gcmlnaHQpOworI2Vsc2UKKyAgICAgICAgKHZvaWQpIGxlZnQ7CisgICAg
ICAgICh2b2lkKSByaWdodDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQor
CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0g
W10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVy
biBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAo
aW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21l
dGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9
OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2Miwg
SlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQs
IGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQ
b3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMy
X3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBp
bnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkg
bGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRv
IGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxP
YmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRp
b24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5p
c051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1i
ZXIoKSArIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5p
c0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8v
IEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBi
ZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4g
SU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3
VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0
aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJU
KG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBC
aWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgVmFy
aWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgLSAxKTsKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAg
ICAgIGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJp
Yy5iaWdJbnQzMkFzSW50MzIoKSkgLSAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2lu
ZyBuZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVs
cGVyIGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdWYWx1ZSA8IElOVF9NSU4pCisgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3
VmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hl
YXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVj
KGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFu
ZE51bWVyaWMgPSB2LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpOworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBq
c051bWJlcih+b3BlcmFuZE51bWVyaWMuYXNJbnQzMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xv
YmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgc2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MiwgYm9vbCBpc0xlZnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1l
cmljID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYg
cmlnaHROdW1lcmljLmlzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxl
ZnROdW1lcmljLmFzSW50MzIoKTsKKyAgICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHRO
dW1lcmljLmFzSW50MzIoKSAmIDMxOworICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/
IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQzMikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOwor
ICAgICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNC
aWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmln
SW50MzJBc0ludDMyKCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJp
Yy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAg
ICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdo
dEludDMyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBs
aWNhdGlvbi4iX3MpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6
bWluIGlzIGEgYml0IGhhY2t5LCBidXQgcmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5k
ZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEgc2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMg
Z3JlYXRlciBvciBlcXVhbCB0byB0aGUgYml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisg
ICAgICAgIGlmICghaXNMZWZ0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6
SlNCaWdJbnQzMiwgbGVmdEludDMyID4+IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAg
ICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBk
ZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhN
RTogaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0
byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQgZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dl
ZC4KKyAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIGxlZnRJbnQzMik7CisgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQp
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hp
ZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQo
Z2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQor
I2VuZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludCgpKSkgeworICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRp
b24uIiA6ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJp
Z2h0IHNoaWZ0IG9wZXJhdGlvbi4iOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQz
MigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhl
YXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisjZWxzZQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnRO
dW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBy
aWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZW5kaWYKKworICAgIGlmIChpc0xlZnQpCisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVj
dCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworfQorCitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBib29sIGlzTGVmdCA9IHRydWU7CisgICAgcmV0dXJuIHNo
aWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOworfQogCi0gICAgZG91YmxlIGxlZnRW
YWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgcmlnaHRW
YWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgcmV0dXJuIGpzTnVt
YmVyKGxlZnRWYWx1ZSAqIHJpZ2h0VmFsdWUpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNo
aWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
Cit7CisgICAgYm9vbCBpc0xlZnQgPSBmYWxzZTsKKyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIsIGlzTGVmdCk7CiB9CiAKLWlubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxz
KCkKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMy
T3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50
T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlKQogewotICAgIHJldHVybiBBU1NFUlRfRU5BQkxFRCB8fCBPcHRpb25z
OjpzY3JpYmJsZUZyZWVDZWxscygpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxl
ZnROdW1lcmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJp
Yy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihpbnQzMk9wKGxlZnROdW1lcmlj
LmFzSW50MzIoKSwgcmlnaHROdW1lcmljLmFzSW50MzIoKSkpOworCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmln
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgaW50
MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMy
QXNJbnQzMigpKSk7CisgICAgLy8gRklYTUU6IGFkZCBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIC8g
SGVhcEJpZ0ludCwgYW5kIGZvciBIZWFwQmlnSW50IC8gQmlnSW50MzIKKyAgICAvLyBJbiBtYW55
IGNhc2VzIHRoZXNlIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgdGhhbiBoZWFwLWFsbG9j
YXRpbmcgdGhlIHNtYWxsIGJpZy1pbnQgYW5kIGdvaW5nIHRocm91Z2ggdGhlIGdlbmVyaWMgcGF0
aC4KKyAgICAvLyBCdXQgaXQgaXMgcXVpdGUgdHJpY2t5LCBub3QgbGVhc3QgYmVjYXVzZSBIZWFw
QmlnSW50IHVzZSBhIHNpZ24gYml0IHdoZXJlYXMgQmlnSW50MzIgdXNlIDItY29tcGxlbWVudCBy
ZXByZXNlbnRhdGlvbi4KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQo
KSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50
MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50
MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRI
ZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFz
SGVhcEJpZ0ludCgpOworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0g
cmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0
SGVhcEJpZ0ludCkpOwogfQogCi0jZGVmaW5lIFNDUklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDB4YmFkYmVlZjApCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlQW5kKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7Cisg
ICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50
MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJ
WE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8g
dGhlICJhbmQiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3Rs
eSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVj
dCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOwor
fQogCi1pbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNCaXR3aXNlT3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dP
UkQpKTsKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKKyAgICB9OworCisg
ICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0
aGVtLCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQg
ZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9i
YWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VPciwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJf
cyk7CiB9CiAKLWlubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSBz
aXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgewotICAgICAgICAvLyBVc2UgYSAx
Ni1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNo
ZWNrLgotICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNW
YWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAg
fQorICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+
IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OworICAgIH07CisKKyAgICAv
LyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0s
IGRvIHRoZSAieG9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGly
ZWN0bHkgb24gdGhlIEpTVmFsdWUsIGFuZCBqdXN0IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGgg
MHgxMiBhdCB0aGUgZW5kIHRvIHJlc3RvcmUgdGhlIHRhZworICAgIHJldHVybiBiaXR3aXNlQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicg
b3BlcmF0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlW
YWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1
aW50MzJfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmliYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NzdlNjVhNzA0OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlND
ZWxsLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAg
ICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsK
K30KKworI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJl
ZWYwKQorCitpbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdp
c2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmli
YmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQoreworICAgIGZvciAoc2l6ZV90IGkgPSBzaXpl
IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgeworICAgICAgICAvLyBVc2UgYSAxNi1i
eXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNr
LgorICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1
ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKaW5kZXggM2RjMTdiNzMzNTkuLjQwMmRhYTcxNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0zMjEsNyArMzIxLDcg
QEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBTdHJpbmdUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJp
bmdQcm90b3R5cGUoKTsKICAgICAKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBCaWdJbnRUeXBlKQorICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09
IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90
b3R5cGUoKTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5
bWJvbFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggMDAxMTAyMTEzODYuLjk5YWUzY2QzYTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTEzOSw2ICsxMzksMTAgQEAKICNlbmRpZgogI2VuZGlm
IC8qICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQp
ICovCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2RlZmluZSBVU0VfQklHSU5UMzIgMQorI2VuZGlm
CisKIC8qIEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJlIG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMg
b25seSBmb3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwogLyogVXNlIF9fYnVpbHRpbl9mcmFtZV9h
ZGRyZXNzKDEpIHRvIGdldCBDYWxsRnJhbWUqICovCiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392188</attachid>
            <date>2020-03-02 14:00:44 -0800</date>
            <delta_ts>2020-03-02 14:16:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>397677</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CmluZGV4IGFmMjI4M2Y4ZWU0Li43ZjVjYjEwNGUzMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCkBAIC04Myw3ICs4Myw4
IEBAIGZ1bmN0aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAiLCBSaWdodCA9ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRDYXNlc1tyaWdo
dENhc2VJbmRleF0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmVzdWx0ID0gIiArCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1dDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIg
KGNhc2U6ICIgKyBsZWZ0Q2FzZUluZGV4ICsgIiwgIiArIHJpZ2h0Q2FzZUluZGV4ICsgIikiOwog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGxldCBzdHJpY3ROb3RFcXVhbE91
dHB1dCA9IG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXMobGVmdENhc2VzW2xlZnRDYXNlSW5k
ZXhdLCByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSk7CkBAIC05Myw3ICs5NCw4IEBAIGZ1bmN0
aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSaWdo
dCA9ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRl
eF0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmVzdWx0ID0gIiArCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1dDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmljdEVxdWFsT3V0cHV0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgKGNhc2U6ICIg
KyBsZWZ0Q2FzZUluZGV4ICsgIiwgIiArIHJpZ2h0Q2FzZUluZGV4ICsgIikiOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdGwt
c3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwppbmRleCAwNDNhNzYwN2E0Zi4uOGU5NmNmNDQyODkg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5Lmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCkBAIC0z
MCw2ICszMCw2IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKICAgICB2YXIg
cmVzdWx0ID0gZm9vKGFycmF5LCBhcnJheTJbaW5kZXhdKTsKICAgICB2YXIgZXhwZWN0ZWQgPSBp
bmRleCA+PSBhcnJheS5sZW5ndGggPyBudWxsIDogaW5kZXgKICAgICBpZiAocmVzdWx0ICE9PSBl
eHBlY3RlZCkKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQgKyAiIGJ1dCBleHBl
Y3RlZCAiICsgZXhwZWN0ZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21pc3Np
bmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
bWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKaW5kZXggOTY1YTdk
NzNiNzEuLmRkODVhODM4N2ZiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4
Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9t
aXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwpAQCAtMSw2ICsxLDgg
QEAKIGNvbnN0IHMxID0gKC0xKS50b0xvY2FsZVN0cmluZygpLnBhZEVuZCgyKiozMS0xLCAnYWEn
KTsKK2NvbnN0IHMyID0gKC0xKS50b0xvY2FsZVN0cmluZygpLnBhZEVuZCgyKiozMS0xLCAnYWEn
KTsKIHRyeSB7Ci0gICAgczEgPT0gczE7CisgICAgLy8gRm9yY2UgZXZhbHVhdGlvbiBvZiBSb3Bl
CisgICAgczEgPT0gczI7CiB9IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2NGRhMGI2MTU4Li5iMTA3N2RjYWZmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzg3IEBACisyMDIwLTAzLTAyICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxp
bmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMy
IikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gb3B0aW1pemUgdGhlIHBlcmZvcm1hbmNlIG9mIEJpZ0ludHMsIHdo
ZW4gdGhleSBhcmUgc21hbGwgKDMyIGJpdCBvciBsZXNzKS4KKyAgICAgICAgSXQgd29ya3MgYnkg
aW5saW5pbmcgdGhlbSBpbnRvIEpTVmFsdWUgb24gNjQtYml0IHBsYXRmb3JtcywgYXZvaWRpbmcg
dGhlIGFsbG9jYXRpb24gb2YgYSBKU0JpZ0ludC4KKyAgICAgICAgVGhlIGJpdCBwYXR0ZXJuIHdl
IHVzZSBpcyAwMDAwOlhYWFg6WFhYWDowMDEyCisgICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24g
d29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAgICAgLSBJdCBjYW5u
b3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9w
IGJpdHMKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8g
YSBDZWxsLCB0aGFua3MgdG8gYml0IDEgd2hpY2ggaXMgc2V0IHRvIHRydWUKKyAgICAgICAgLSBJ
dCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8gYml0
IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2Vk
IHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCBmb3IgbnVsbC91bmRlZmluZWQgYmVjYXVzZSBiaXQgNCBp
cyBzZXQgdG8gdHJ1ZQorCisgICAgICAgIFRoaXMgZW50aXJlIGNoYW5nZSBpcyBnYXRlZCBieSBV
U0UoQklHSU5UMzIpLCB0byBtYWtlIGl0IGVhc2llciB0byBkaXNhYmxlIGlmIGl0IHR1cm5zIG91
dCB0byBoYXZlIGJ1Z3MuCisgICAgICAgIEl0IHNob3VsZCBhbHNvIG1ha2UgaXQgbXVjaCBlYXNp
ZXIgdG8gdmVyaWZ5IGlmIGEgZ2l2ZW4gYnVnIGNvbWVzIGZyb20gaXQgb3IgZnJvbSBzb21ldGhp
bmcgZWxzZS4KKworICAgICAgICBOb3RlIHRoYXQgaW4gdGhpcyBwYXRjaCB3ZSBjcmVhdGUgc3Vj
aCBzbWFsbCBCaWdJbnRzIHdoZW4gcGFyc2luZyBCaWdJbnQgY29uc3RhbnRzLCBhbmQgbW9zdCBv
cGVyYXRpb25zIChlLmcuIEFkZCBvciBCaXRPcikgcHJvZHVjZSBhIEJpZ0ludDMyIGlmIGJvdGgg
b2YgdGhlaXIgb3BlcmFuZHMgYXJlIEJpZ0ludDMyLAorICAgICAgICBidXQgd2UgZG9uJ3QgcHJv
ZHVjZSBhIEJpZ0ludDMyIGZyb20gZm9yIGV4YW1wbGUgdGhlIHN1YnN0cmFjdGlvbi9kaXZpc2lv
biBvZiB0d28gbGFyZ2UgaGVhcC1hbGxvY2F0ZWQgSlNCaWdJbnRzLCBldmVuIGlmIHRoZSByZXN1
bHQgZml0cyBpbiAzMi1iaXRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgc21hbGwgQmlnSW50cyBj
YW4gbm93IGVpdGhlciBiZSBoZWFwLWFsbG9jYXRlZCBvciBpbmxpbmVkIGluIHRoZSBKU1ZhbHVl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgYSBzaWduaWZpY2FudCByZWZhY3RvciBv
ZiB2YXJpb3VzIHNsb3cgcGF0aHMsIHdoaWNoIGFyZSBub3cgZ3JvdXBlZCB0b2dldGhlciBpbiBP
cGVyYXRpb25zLmgKKyAgICAgICAgQmVjYXVzZSB0aGlzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiBP
cGVyYXRpb25zLmggc2lnbmlmaWNhbnRseSwgSSBzcGxpdCB0aGUgcGFydHMgb2YgT3BlcmF0aW9u
cy5oIHdoaWNoIGFyZSBvbmx5IHVzZWQgYnkgdGhlIEdDIGludG8gU2NyaWJibGUuaCwgdG8gYXZv
aWQgYmxvYXRpbmcgY29tcGlsZSB0aW1lcy4KKworICAgICAgICBJbiB0aGUgREZHIGFuZCBGVEwg
d2Ugbm93IGhhdmUgMyBVc2VLaW5kcyBmb3IgQmlnSW50czogSGVhcEJpZ0ludFVzZSwgQmlnSW50
MzJVc2UgYW5kIEFueUJpZ0ludFVzZS4KKyAgICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgd2hl
biB3ZSBub3cgdGhhdCB3ZSBhcmUgcmVjZWl2aW5nIEJpZ0ludHMsIGJ1dCBzcGVjdWxhdGlvbiBp
bmRpY2F0ZXMgYSBtaXggb2YgaGVhcC1hbGxvY2F0ZWQgYW5kIHNtYWxsIChpbmxpbmVkKSBiaWct
aW50cy4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5LCBhIG5haXZlIGltcGxlbWVudGF0aW9uIG9m
IHRoaXMgcGF0Y2ggc2lnbmlmaWNhbnRseSByZWdyZXNzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIFN0
cmljdEVxIChhbmQgaXRzIHZhcmlhbnRzKSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHRydWUgdGhhdCBh
IGNlbGwgYW5kIGEgbm9uLWNlbGwgY2Fubm90IGJlIGVxdWFsLgorICAgICAgICBCZWZvcmUgdGhp
cyBwYXRjaCwgdGhlIGNvZGUgd2FzIGp1bXBpbmcgdG8gYSBzbG93IHBhdGggaWYgZWl0aGVyOgor
ICAgICAgICAtIGF0IGxlYXN0IG9uZSBvcGVyYW5kIGlzIGEgZG91YmxlCisgICAgICAgIC0gb3Ig
Ym90aCBvcGVyYW5kcyBhcmUgY2VsbHMKKyAgICAgICAgTm93LCBpdCBhbHNvIG5lZWRzIHRvIGp1
bXAgdG8gdGhlIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLgorICAgICAgICBU
byByZWNvdmVyIHRoaXMgcGVyZm9ybWFuY2UgY29zdCwgSSBzaWduaWZpY2FudGx5IHJld3JvdGUg
dGhpcyBjb2RlLCBmcm9tCisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBpZiAoISBsZWZ0IGlzIEludDMyKSB7CisgICAgICAgICAgICBpZiAobGVmdCBpcyBOdW1i
ZXIpCisgICAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAg
aWYgKCEgcmlnaHQgaXMgSW50MzIpIHsKKyAgICAgICAgICAgIGlmIChyaWdodCBpcyBOdW1iZXIp
CisgICAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0
dXJuIGxlZnQgPT0gcmlnaHQKKyAgICAgICAgVG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICBp
ZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aAorICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAg
ICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IEkgYmVsaWV2ZSB0aGlzIHRvIGJlIGZhc3RlciB0aGFuIGp1c3QgcmVwbGFjaW5nIChsZWZ0IGlz
IENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgYnkgYW4gfHwsIGJlY2F1c2UgSSBmb3VuZCBhIGJpdC10
cmljayB0byBjaGVjayAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSB3aGljaCBz
aG91bGQgaGVscCByZWR1Y2UgdGhlIHByZXNzdXJlIG9uIHRoZSBicmFuY2ggcHJlZGljdG9yLgor
ICAgICAgICBFYXJseSBKZXRTdHJlYW0yIHRlc3RzIGFwcGVhciB0byBjb25maXJtIHRoYXQgdGhp
cyBwYXRjaCBpcyByb3VnaGx5IG5ldXRyYWwgd2hpbGUgaXQgd2FzIGEgMC41JSByZWdyZXNzaW9u
IGJlZm9yZSBJIHVzZWQgdGhpcyB0cmljaywgYnV0IHRoZSBudW1iZXJzIGFyZSBzdGlsbCB0b28g
bm9pc3ksIEkgcGxhbiB0byBkbyBtb3JlIG1lYXN1cmVtZW50cyBiZWZvcmUgbGFuZGluZyB0aGlz
IHBhdGNoLgorCisgICAgICAgIEkgZG9uJ3QgeWV0IGhhdmUgcGVyZm9ybWFuY2UgbnVtYmVycyBm
b3IgdGhpcyBwYXRjaCBvbiBhIEJpZ0ludCBiZW5jaG1hcmssIEkgd2lsbCBnZXQgc3VjaCBudW1i
ZXJzIGJlZm9yZSB0cnlpbmcgdG8gbGFuZCBpdCwgYnV0IEknZCBsaWtlIHNvbWUgcmV2aWV3IGlu
IHRoZSBtZWFudGltZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJ
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1p
dFNldEJpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVz
dWx0czo6ZGlkT2JzZXJ2ZU5vbkludDMyKToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRz
OjpkaWRPYnNlcnZlQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRP
YnNlcnZlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2Jz
ZXJ2ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJp
Z0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEhl
YXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9y
bWF0Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBv
cnRWYWx1ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21KU1R5cGUpOgorICAgICAgICAoSlNDOjpsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5
RXF1aXZhbGVudFNwZWN1bGF0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaDoKKyAgICAgICAgKEpTQzo6aXNCaWdJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNIZWFwQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0JpZ0ludFNwZWN1
bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhp
c0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhh
c2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpv
YnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91
bGRTcGVjdWxhdGVIZWFwQmlnSW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlNhZmVUb0V4ZWN1dGVF
ZGdlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3ApOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXR3aXNlT3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TFNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVCaXRSU2hpZnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
U2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1
Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6U3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6On5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6ZWRnZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpub2RlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Omdwcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp1c2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhv
bGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjppc0NlbGwp
OgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkNvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyk6CisgICAgICAg
ICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVE
aXYpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVN
b2QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVQ
b3cpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVC
aXROb3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFs
dWVCaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVCaXRPcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZUJpdFhvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVBcml0aEJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aEJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaXRVUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeVNuaXBwZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5Qml0T3BTbmlwcGV0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym9vbGlmeSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJ1aWxkVHlwZU9mKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SGVhcEJpZ0ludCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjp1bmJveEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjppc05vdEFueUJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmlzSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVB
bnlCaWdJbnQpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOgorICAgICAgICAqIGhlYXAvUHJlY2lz
ZUFsbG9jYXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQ
cmV2aWV3KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xl
YW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OnVuYm94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJveEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0VHlw
ZU9mKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9uZWdhdGUpOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVt
ZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rv
X251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVj
aW1hbElkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp0
b0JpZ0ludCk6CisgICAgICAgIChKU0M6OmNhbGxCaWdJbnRDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9CaWdJbnRPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9CaWdJ
bnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0b1RoaXNCaWdJbnRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmluYyk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkZWMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6ZXF1YWxzVG9JbnQzMik6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOgor
ICAgICAgICAoSlNDOjphc0hlYXBCaWdJbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6ZHVtcEZvckJhY2t0cmFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
U3RyaW5nU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFzSGVhcEJpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
aXNCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmJpZ0ludDMyQXNJbnQz
MiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzUHJpbWl0aXZlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9CaWdJ
bnRPckludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlu
bGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnB1cmVTdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4g
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpn
ZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvTnVtYmVy
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1
cmVUb0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICog
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc0FkZFNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6anNJc09iamVjdFR5cGVPck51bGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOgorICAgICAgICAoSlNDOjpjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZSk6CisgICAg
ICAgIChKU0M6OmJpZ0ludENvbXBhcmUpOgorICAgICAgICAoSlNDOjpqc0xlc3MpOgorICAgICAg
ICAoSlNDOjpqc0xlc3NFcSk6CisgICAgICAgIChKU0M6OmFyaXRobWV0aWNCaW5hcnlPcCk6Cisg
ICAgICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorICAgICAgICAoSlND
Ojpqc0Rpdik6CisgICAgICAgIChKU0M6OmpzUmVtYWluZGVyKToKKyAgICAgICAgKEpTQzo6anNQ
b3cpOgorICAgICAgICAoSlNDOjpqc0luYyk6CisgICAgICAgIChKU0M6OmpzRGVjKToKKyAgICAg
ICAgKEpTQzo6anNCaXR3aXNlTm90KToKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAo
SlNDOjpqc0xTaGlmdCk6CisgICAgICAgIChKU0M6OmpzUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6
Yml0d2lzZUJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNCaXR3aXNlQW5kKToKKyAgICAgICAg
KEpTQzo6anNCaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VYb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvU2NyaWJibGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50T2JqZWN0LmguCisgICAgICAgIChKU0M6OnNjcmliYmxlRnJlZUNlbGxz
KToKKyAgICAgICAgKEpTQzo6aXNTY3JpYmJsZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OnNjcmli
YmxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6CisKIDIwMjAtMDMtMDIgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIERlbGV0ZSBi
eSB2YWwgY2FjaGluZyBkb2VzIG5vdCBrZWVwIHRoZSBzdWJzY3JpcHQgYWxpdmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI3NDU2NTE3ZjguLmJhNjUxYjBlNDA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY2LDYgKzg2Niw3IEBACiAJCTJBRDg5MzJCMTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBI
ZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJG
MzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNv
dXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEz
NENFIC8qIFNjcmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVD
NzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTMz
QTkyMEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZE
MDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAv
KiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87
IH07CkBAIC0zNTA3LDYgKzM1MDgsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1
Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFB
RDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMw
QTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzM3NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4
cHJlc3Npb25UcmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhw
cmVzc2lvblRyZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NEEy
MjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsg
cGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU0Myw2ICs3NTQ1LDcgQEAKIAkJCQkw
RkUwNTAyMDFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywKIAkJ
CQkwRkUwNTAyMTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJCTBG
RTA1MDIyMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTExQjhB
MjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYw
MEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5
MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQyMzg5
QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTA3LDYgKzg5MTAsNyBAQAogCQkJ
CTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0
aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAv
KiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAx
IC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMy
MDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENC
NUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXgg
YzEwMDI0MDRlZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1tZWRh
aXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMg
YmVlbiBlbWl0dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVuZGVk
IHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAgICAg
IC8vIFRoZSB3cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRlcnMg
YWJvdmUgd2lsbCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlhdGU4
KGludCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2Zp
bGUuY3BwCmluZGV4IGZlYTY2NzQ1YjYyLi5mMmMwNTg0ZDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVs
ZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3Vs
dChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBt
b2RlKQordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQo
Q0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdS
ZWdpc3RlcnNNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYg
IXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKKyAg
ICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSAmJiAhc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludDMy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsK
QEAgLTQ4LDkgKzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRP
YnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3REb3Vi
bGUubGluaygmaml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm90QmlnSW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJl
Z3MsIHRlbXBHUFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBwZW5k
KGppdC5qdW1wKCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAgICh2
b2lkKSB0ZW1wR1BSOworI2VuZGlmCisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RDZWxsKHJlZ3MsIG1vZGUpKTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGppdCk7
CisgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdzLnBh
eWxvYWRHUFIoKSkpOworICAgIGVtaXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5hcHBl
bmQoaml0Lmp1bXAoKSk7CiAKICAgICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwxOSAr
OTcsMzkgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KLWJvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRC
aWdJbnQoKSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1p
dFNldEJpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0ZmllbGRU
eXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRz
ICYgbWFzaykgIT0gbWFzazsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OnNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRmaWVs
ZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlwZSBt
YXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYg
bWFzaykgIT0gbWFzazsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMm
IGppdCkgY29uc3QKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRIZWFw
QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0
QmlnSW50KCkpCi0gICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1
bHRzOjpCaWdJbnQpOworICAgIGlmIChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAgICAg
ICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7
CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+
Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0NhbGxI
ZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigpKQor
ICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50
MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVs
cGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgsMTIg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmls
ZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1Mk92
ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQucHJp
bnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVI
ZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFwQmln
SW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmlu
dChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwyNCBA
QCBwdWJsaWM6CiAgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAgIElu
dDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8
IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBCaWdJ
bnQgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYsCiAg
ICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAgICBP
YnNlcnZlZFJlc3VsdHMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1bHRz
KHVpbnQ4X3QgYml0cykKICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAgIGJv
b2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3Vi
bGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CiAg
ICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9vbCBk
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3VibGU7
IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYgTm9u
TnVtZXJpYzsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IChIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0lu
dCgpIHsgcmV0dXJuIG1fYml0cyAmIEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVC
aWdJbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRPYnNl
cnZlSW50MzJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0KICAg
ICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50NTJP
dmVyZmxvdzsgfQogCkBAIC0xMDksMTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmlj
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVyaWMo
KTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBC
aWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVhcEJp
Z0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVybiBv
YnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlSW50MzJPdmVyZmxvdygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93KCk7IH0KIAogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2Jz
ZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJvRG91
YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2JzZXJ2
ZWRSZXN1bHRzOjpOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7
IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVk
SGVhcEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0KKyAg
ICB2b2lkIHNldE9ic2VydmVkQmlnSW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJp
Z0ludDMyKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQo
T2JzZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJ
bnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93KTsg
fQogCkBAIC0xMjcsOCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8PSBP
YnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUyT3Zl
cmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJlc3Vs
dHM6Ok5lZ1plcm9Eb3VibGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVl
LmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRz
OjpIZWFwQmlnSW50OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1f
Yml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwyMiBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwg
SW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBz
ZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51
bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVl
UmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQgZW1p
dE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BS
LCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRzIChJ
bnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJv
RG91YmxlKS4KICAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2b2lk
IGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5vbk51
bWVyaWMKICAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNldHMg
QmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNl
dEhlYXBCaWdJbnQoKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdDsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJz
JikgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxI
ZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAt
MTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90Owog
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRU
eXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0aWNf
YXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVk
IDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0
aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNp
emVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUg
b2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFVu
YXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNf
Y2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1
YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0
aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRz
TmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAx
KSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0
aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBh
dGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxk
IG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQg
JiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNl
Y3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lhbEZh
c3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlBcml0
aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBiaXRz
IHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEg
aGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjLi40OGI3ODcwZWNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMjcsNiArMzI3LDcg
QEAgb3BfZ3JvdXAgOlVuYXJ5T3AsCiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwKICAg
ICAgICAgOmlzX2Jvb2xlYW4sCiAgICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19iaWdf
aW50LAogICAgICAgICA6aXNfb2JqZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGwsCiAg
ICAgICAgIDppc19mdW5jdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4
IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXgg
NjdmMmNlYzBhODAuLmVlYTVmYTRjM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lz
dGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJhbmQp
CiAgICAgVVNFUyhPcElzQm9vbGVhbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIsIG9w
ZXJhbmQpCisgICAgVVNFUyhPcElzQmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVj
dCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAgVVNF
UyhPcElzQ2VsbFdpdGhUeXBlLCBvcGVyYW5kKQpAQCAtNDIzLDkgKzQyNCwxMCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3Qp
CiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRzdCkK
LSAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRlZmlu
ZWRPck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhPcElz
TnVtYmVyLCBkc3QpCisgICAgREVGUyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElzT2Jq
ZWN0LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElz
Q2VsbFdpdGhUeXBlLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDkxZWVmYTAwOThlLi4zYzBlY2ZjZjJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVE1hdGhJQy5oIgotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1ODhk
YmZmNi4uMjA3NWRhNzA1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EYXRhRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rh
dGFGb3JtYXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NCwxMiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWludDhf
dCB7CiAgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0gNiwK
ICAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAgICBE
YXRhRm9ybWF0QmlnSW50MzIgPSA4LAorICAgIERhdGFGb3JtYXRKUyA9IDE2LAogICAgIERhdGFG
b3JtYXRKU0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLAogICAgIERhdGFG
b3JtYXRKU0RvdWJsZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsCiAgICAgRGF0
YUZvcm1hdEpTQ2VsbCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLAogICAgIERhdGFG
b3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwKLSAgICAK
KyAgICBEYXRhRm9ybWF0SlNCaWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCaWdJ
bnQzMiwKKwogICAgIC8vIE1hcmtlciBkZWxpbWluYXRpbmcgb3JkaW5hcnkgZGF0YSBmb3JtYXRz
IGFuZCBPU1Itb25seSBkYXRhIGZvcm1hdHMuCiAgICAgRGF0YUZvcm1hdE9TUk1hcmtlciA9IDMy
LCAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODliOS4u
ODMwZjZkNjc1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0
Niw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAordm9pZCBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdz
IHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICBjYXNlIE5vbmU6CkBAIC02NywxMiArNjcsMTIgQEAg
dm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVW5hcnlB
cml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2Jz
ZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUu
dW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwg
bW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIEJpbmFyeUFyaXRoUHJv
ZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJl
c3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUuYmluYXJ5
QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
CmluZGV4IGU4YjY1ZWFkNDZlLi41MzM5MmM2MjUxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCkBAIC04Myw3ICs4Myw4IEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KIAotICAgIHZvaWQgZW1p
dFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKKyAgICAvLyBU
aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIGlzIG9ubHkgbmVlZGVkIG9uIDY0LWJpdHMgYnVpbGRzIChm
b3IgdGVzdGluZyBCaWdJbnQzMikuCisgICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxw
ZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2
ZVRhZ1JlZ2lzdGVycykgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRWYWx1ZShKU1ZhbHVlKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDEwNTNiYTUyYjU0Li43NzFjNzliODU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM5LDEx
ICsyMzksNiBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHN0ck91dC5wcmludCgiU3ltYm9sIik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0KLSAgICAgICAgaWYg
KHZhbHVlICYgU3BlY0JpZ0ludCkKLSAgICAgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAog
ICAgIGlmICh2YWx1ZSA9PSBTcGVjSW50MzJPbmx5KQpAQCAtMjc4LDcgKzI3MywyMyBAQCB2b2lk
IGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9Ci0g
ICAgCisKKyAgICBpZiAoKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkKKyAgICAg
ICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSB7
CisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQzMikKKyAgICAgICAgICAgIHN0ck91dC5w
cmludCgiQmlnSW50MzIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKKworICAgICAgICBpZiAodmFsdWUgJiBTcGVjSGVhcEJpZ0ludCkKKyAgICAgICAgICAgIHN0
ck91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1Rv
cCA9IGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUlt
cHVyZU5hTikKICAgICAgICAgc3RyT3V0LnByaW50KCJEb3VibGVJbXB1cmVOYU4iKTsKICAgICAK
QEAgLTQzMSw3ICs0NDIsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0lu
Zm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OwogICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNCaWdJbnQ6OmluZm8oKSkKLSAgICAgICAg
cmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKIAogICAg
IGlmIChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4g
U3BlY0ZpbmFsT2JqZWN0OwpAQCAtNDk5LDggKzUxMCw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJu
IFNwZWNTdHJpbmc7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3lt
Ym9sVHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgaWYgKHN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJ
bnQ7CisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5
cGUpCisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBEZXJpdmVkQXJyYXlUeXBlKQogICAgICAgICByZXR1cm4gU3Bl
Y0Rlcml2ZWRBcnJheTsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpOwpAQCAtNTM2LDYgKzU0Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3Bl
Y0FueUludEFzRG91YmxlOwogICAgICAgICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwogICAg
IH0KKyAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gU3BlY0JpZ0lu
dDMyOwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKQEAg
LTU5NSw4ICs2MDgsOCBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9t
SlNUeXBlKEpTVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBjYXNl
IFN5bWJvbFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50
VHlwZToKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50VHlw
ZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGNhc2UgQXJyYXlUeXBlOgog
ICAgICAgICByZXR1cm4gU3BlY0FycmF5OwogICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAg
LTYzMiw2ICs2NDUsMTAgQEAgU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3Rs
eUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHkKIAogICAgIGlmICh0eXBl
ICYgU3BlY1N0cmluZykKICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5nOworCisgICAgaWYgKHR5
cGUgJiBTcGVjQmlnSW50KQorICAgICAgICB0eXBlIHw9IFNwZWNCaWdJbnQ7CisKICAgICByZXR1
cm4gdHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZC4uZGYwYjkxYTczNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsMTIgKzk4
LDE0IEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7
IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBh
IGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCi1zdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgorc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcEJpZ0ludCAgICAgICAgICAgICAgICAgICAg
ICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50IHRoYXQgaXMgYWxs
b2NhdGVkIG9uIHRoZSBoZWFwCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNC
aWdJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBzbWFsbCBCaWdJbnQgdGhhdCBpcyBpbmxpbmUgdGhlIEpTVmFsdWUKK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNCaWdJbnQzMiB8IFNwZWNIZWFwQmlnSW50Oworc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0g
MXVsbCA8PCA0MzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KIHN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01p
c2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCiBzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVj
VHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50
cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3Qg
fCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3Bl
Y1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNw
ZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wg
fCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxs
Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlz
YzsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25s
eSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBT
cGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBT
cGVjQmlnSW50MzIgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJl
IGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJs
ZUltcHVyZU5hTi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2Rl
VG9wICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBT
cGVjRG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGlu
IGEgYnl0ZWNvZGUgbG9jYWwuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dWxsVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQnl0ZWNvZGVUb3AgfCBTcGVj
RnVsbE51bWJlcjsgLy8gSXQgY2FuIGJlIGFueXRoaW5nIHRoYXQgYnl0ZWNvZGUgY291bGQgc2Vl
IHBsdXMgZXhvdGljIGVuY29kaW5ncyBvZiBudW1iZXJzLgogCkBAIC0xODUsOSArMTg3LDE5IEBA
IGlubGluZSBib29sIGlzU3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAg
ICAgcmV0dXJuIHZhbHVlID09IFNwZWNTeW1ib2w7CiB9CiAKK2lubGluZSBib29sIGlzQmlnSW50
MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0JpZ0ludDMyOworfQorCitpbmxpbmUgYm9vbCBpc0hlYXBCaWdJbnRTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0hlYXBC
aWdJbnQ7Cit9CisKIGlubGluZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQ7CisgICAgcmV0dXJu
ICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBi
b29sIGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggZmEzYWJiZDExYWQuLmRkNDI2MDM1MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2Fy
aWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSwgUy5MLgogICoKQEAgLTE2NjgsNyArMTY2OCwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RXF1YWxpdHlPcEltcGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBS
ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYm
IHZhbHVlID09ICJiaWdpbnQiKSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQodGhpcywgZHN0LCBv
cC5tX3ZhbHVlKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1p
dCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEJpZ0ludFR5cGUpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUg
PT0gIm9iamVjdCIpIHsKQEAgLTI4NzYsNyArMjg4MCw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVp
bnQ4CiAgICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlm
aWVyLmltcGwoKSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWdu
ID8gSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2ln
bjo6VW5zaWduZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50Ojpw
YXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJ
bnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAg
ICAgIEpTVmFsdWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0o
KSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6
VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IDI5ODkzNzQwYTg1Li4wYTAwM2I4ZjZmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
MTA4OSw3ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVy
TWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVy
U3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRp
ZmllclJlcEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1h
cDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJp
Z0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2lu
ZyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFz
aE1hcDx1aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8
dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNi4uYWQyN2I4MzA0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29u
c3RydWN0b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNh
Y2hlLmgiCkBAIC0yMTQsNyArMjEzLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0Fu
SWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAg
ICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1f
c3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAg
ICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBl
IHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlw
ZSk7CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09
IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9
PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVy
OgpAQCAtNTAyLDcgKzUwMSwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludDMyKTsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICB9IGVs
c2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNl
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzIsNyArNTM2LDEzIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEJpbmFyeUJpdHdpc2VPcChu
b2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2YgYmluYXJ5
VXNlS2luZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVjaWFsaXplIHRvIChmb3IgZXhhbXBsZSkg
YSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdodC1vcGVyYW5kLgor
ICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAg
ICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOworICAgICAgICAgICAg
QVNTRVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2Rl
LCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAg
LTcyMiwxMSArNzMyLDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIFZh
bHVlU3ViOgogICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFw
QmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAg
ICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICAg
ICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNwZWNTdHJpbmcgaGVyZSBmb3IgVmFsdWVT
dWI/IEl0IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0IGZvciBWYWx1ZUFkZC4KICAgICAgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIg
fCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTg4Niw2ICs4OTks
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBW
YWx1ZU5lZ2F0ZTogeworICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gbXVjaCBzbWFydGVy
IHRoaW5ncyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRkL1ZhbHVlU3ViLgogICAgICAgICBjbG9i
YmVyV29ybGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlTnVt
YmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTU4LDcgKzk3MiwxMSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCB0eXBlT2ZEb3VibGVJbmNPckRlYyhm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMy
VXNlOgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTk3NCw3ICs5OTIsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkWSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZFggJiYgY2hpbGRZICYmIGNo
aWxkWC5pc051bWJlcigpICYmIGNoaWxkWS5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAvLyBX
ZSBuZWVkIHRvIGNhbGwgYGRpZEZvbGRDbG9iYmVyV29ybGRgIGhlcmUgYmVjYXVzZSB0aGlzIHBh
dGggaXMgb25seSBwb3NzaWJsZQotICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlz
IFVudHlwZWRVc2UuIEluIHRoZSBjYXNlIG9mIEJpZ0ludFVzZSwgY2hpbGRyZW4gd2lsbCBiZQor
ICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlwZWRVc2UuIEluIHRoZSBj
YXNlIG9mIEFueUJpZ0ludFVzZSBvciBmcmllbmRzLCBjaGlsZHJlbiB3aWxsIGJlCiAgICAgICAg
ICAgICAvLyBjbGVhcmVkIGJ5IGBBYnN0cmFjdEludGVycHJldGVyOjpleGVjdXRlRWZmZWN0c2Au
CiAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAgICAgICAvLyBPdXIg
Ym94aW5nIHNjaGVtZSBoZXJlIG1hdGNoZXMgd2hhdCB3ZSBkbyBpbiBvcGVyYXRpb25WYWx1ZVBv
dy4KQEAgLTk4Miw3ICsxMDAwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmln
SW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5Miw3ICsxMDEyLDEwIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZU11bDogewotICAgICAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHdo
eSBpcyB0aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRoIFZhbHVlU3ViPworICAgICAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMDU2
LDcgKzEwNzksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAoaGFuZGxl
Q29uc3RhbnREaXZPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMzgwLDYgKzE0
MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51
bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElz
QmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAg
ICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTE0MDgsNiArMTQzNCw5IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzTnVtYmVyKCkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNC
aWdJbnQoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBOdW1i
ZXJJc0ludGVnZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFu
KE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNoaWxkLnZhbHVlKCkpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYyLDcgKzE1OTEsMjIgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUg
JiB+U3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCEo
Y2hpbGQubV90eXBlICYgU3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1Nl
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBpZiB0aGUgU3BlY3VsYXRlZFR5cGUgaW5mb3JtcyB1cyB0aGF0IHdl
IHdvbid0IGhhdmUgYSBCaWdJbnQzMiAob3IgdGhhdCB3ZSB3b24ndCBoYXZlIGEgSGVhcEJpZ0lu
dCksIHRoZW4gd2UgY2FuIHRyYW5zZm9ybSB0aGlzIG5vZGUgaW50byBhIElzQ2VsbFdpdGhUeXBl
KEJpZ0ludFR5cGUpIChvciBhIGh5cG90aGV0aWNhbCBJc0JpZ0ludDMyIG5vZGUpLgorCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAg
ICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwpAQCAtMTkzNiwxMyArMTk4MCwx
NSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
KyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBub3QgbGF0ZXIg
KGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxhY2VtZW50IGJ5IGZhbHNlKS4KKyAgICAgICAgLy8g
U2FhbSBzZWVtcyB0byBhZ3JlZSB0aGF0IHRoZSB0d28gY2hlY2tzIGNvdWxkIGJlIHN3aXRjaGVk
LCBJJ2xsIHRyeSB0aGF0IGluIGEgc2VwYXJhdGUgcGF0Y2gKICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlz
aXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlNDLgotICAgICAg
ICAgICAgYXV0byBpc05vblN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1
ZS5pc1N0cmluZygpOworICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENv
bnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVh
cEJpZ0ludCgpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5n
Q2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KHJpZ2h0KSkgewor
ICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQobGVmdCkgfHwg
aXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAgICAgICAgICAg
ICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAgICAgICAgICAg
ICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTk1Nyw2ICsyMDAzLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IG5v
ZGUtPmNoaWxkMigpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IGNhc2Ug
bm90IGludm9sdmluZyBOYU4gd2hlcmUgeCA9PT0geCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1
cm4gdHJ1ZT8KKyAgICAgICAgICAgIC8vIElmIG5vdCBJIG1pZ2h0IHNsaWdodGx5IHNpbXBsaWZ5
IHRoYXQgY2hlY2suCiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xl
YW5Vc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNl
KSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkg
fHwKQEAgLTE5NjksNyArMjAxNywxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5n
VmFyVXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJp
bmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAg
ICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKSB8fAorICAg
ICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwKKyAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkgfHwKKyAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQxZmEwYjMxNzg3Li5jOGMyNWMzMGQwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTU1NjIsNiArNTU2MiwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfbnVtYmVyKTsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfaXNfYmlnX2ludDogeworICAgICAgICAgICAgQVNT
RVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChJc0JpZ0ludCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2lzX2JpZ19pbnQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhf
dHlwZTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm1fb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmMuLjAzZTg5YjI2ZTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNDksNiArMTQ5LDcg
QEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZF9vcl9u
dWxsOgogICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjoKICAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAg
ICBjYXNlIG9wX2lzX2JpZ19pbnQ6CiAgICAgY2FzZSBvcF9pc19vYmplY3Q6CiAgICAgY2FzZSBv
cF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiMjMxOGZlMDNhZS4u
ZWMxZWY5ZjAyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTc1LDYgKzE3NSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBJ
c1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVy
OgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2Fz
ZSBJc09iamVjdDoKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CkBAIC0yNjAsNyArMjYxLDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBW
YWx1ZUJpdE5vdDoKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJ
bnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkZWYo
UHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjg1
LDcgKzY4Niw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAg
ICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKICAg
ICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6CkBAIC03MDcsNyArNzEwLDggQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICBjYXNlIFZhbHVlUG93OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6CiAg
ICAgY2FzZSBWYWx1ZUJpdFJTaGlmdDoKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnRVc2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUtYXJn
dW1lbnQgaXNCaW5hcnlVc2VLaW5kIHdvdWxkIHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXppbmcg
KGZvciBleGFtcGxlKSBmb3IgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQz
MiByaWdodC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4
IGI0M2Y3Y2Y1NGUxLi5hYzY4MzQzMzBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMg
Y29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KICAgICAgICAgICAgICAg
ICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5p
c0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFs
dWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICAgICAg
ICAgIH07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxs
Q29uc3RhbnQoY2hpbGQxQ29uc3RhbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGMuLmVhYTViMjQxMDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiREZH
Q2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkBAIC0xNDcsNiArMTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46
CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVy
SXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGU5N2Rl
MTBmNmY0Li45MjQ4NmZiYWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAxLDE0ICsyMDEsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnNldFJlc3VsdChOb2RlUmVzdWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0
aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxl
IG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUg
aW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNh
c2UuCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBW
YWx1ZVN1Yik7CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQs
IG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRP
bmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVk
Z2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgLy8gSGVhcEJpZ0ludHMgYXJl
IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9w
ID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25z
dGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNC
aWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUo
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKKyAgICAgICAgICAgICAgICBub2Rl
LT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGVub3VnaCBmb3Igbm93Lgor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciBoYXZpbmcgYSBzcGVjaWFsIHJlcHJl
c2VudGF0aW9uIGZvciBzbWFsbCBCaWdJbnRzIGluc3RlYWQuCiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2lu
Y2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29t
cGlsZSBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9wdGlt
aXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4gdGhh
dCBjYXNlLgogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRk
IDogVmFsdWVTdWIpOwotICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQsIEpTQ29uc3RhbnQs
IG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRP
bmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50
LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIDEpKSkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxk
MihFZGdlKG5vZGVDb25zdGFudE9uZSkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICAvLyBCaWdJbnRzIGFyZSBjdXJyZW50
bHkgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5z
ZXRPcChvcCA9PSBJbmMgPyBBcml0aEFkZCA6IEFyaXRoU3ViKTsKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwpAQCAtMjM0LDEyICsyNTQs
MjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgp
OwogICAgICAgICAgICAgRWRnZSYgY2hpbGQyID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNo
aWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworI2lmIFVTRShCSUdJTlQz
MikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5v
ZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVz
ZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBi
cmVhazsgCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyNlbmRpZgorCiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50
eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTI2Nyw4ICsyOTUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOiB7CiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0lu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxI
ZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxI
ZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBu
b2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMzEyLDcgKzM1MywxNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewog
ICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRT
cGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMy
VXNlPihvcGVyYW5kRWRnZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3BlcmFuZEVkZ2Uu
bm9kZSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG9wZXJhbmRFZGdl
KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5k
RWRnZSk7CisjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgp
LT5zaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQml0T3BzKCkpCiAgICAgICAgICAgICAgICAgZml4
RWRnZTxVbnR5cGVkVXNlPihvcGVyYW5kRWRnZSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ1
Nyw5ICs1MDgsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5v
ZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVz
ZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsK
KyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5u
b2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmln
SW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
Y2hpbGQyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQxKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgfSBlbHNl
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5v
ZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQyKTsKKyNlbmRpZgog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+
KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpA
QCAtNTQ1LDggKzYwNCwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGls
ZCA9IG5vZGUtPmNoaWxkMigpOwogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGxl
ZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5v
ZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAg
ICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTg3LDEyICs2NTksMjAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAg
RWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxk
Lm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGxlZnRD
aGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihyaWdodENoaWxk
KTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikK
ICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5v
ZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KGxlZnRDaGlsZCk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KHJp
Z2h0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihsZWZ0Q2hp
bGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihyaWdodENoaWxkKTsK
ICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobGVmdENoaWxk
Lm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihsZWZ0Q2hpbGQpOwpAQCAtNjU2LDEyICs3MzYsMjAgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgVmFsdWVQb3c6IHsKKyAgICAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+
Y2hpbGQxKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisj
aWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJp
Z0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
ICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjU0MCw2ICsyNjI4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAg
ICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNh
c2UgSXNPYmplY3RPck51bGw6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CkBAIC0yODgwLDcgKzI5NjksMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVI
ZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbHNlCisgICAgICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5kaWYK
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI5NTMsNyArMzA1MSwxNiBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIHByZWRpY3Rpb24gb2YgdGhlIGNoaWxkIGlzIEJp
Z0ludCwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0IFRvTnVtZXJpYyB0byBJZGVudGl0eSwgc2luY2Ug
aXQgY2FuIG9ubHkgcmV0dXJuIGEgQmlnSW50IHdoZW4gZmVkIGEgQmlnSW50LgogICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIo
KSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVh
cEJpZ0ludCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgZml4RWRnZTxI
ZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5kaWYKICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTM0MzMsMTMgKzM1NDAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAg
ICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAg
ICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAg
ICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVj
dFVzZToKICAgICAgICAgICAgIGlmIChhbHdheXNVbmJveFNpbXBsZVByaW1pdGl2ZXMoKQogICAg
ICAgICAgICAgICAgIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkp
KQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1l
cmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAvLyBGSVhNRTogd2hhdCBzaG91bGQgd2UgZG8gYWJvdXQgQmlnSW50MzJVc2UgYW5kIEFueUJp
Z0ludFVzZSA/CisgICAgICAgIC8vIEFsc28gbW9yZSBicm9hZGx5LCB3aGF0IGFib3V0IGFsbCBv
ZiB0aGUgVXNlS2luZHMgd2hpY2ggYXJlIG5vdCBsaXN0ZWQgaW4gdGhhdCBzd2l0Y2g/CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzk0OSwxMiAr
NDA1OCwyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0Rmxh
Z3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxIZWFwQmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1
bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmln
SW50MzIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJ
bnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorI2VuZGlmCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQo
KSkgewogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggYjkyODgxMGUxMDEu
LmY4MTcwZDkyYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05v
ZGUuaCIKICNpbmNsdWRlICJERkdOdWxsQWJzdHJhY3RTdGF0ZS5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlmLi45N2YxN2EwODkzOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTQxLDYgKzI1NDEsMTggQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3ltYm9sU3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKICAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVC
aWdJbnQzMigpCisgICAgeworICAgICAgICByZXR1cm4gaXNCaWdJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24oKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmln
SW50KCkKICAgICB7CkBAIC0yNzQxLDcgKzI3NTMsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkgJiYgb3AyLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQoKTsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgc3Rh
dGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoTm9kZSogb3AxLCBOb2RlKiBvcDIpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpICYmIG9w
Mi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKTsKKyAgICB9CisjZW5kaWYKKworICAgIHN0YXRp
YyBib29sIHNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoTm9kZSogb3AxLCBOb2RlKiBvcDIpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkgJiYg
b3AyLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCk7CisgICAgfQorCiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoTm9kZSogb3AxLCBOb2RlKiBvcDIpCiAgICAg
ewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpICYmIG9w
Mi0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAppbmRleCBlMjExZWE3N2Q4NS4uYWYwZjNmNzQwNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM5NSw2ICszOTUsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSXNVbmRlZmluZWRPck51bGwsIE5v
ZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNCb29sZWFuLCBOb2RlUmVzdWx0Qm9vbGVh
bikgXAogICAgIG1hY3JvKElzTnVtYmVyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIC8qIElz
QmlnSW50IGlzIG9ubHkgdXNlZCB3aGVuIFVTRV9CSUdJTlQzMi4gT3RoZXJ3aXNlIHdlIGVtaXQg
SXNDZWxsV2l0aFR5cGUgKi9cCisgICAgbWFjcm8oSXNCaWdJbnQsIE5vZGVSZXN1bHRCb29sZWFu
KSBcCiAgICAgbWFjcm8oTnVtYmVySXNJbnRlZ2VyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAg
IG1hY3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0
T3JOdWxsLCBOb2RlUmVzdWx0Qm9vbGVhbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKaW5kZXggMjNlYmUwZDdiYzcuLmE5OTQyZDZmYTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTM4MywxMCArMzgzLDE0IEBAIHZvaWQg
T1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NS
RXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBiZSBzdXJlIHRo
YXQgd2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2UgdGhlIG51bWJlclRhZ1JlZ2lzdGVy
LAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCiAg
ICAgICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVn
cyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAgICAgIC8vIFdlIGFs
c28gdXNlIHRoZSBub3RDZWxsTWFza1JlZ2lzdGVyIGFzIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLCBm
b3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBmaW5kIGEgbGVz
cyBncm9zcyB3YXkgb2YgZG9pbmcgdGhpcywgbWF5YmUgdGhyb3VnaCBkZWxheWluZyB0aGVzZSBv
cGVyYXRpb25zIHVudGlsIHdlIGFjdHVhbGx5IGhhdmUgc29tZSBzcGFyZSByZWdpc3RlcnMgYXJv
dW5kPworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1
ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpLCBHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFs
dWVTb3VyY2UuZ3ByKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNv
dXJjZS5ncHIoKSksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1Jl
Z2lzdGVycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzayksIEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAg
ICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KQEAgLTM5OCw3ICs0MDIsNyBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2Ny
YXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3Mo
KSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0LnBv
cFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00MDcsMTAgKzQxMSwxMCBAQCB2b2lkIE9T
UkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4
aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFRh
Zyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5w
YXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwg
dmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUo
c2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3MoKSk7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNv
dXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4
IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCAyZmRiOWM5ZDc2Ny4uYTI2NWMwYWE3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNsdWRlICJUeXBl
ZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9J
bmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKEpJVCkK
ICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMSw1NiArMjIwLDYgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1
dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0
eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9w
ZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRpb24mJiBudW1iZXJPcCwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwot
ICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVt
ZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihudW1iZXJPcChXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKSkpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9u
Pgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYml0d2lzZUJpbmFyeU9wKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50
T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQot
ewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFs
dWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9w
MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwot
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVy
cm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQzMk9wKFdURjo6Z2V0PGludDMyX3Q+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQogc3RhdGlj
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFyc2VJbnRSZXN1bHQoZG91YmxlIGlucHV0
KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0PGludD4oaW5wdXQpOwpAQCAtNDcwLDcx
ICs0MTksMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1v
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnJl
bWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBu
dW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAg
ICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFp
bmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JlbWFpbmRl
cihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9w
ZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4o
b3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFs
dWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0luYyhnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3Ax
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6
Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RlYyhn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0g
ICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFu
ZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih+V1RG
OjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NDMsMTUgKzQ1NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBK
U0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQz
Ml90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVm
dCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0
aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VBbmQoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU2MCwxNSArNDY0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0
KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10g
KGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVy
biBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xv
YmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9w
ZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlT3IoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NzcsMTUgKzQ3Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJp
Z2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3Io
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICBy
ZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9w
KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQz
Mk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hv
cicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VY
b3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01OTQs
MTUgKzQ4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50
T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpT
QmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojps
ZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewot
ICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0
dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVk
T3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpCkBAIC02MTEsMTUgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAg
IGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJ
bnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJp
Z2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7
Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4i
X3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0VVJT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjU3LDE1ICs1MjksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+
IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJs
ZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBsZWZ0IC8g
cmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24gb3BlcmF0aW9uLiIpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpCkBAIC02NzQsMTUgKzUzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwg
cmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXgg
b2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJhdGlvbi4iX3Mp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNQb3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQog
CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEFicyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQpAQCAtMTQ3OSw3ICsxMzM1
LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3QsIGlucHV0KSk7CiB9CiAKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNDkx
LDcgKzEzNDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0lu
dDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUwMiw3ICsxMzU4LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VO
b3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MTQsNyArMTM3MCw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShn
bG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogICAgIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE1MjYsNyArMTM4Miw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpT
QmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE1MzgsNyArMTM5NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
CiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwg
cmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0Jp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NTAsNyArMTQwNiw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NjIs
NyArMTQxOCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50
OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9
CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc0LDcgKzE0MzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTg2LDcgKzE0NDIsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9i
amVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBA
IC0xNTk4LDcgKzE0NTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNo
aWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBK
U0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MTAsNyArMTQ2Niw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MjgsNyAr
MTQ4NCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNl
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAotICAgIHJldHVybiBKU1Zh
bHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYXJnMSwgRW5jb2RlZEpT
VmFsdWUgYXJnMikKQEAgLTE2NzMsMTAgKzE1MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV1RGOjpnZXQ8SlNC
aWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihX
VEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMGYxYzg3NTRj
ZDYuLjNmMDRmODljZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKCiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEpTR2xvYmFsT2JqZWN0KiwgUmVn
RXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
dWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFj
dGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBF
bmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGly
ZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBt
aW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4ODg1OGIzOGMxLi5lM2Nm
Nzk1YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUzMiw3ICs1MzIsMTkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJ
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAwMyw2
ICsxMDE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAg
ICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAgICAgIGNh
c2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICBjYXNl
IElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQxNC4uZDU1OGE3
NTc4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAg
ICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAg
ICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgogICAgICAgICBj
YXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVz
ZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6CkBAIC0yNjMsNiArMjY1LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNh
c2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAg
ICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNP
YmplY3RPck51bGw6CkBAIC02NzUsMTAgKzY3OCwxMCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2FzZSBWYWx1ZU1vZDoKICAgICBjYXNlIFZhbHVl
UG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSk7Cisg
ICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAgIHJldHVybiBu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlOworICAgICAgICByZXR1cm4gbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhl
YXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlOGQwNjgwNzkuLjliZjQ3MmYxOWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3
MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFu
Y2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogCiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBI
b2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVz
ZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNo
KG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQog
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwg
Y29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1MzcsNDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYgY2hpbGQxID0gbm9k
ZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hp
bGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRy
aWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwg
YW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAg
ICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAx
Mik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgw
MDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50
MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
eG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhN
RTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisK
KyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVn
IG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChj
aGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwg
b3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90Qmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
c3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNl
IGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3Mo
KTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICszNjA1LDE4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0
U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3Ao
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRC
aXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgp
OwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChs
ZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBy
aWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0
Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0zNjMwLDExICszNjYx
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkK
ICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJh
bmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAg
ICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2Uo
dGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAg
ICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogICAgIGlmICghcmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0
Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsg
Ly8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+
anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDMsODQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYg
bGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUt
PmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8
fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgIHN3aXRjaCAo
b3ApIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAg
ICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAg
ICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVz
dWx0R1BSKTsKKworICAgICAgICBzd2l0Y2gob3ApIHsKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFu
ZDoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVy
YXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgVmFsdWVCaXRYb3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBlZEJpdE9wPEpJVEJpdFhvckdl
bmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGJpdEFuZCBkb2VzIG5vdCBp
bnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAgICAgICAgICAgIG1faml0
LmFuZDY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0
T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGJpdE9yIGRvZXMgbm90
IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9q
aXQub3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFZhbHVlQml0WG9yOgorICAgICAgICAgICAgLy8gQml0WG9yIHJlbW92ZXMgdGhl
IHRhZywgc28gd2UgbXVzdCBhZGQgaXQgYmFjayBhZnRlciBkb2luZyB0aGUgb3BlcmF0aW9uCisg
ICAgICAgICAgICBtX2ppdC54b3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
ICAgIG1faml0Lm9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQorCisgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
LSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGls
ZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBy
aWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdw
cigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgIC8vIEZJWE1FOiBh
ZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50CisjZW5kaWYKIAotICAg
IHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0lu
dChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgaWYobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcg
cmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0
R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7
CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dp
dGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50
eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJp
dEFuZD4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRv
ciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBWYWx1ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8
SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICBy
ZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdp
c2VPcChOb2RlKiBub2RlKQpAQCAtMzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9y
QmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25f
R0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlm
dAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRV
UlNoaWZ0OwpAQCAtMzc2NSw5ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0g
bm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwog
Ci0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5v
dE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8
fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1
OSwyNyArMzkyNiwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRP
cChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAg
IEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50
MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAg
R1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSBy
aWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BS
KTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVu
dHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0
Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2Vu
ZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyAr
Mzk1NCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdl
JiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxl
ZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIo
KTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAg
ICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRP
cChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSog
bm9kZSkKQEAgLTM5MTgsNyArMzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
aGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmln
aHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDE1
LDY5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxs
eSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/
CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNr
cyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3Vs
dEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94Qmln
SW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGlt
aW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNo
ZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRH
UFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBw
YXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAv
LyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBt
X2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0g
bGVmdC5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdo
dC5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6IGNhbGwg
YSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50
MzIvSGVhcEJpZ0ludAorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkQmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKQEAgLTQwMDYsNDQgKzQxMjMsOTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAg
ICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAgYm9vbCBu
ZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJl
ZyA9IHRydWU7Ci0jZW5kaWYKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0lu
dDMyT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklY
TUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRh
dGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2Ug
YW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAg
ICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKIAotICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0
aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBKSVRTdWJJ
Qyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsK
LSAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGlt
aXplOwotICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
U3ViOworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdo
dC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7
CiAKLSAgICAgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVn
LCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1
bmN0aW9uKTsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhl
IG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9q
aXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBH
UFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGlu
Zm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTog
c2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hC
aWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZv
ciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsK
KyAgICAvLyBGSVhNRTogd2h5IGRvIGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVNdWwgdXNl
IGlzS25vd25Ob3ROdW1iZXIgYnV0IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0
KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAgICAgIHNw
ZWN1bGF0ZUFueUJpZ0ludChyaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJl
Z3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9
IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAg
IEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAotICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwot
ICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U3ViQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0
R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7
CiAKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJvb2wgbmVl
ZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BS
UmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CisjZW5kaWYK
KworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNvZGVJbmRl
eCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsK
KyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
IEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFBy
b2ZpbGUpOworICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJP
cHRpbWl6ZTsKKyAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
U3ViOworCisgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVn
LCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1
bmN0aW9uKTsKKyAgICByZXR1cm47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3Is
IHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0
aW9uPgpAQCAtNDYxMyw2ICs0Nzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoU3ViKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMo
Tm9kZSogbm9kZSkKIHsKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUgc2hvdWxk
IGhhdmUgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1cFBoYXNl
CisgICAgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91bGQgcHJv
YmFibHkgaGF2ZSBzb21lIHBhdGggZm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQ2MjgsNiArNDc5NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVOZWdhdGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhNRTogYWRk
IGEgZmFzdCBwYXRoLCBhdCBsZWFzdCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBhbHNvIGZv
ciBIZWFwQmlnSW50IGhlcmUuCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1f
aml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMu
Ynl0ZWNvZGVJbmRleCgpOwogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOwpAQCAtNDgwOCwyOSArNDk3Niw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5j
aGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBp
ZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5k
KCkgPT0gQmlnSW50VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBjb2Rl
IGJldHdlZW4gY29tcGlsZVZhbHVlQWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBpbGVWYWx1
ZU11bCBmb3IgQmlnSW50MzIgaXMgbmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdldCByaWQg
b2YgdGhlIGR1cGxpY2F0aW9uLgorICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVm
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdl
IHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9y
aWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVy
IHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVu
Ym94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0
byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBy
ZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAg
ICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6
IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYKKworICAg
IGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJp
Z2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxl
ZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5v
dE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQu
bm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7
Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlm
IChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIo
cmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTAx
MCwyOSArNTIxMiwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9k
ZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdl
JiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7
CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3
ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUg
Zm9yIERpdiBnZXRzLgorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50
VXNlKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQp
OwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBy
aWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hp
bGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9k
ZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxl
ZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1Zh
bHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVl
UmVncygpOwogCkBAIC01MDQ2LDYgKzUyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFT
U0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0aW9uYWw8
SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0
OwogCkBAIC01Mjk1LDI5ICs1NTAzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZU1vZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgp
OwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZh
c3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBh
dGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisgICAgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7
CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAg
IHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0
ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJp
Z0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTW9kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVh
cEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQg
b3AxKHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0
Q2hpbGQpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywg
cmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9k
ZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNW
YWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIG9w
MlJlZ3MgPSBvcDIuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNTg1
OSwzMCArNjA3MSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9k
ZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdl
JiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEgZmFzdCBw
YXRoIGZvciBCaWdJbnQzMiBmb3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxvdyBwcmV0
dHkgb2Z0ZW4uCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAg
ICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0
R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwg
bGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7
CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Cisg
ICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpKTsKIAotICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICBK
U1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1bGF0ZShu
b2RlLCByaWdodENoaWxkKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1
ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygp
OwogCkBAIC02MDMwLDYgKzYyNDUsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShO
b2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29tcGlsZUJp
Z0ludDMyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUs
IGNvbmRpdGlvbik7CkBAIC02MDU3LDYgKzYyNzgsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpj
b21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bgogICAgICAgICAgICAgY29tcGlsZVN0cmluZ0lkZW50Q29tcGFyZShub2RlLCBjb25kaXRpb24p
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIC8vIEZJWE1FOiBhZGQg
SGVhcEJpZ0ludCBjYXNlIGhlcmUgKGFuZCBhZGQgYSBjb3JyZXNwb25kaW5nIHRlc3QsIHdlIHNo
b3VsZCByZWFsbHkgaGF2ZSBjYXVnaHQgdGhpcykKIAogICAgIGlmIChub2RlLT5vcCgpID09IENv
bXBhcmVFcSkgewogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2Up
KSB7CkBAIC02MTM2LDcgKzYzNTksMjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0j
aWYgVVNFKEpTVkFMVUU2NCkgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5k
ZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaElu
ZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9
IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4
SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29t
cGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorI2VuZGlmCisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4
SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRl
eEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKQEAgLTYxODMsOCArNjQyMyw4IEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNl
KSkgewotICAgICAgICBjb21waWxlQmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxlSGVhcEJp
Z0ludEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApA
QCAtNjI3OCw4ICs2NTE4LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVx
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0eShub2Rl
LCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSk7CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRV
c2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICByZXR1cm4g
bm9uU3BlY3VsYXRpdmVTdHJpY3RFcShub2RlKTsKIH0KIApAQCAtMTA1NDEsMTggKzEwNzgxLDE4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2UpCiAgICAg
c3BlY3VsYXRlU3ltYm9sKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkK
IHsKLSAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwg
ZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEJpZ0lu
dChjZWxsKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Y2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5j
aElmTm90SGVhcEJpZ0ludChjZWxsKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFw
QmlnSW50KEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNC
aWdJbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVy
YW5kKHRoaXMsIGVkZ2UpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigp
KTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNWYWx1ZVJl
Z3MgcmVncykKQEAgLTEwNzIyLDggKzEwOTYyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBz
cGVjdWxhdGVTeW1ib2woZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmlnSW50VXNl
OgotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlQW55
QmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVhcEJpZ0lu
dFVzZToKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dChlZGdlKTsKQEAgLTEzMDczLDE3ICsxMzMyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdz
ID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7CisgICAgLy8g
RklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0eXBlT2Ys
IGFuZCBmb3IgYm9vbGlmeSBvciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBmaWxlKS4K
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVn
cyk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChhcmd1bWVu
dFJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJbnQg
PSBtX2ppdC5qdW1wKCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEhl
YXBCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGlzSGVhcEJpZ0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGluaygm
bV9qaXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJn
dW1lbnRSZWdzLCBzY3JhdGNoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7CisgICAg
aXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3Vt
ZW50UmVncywgcmVzdWx0UmVncyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTQyLDkgKzE0
MTkxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5j
aChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUgPSBicmFu
Y2hOb2RlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHko
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxp
dHkoTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUg
c3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAv
LyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBz
dHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMzk1Niw4ICsxNDIwNSw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQudXNlKCk7
CiAgICAgcmlnaHQudXNlKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCks
IGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIp
OworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOworICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxl
cjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5hNjU1ZGU5ODNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM0Niw2ICszNDYsOSBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3Vi
bGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJl
ZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgR1BS
UmVnIGZpbGxTcGVjdWxhdGVCaWdJbnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVyYXRlZE9w
ZXJhbmRUeXBlIGNoZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAgICAgdm9p
ZCBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
KTsKQEAgLTExNDgsNiArMTE1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQZWVwSG9s
ZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAgICAgdm9p
ZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklU
Q29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
SW50NTJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlUGVlcEhv
bGVCaWdJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCb29s
ZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSos
IE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIHZv
aWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUp
OwpAQCAtMTE3Miw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1pc2NTdHJp
Y3RFcShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7Ci0g
ICAgdm9pZCBjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhl
YXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xF
cXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9s
VW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2Up
OwogCkBAIC0xMjIyLDYgKzEyMjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxl
SW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZUJp
Z0ludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24p
OworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNz
ZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21w
YXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNv
bXBpbGVTdHJpbmdDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbik7CkBAIC0xMjk3LDExICsxMzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVC
aXR3aXNlTm90KE5vZGUqKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0
b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQgZW1pdFVu
dHlwZWRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3Ao
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlVmFsdWVCaXR3aXNlT3AoTm9kZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJpZ2h0U2hp
ZnRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJp
dE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2hpZnRP
cChOb2RlKik7CkBAIC0xNTc5LDYgKzE1ODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3Vs
YXRlSW50MzIoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVw
QW55SW50KEVkZ2UpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVB
bnlCaWdJbnQoRWRnZSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQgc3BlY3Vs
YXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjI4LDggKzE2NDEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlKTsK
ICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBz
cGVjdWxhdGVTeW1ib2woRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSwgR1BS
UmVnIGNlbGwpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZvaWQgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxhdGVI
ZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1ZhbHVl
UmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3Vs
YXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDcsNiArMjYy
MCw1NiBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKyNpZiBV
U0UoQklHSU5UMzIpCitjbGFzcyBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJpZ0lu
dDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBt
X2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFs
aWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwg
ZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1bGF0ZUJp
Z0ludDMyT3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOwor
ICAgIH0KKworICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9l
ZGdlOworICAgIH0KKworICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAg
ICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1f
Z3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkpOworICAg
ICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2UoKQorICAg
IHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBT
cGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3By
T3JJbnZhbGlkOworfTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUgREZHX1RZ
UEVfQ0hFQ0tfV0lUSF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNz
ZWRUaHJvdWdoLCBqdW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBfZHRj
X3NvdXJjZSA9IChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
RWRnZSBfZHRjX2VkZ2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IGIwMTlkODVkZjljLi4zZWE5ZjNjOTdmNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CkBAIC00MTg1LDcgKzQxODUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFTSCht
X2ppdC5ncmFwaCgpLCBub2RlLCAiQ2hlY2tBcnJheU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJp
dCBERkciKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBJc0JpZ0ludDoK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJJc0JpZ0ludCBpcyBvbmx5
IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIsIHdoaWNoIGNhbiBvbmx5IGJlIHRydWUgaW4gNjQgYml0
IG1vZGUiKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggYjA3Y2IyNTc1ZDEuLjlkODZkNWU0NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzgsNyArMTM4
LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7
CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmln
SW50MzI6IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3By
cy5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0zNDAsOCArMzQxLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBu
b2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAgIH0KICAg
ICAKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBK
U1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBBU1NFUlQobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChB
bnlCaWdJbnRVc2UpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIo
dGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3Bl
Y3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+
Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICBHUFJSZWcg
YXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCkBAIC0zNjMsNDMgKzM2Nyw2OCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwg
Tm9kZSogYnJhbmNoTm9kZQogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/
IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFr
ZW4pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwg
cmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxz
Q2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotICAgICAgICAKLSAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxR1BSKTsK
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdERvdWJsZSA9IG1faml0LmJyYW5jaElmTnVt
YmVyKGFyZzFHUFIpOwotICAgICAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyR1BSKTsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51bWJl
cihhcmcyR1BSKTsKLSAgICAgICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAg
ICAgICBicmFuY2g2NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxl
cjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHRha2VuKTsKLSAgICAgICAganVtcChub3RUYWtl
biwgRm9yY2VKdW1wKTsKLSAgICAgICAgCi0gICAgICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2pp
dCk7CisgICAgICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcg
dG8gYmUgZmFsc2UpOgorICAgICAgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERv
dWJsZSkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkKKyAgICAgICAgICAgIGdvdG8gdGFrZW47CisgICAgICAgICBpZiAobGVmdCBpcyBDZWxs
IHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAg
Z290byBub3RUYWtlbjsKKyAgICAgICAgICovCisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dQYXRoQ2FzZXM7CisKKyAgICAgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRz
IChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5j
aCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1
c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgLy8gVGhlIHRyaWNrIGlz
IHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3
aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAg
IC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMg
b25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUg
b3IgZXF1YWwgMTw8NTAuCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAg
ICAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUo
YXJnMkdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
YWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdw
cigpKTsKKyAgICAgICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIsIHJlc3Vs
dEdQUik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9
IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKICAgICAgICAgYnJhbmNo
NjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBub3RUYWtl
biA6IHRha2VuKTsKICAgICAgICAgCi0gICAgICAgIGxlZnREb3VibGUubGluaygmbV9qaXQpOwot
ICAgICAgICByaWdodERvdWJsZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBzaWxl
bnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
KTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgCisgICAgICAgIC8v
IElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBhdCBs
ZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQzMikK
KyAgICAgICAgLy8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRv
IGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJp
Z0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgICAgIC8vIElu
c3RlYWQgb2YgZG9pbmcgdHdvIGJyYW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25lLCBieSBv
YnNlcnZpbmcgdGhhdAorICAgICAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENl
bGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgICAgICAvLyAg
ICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgICAgICAvLyAyLiBTaW5jZSB3
ZSBrbm93IHRoYXQgbmVpdGhlciBpcyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBp
cyBDZWxsKSBpcyBlcXVpdmFsZW50IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQorICAgICAg
ICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIHNl
dCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgICAgIC8vICAgICAgSWYgYXQgbGVhc3Qgb25l
IGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgICAgICAvLyAg
ICAgIEFuZCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXInIHRhZyB3
aWxsIGFsc28gYmUgMCwgbWFraW5nIHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxz
ZQorICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5k
aWYKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZDZWxsKHJlc3Vs
dEdQUikpOworCisgICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbik7CisKKyAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOworCiAgICAgICAgIGJyYW5jaFRlc3QzMihp
bnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRH
UFIsIHRha2VuKTsKICAgICB9Ci0gICAgCisKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUq
IG5vZGUsIGJvb2wgaW52ZXJ0KQogeworICAgIC8vIEZJWE1FOiBzb21lIG9mIHRoaXMgY29kZSBz
aG91bGQgYmUgc2hhcmVhYmxlIHdpdGggbm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJn
MVJlZ3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJnMlJlZ3MgPSBh
cmcyLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOworICAg
IEdQUlJlZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CkBAIC00Mjgs
MzMgKzQ1Nyw2MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBo
b2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV9qaXQub3I2NChhcmcx
UmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgLyogQXQgYSBoaWdo
IGxldmVsIHdlIGRvIChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxzZSk6CisgICAgSWYgKGxl
ZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsK
KyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAg
Z290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAg
ICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8K
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOwogCi0gICAgSklUQ29t
cGlsZXI6Okp1bXAgdHdvQ2VsbHNDYXNlID0gbV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUik7
Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFy
ZzFSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihh
cmcxUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIGxlZnRPSy5saW5rKCZtX2ppdCk7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMlJlZ3Mp
OwotICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzJSZWdz
LCBJbnZhbGlkR1BSUmVnKSk7Ci0gICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0KLSAgICBtX2pp
dC5jb21wYXJlNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6
OkVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7Ci0KLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0gICAgdHdvQ2VsbHND
YXNlLmxpbmsoJm1faml0KTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2
NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGFyZzFSZWdzLmdwcigpLCBhcmcyUmVncy5ncHIoKSkp
OworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmln
aHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0
IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5j
aElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIElu
dDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZp
bmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFs
bCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZp
bmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOworICAgIG1faml0Lm1vdmUoYXJnMUdQUiwgcmVzdWx0R1BSKTsKKyAgICBt
X2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0LmFkZDY0KFRydXN0
ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICBtX2pp
dC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHNjcmF0Y2gu
Z3ByKCkpOworICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1bHRH
UFIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9IEpTVmFs
dWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW02NChuZXh0TG93ZXN0T2ZIaWdoQml0cykpKTsKKworICAgIG1faml0LmNvbXBhcmU2NChKSVRD
b21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisgICAgSklUQ29t
cGlsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVy
bywgcmVzdWx0R1BSKTsKKworICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBn
byB0byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBI
ZWFwQmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAvLyBJZiB3ZSBkb24ndCBzdXBwb3J0IEJpZ0lu
dDMyLCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYgYm90aCBvcGVyYW5kcyBh
cmUgY2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFuZCBTdHJpbmcgPT09IFN0
cmluZykKKyAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEg
c2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYm
IHJpZ2h0IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQor
ICAgIC8vICAgICAgQm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAiCisgICAgLy8gMi4gU2lu
Y2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmln
aHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAg
ICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIHNl
dCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgLy8gICAgICBJZiBhdCBsZWFzdCBvbmUgaXMg
bm90IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisgICAgLy8gICAgICBBbmQg
aWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNv
IGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIG1f
aml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxzZQorICAgIG1faml0
Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgIHNsb3dQYXRo
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKIAotICAgIG1faml0
Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCghaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKyAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BSKTsKIAogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
ZzFSZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKKyAgICBtX2pp
dC54b3I2NChUcnVzdGVkSW1tNjQoaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKwogICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogfQogCkBAIC0xMDAzLDYgKzEwNTksOCBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYg
cmV0dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9y
bWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsK
ICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzQsNiArMTI5Miw4IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZv
cm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9y
bWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBE
YXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1f
Y3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoK
QEAgLTEzMTEsNiArMTM3MSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoK
ICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0
YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTksNiArMTM4MSwxMDkg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2Up
CiAgICAgfQogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKFNwZWN1bGF0ZUJpZ0lu
dDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVj
ayhlZGdlLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAgICBz
cGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7CisgICAgbm90Q2VsbC5s
aW5rKCZtX2ppdCk7CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSB2YWx1ZS5tX3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3Bl
Y0JpZ0ludDMyKTsKKyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CisgICAgICAgIGlmIChtYXlI
YXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1
bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAg
cmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7
CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZv
cm1hdE5vbmU6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9
IGVkZ2UtPmFzSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1
YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSkpLCBn
cHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZv
cm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGls
bGVkKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMyKSB7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciks
IGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25O
b3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7Cisg
ICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZv
cm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2Ug
RGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7
CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsK
KyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdw
cik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFu
Y2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3By
KSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVt
cEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9CisgICAgICAg
IGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsK
KyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFu
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0lu
dDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91
YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxs
OgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdl
OgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJh
ZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0
LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9ybWF0Iik7CisgICAgICAg
IHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIp
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdl
IG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTcyMCw1NSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiBub2RlLCBOb2Rl
KiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQogCisjaWYgVVNFKEJJR0lO
VDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiBu
b2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7Cisg
ICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworCisgICAgaWYg
KGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBv
cGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQu
Y29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAg
IG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC51bmJv
eEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCB0
ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wLmdwcigpKTsKKyAg
ICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0LmdwcigpLCB0ZW1wLmdwcigp
LCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRC
b29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiBu
b2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3VsZCByZXF1aXJlIHVuYm94
aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9uIG5lZ2F0aXZlIG51bWJl
cnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29u
ZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNC
bG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2Nr
OworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFr
ZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90
VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3Vn
aC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgY29uZGl0aW9uID0g
SklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBCYXNpY0Jsb2NrKiB0bXAg
PSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAgICAgbm90VGFrZW4gPSB0
bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdw
cigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lO
VDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5v
ZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtNDA4Niw2ICs0MzAwLDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc0JpZ0ludDogeworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVlLmdwcigpKTsKKworICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spLCByZXN1bHQuZ3ByKCkp
OworICAgICAgICBtX2ppdC5hbmQ2NCh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAg
ICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgcmVzdWx0LmdwcigpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1wKCk7CisKKyAgICAgICAg
aXNDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVx
dWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVz
dWx0LmdwcigpKTsKKworICAgICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOworICAgICAg
ICBibGVzc0Jvb2xlYW4ocmVzdWx0LmdwcigpKTsKKyAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBOdW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBiM2U0MWQ4ZDdlMS4uZGZhN2M2M2VkNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
VmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAgICAgICAgY2FzZSBWYWx1
ZUJpdFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWF5YmUgc3VwcG9ydCB0
aGUgY2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJpZ0ludCBhbmQgdGhlIG90
aGVyIGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKICAg
ICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJp
Z0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAg
ICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDhlZjczYjZmMmU4
Li5hYjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBvdXQucHJp
bnQoIlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAg
ICAgIG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAg
IG91dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnByaW50KCJCaWdJbnQzMiIp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIG91
dC5wcmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5oCmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0gVXNlS2luZCB7CiAgICAg
S25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8vIFRoaXMgYml6YXJyZSB0
eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRlY29kZSBndWFyYW50ZWUg
dGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90IG9iamVjdHMpLgogICAg
IFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50VXNlLAorICAgIEhlYXBC
aWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVjdFVzZSwKICAgICBNYXBP
YmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1NCwxMiBAQCBpbmxpbmUg
U3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAgICAgIHJl
dHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2UgU3ltYm9sVXNlOgogICAg
ICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBjYXNlIEFu
eUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmln
SW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBCaWdJbnQz
MlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBjYXNlIFByb21pc2VPYmpl
Y3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICBjYXNlIERhdGVP
YmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29sIG1heUhhdmVUeXBlQ2hl
Y2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVjayhraW5k
KTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5kKQotewotICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bkludDMyVXNl
OgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNl
IEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVw
UmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERvdWJsZVJlcEFueUludFVz
ZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogewog
ICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlubGluZSBib29sIGlzQ2Vs
bChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgY2FzZSBLbm93blN0cmlu
Z1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBjYXNl
IEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBTdHJp
bmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzEu
LjJmZDk3MWU2Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC0yNjAsNiArMjYwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNl
IElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAg
Y2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2Jq
ZWN0T3JOdWxsOgpAQCAtNDgyLDcgKzQ4Myw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAg
ICAgICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAg
ICAgICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQmln
SW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1hcE9iamVj
dFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZiYy4uYzBm
NGYyYjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9u
VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVl
cy5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxpemVDb25z
dGFudHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAgICBpbnRQ
dHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDMpOwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29u
c3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgYmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmgKaW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEwIEBAIHB1YmxpYzoKICAg
ICBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGludFB0ckVpZ2h0
IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9OwotICAgIAor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsgbnVsbHB0ciB9Owor
I2VuZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAgY29uc3Qg
dW5zaWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVlIGJyYW5jaFdlaWdodHMg
eyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggODAzNjM5MDdiOWUuLjQyOGViZjBhOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1Myw2ICsxMzUzLDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAgICAgIGNvbXBpbGVJc051
bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAg
ICAgICAgICBjb21waWxlSXNCaWdJbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGNvbXBpbGVOdW1iZXJJc0ludGVnZXIo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjEzNSwxMSArMjEzOCwyOCBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAg
ICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAg
ICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAg
ICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZUFkZCh1bmJveGVk
TGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0
LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAg
IExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBz
ZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRV
c2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIxNzYsMjggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAg
ICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisg
ICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxhdGVTdWIodW5ib3hl
ZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3Vs
dCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAg
ICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50
VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTc3LDExICsyMjE0LDI4
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNo
aWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQz
MihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMy
KHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3Vs
YXRlTXVsKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVj
dWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsK
KworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsK
KyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjg1LDcgKzIzMzksMjEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAg
ICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHN1
cHBvcnRlZCBieSB0aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1Zh
bHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2
bUNhbGwocG9pbnRlclR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisjZW5kaWYKKwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigp
KTsKIApAQCAtMjU1NCwxMSArMjYyMiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZh
bHVlRGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklY
TUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uRGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
bkRpdkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMjYzMywxOCArMjcwMiwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZVZhbHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKLSAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAv
LyBGSVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9kQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEhlYXBC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2Ug
fHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlLCBtX25vZGUtPmJpbmFy
eVVzZUtpbmQoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBz
cGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0K
QEAgLTI4MDksMTcgKzI4ODEsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVBv
dygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUg
ZXhwb25lbnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBM
VmFsdWUgZXhwb25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvblBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhw
b25lbnQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBleHBvbmVudCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsK
KyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
c3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZSht
X25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KEludDY0LCBvcGVyYXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQpAQCAtMzIw
MCw5ICszMjc2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXROb3QoKQog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAgICAgICAgICAgTFZhbHVl
IG9wZXJhbmQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkg
eworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJpY2sgcmVsaWVzIG9uIGRldGFp
bHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEJpZ0ludDMyLCBhbmQgd2lsbCBoYXZlIHRvIGJl
IHVwZGF0ZWQgaWYgd2UgbW92ZSBiaXRzIGFyb3VuZC4KKyAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAwMTIpOworICAgICAg
ICAgICAgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZmZmZmZmZmMDAwMDsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Iob3BlcmFuZCwgbV9vdXQu
Y29uc3RJbnQ2NChtYXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAg
ICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG9wZXJh
bmQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0zMjIwLDExICszMzEwLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0
aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbV9vdXQuYml0QW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNDAsMTEgKzMzNDIsMjMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25CaXRPckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0
byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVkIGJ5IGJpdEFuZAorICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjYwLDExICszMzc0LDIzIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdE1pc3NpbmdUYWcgPSBtX291dC5iaXRYb3IobGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKHJlc3VsdE1pc3NpbmdUYWcsIG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
bkJpdFhvckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMzI4MCwxMSArMzQwNiwyOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlQml0UlNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAot
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRp
b25CaXRSU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0aGluZyBzbWFydGVyIGhlcmUKKyAgICAg
ICAgICAgIC8vIFRoaW5ncyBhcmUgYSBiaXQgdHJpY2t5IGJlY2F1c2UgYSByaWdodC1zaGlmdCBi
eSBhIG5lZ2F0aXZlIG51bWJlciBpcyBhIGxlZnQtc2hpZnQgZm9yIEJpZ0ludHMuCisgICAgICAg
ICAgICAvLyBTbyBldmVuIGEgcmlnaHQgc2hpZnQgY2FuIG92ZXJmbG93LgorCisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRl
KG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShC
SUdJTlQzMikKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0lu
dFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjk2LDI0ICszNDQwLDI1IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5hU2hyKAogICAgICAgICAg
ICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQo
bG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAg
ICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5j
b25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5k
IGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBC
MwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEJpdExTaGlmdCgpCiAgICAgewog
ICAgICAgICBzZXRJbnQzMihtX291dC5zaGwoCiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUt
PmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNo
aWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRB
bmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAv
LyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBp
bmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAg
IHZvaWQgY29tcGlsZVZhbHVlQml0TFNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRV
c2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBhIGZhc3QgcGF0aCBmb3Ig
QmlnSW50MzIgaGVyZS4KKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTMzMzAsNyArMzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgc2V0SW50MzIo
bV9vdXQubFNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAg
ICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5j
b25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0
IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBz
ZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVUlu
dDMyVG9OdW1iZXIoKQpAQCAtNzM1NSw2ICs3NTAwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIGlmIChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIChTcGVj
Qnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bm90TnVtYmVyID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbFBhdGggPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAg
LTczNjQsMTAgKzc1MTIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgLy8gbm90TnVtYmVy
IGNhc2UuCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KG5vdE51bWJlciwgY29udGludWF0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90QmlnSW50MzIpKTsKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRpZgogICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSks
IHVuc3VyZShpc0NlbGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmln
SW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVh
dGlvbiksIHVuc3VyZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSGVh
cEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZXZlcmFs
IGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVyaWMgc3RpbGwgZXhpc3Rz
LgpAQCAtODMyNCw3ICs4NDc2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3ltYm9sVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChTdHJpbmdVc2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRV
c2UpKSB7CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVxKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTgzNjcsNyArODUyMiw5NCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJ
bnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIC8vIE5vIG5lZWQg
dG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBib3RoIHNpZGVzCisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOworICAg
ICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0IHdpdGggaWYgKGxlZnQg
PT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdodCBjaGVja3MgKHNlZSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAgICAvLyBUaGUgY29kZSB0
aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29kZToKKyAg
ICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIobGVmdCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChy
aWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHNUb0lu
dDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
Q0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGlmIChpc0JpZ0lu
dDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxz
VG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFw
QmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFs
cyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Js
b2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFz
aWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0ludDMyID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNOb3RCaWdJbnQzMiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBt
X291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihs
ZWZ0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGxlZnRJc0JpZ0ludDMy
KSwgdW5zdXJlKGxlZnRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBz
ZXQgdGhlIG9yZGVyIG9mIHRoZSBibG9ja3MgdG8gbWF4aW1pemUgZmFsbHRocm91Z2gKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwg
dW5zdXJlKGJvdGhBcmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmlnSW50MzIpKTsKKwor
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyKTsKKyAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291
dC5lcXVhbChsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhvbmx5TGVmdElzQmlnSW50MzIpOwor
ICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50
MzIobGVmdCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0SXNCaWdJbnQz
MiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgcmlnaHQsIHVuYm94ZWRMZWZ0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNOb3RCaWdJbnQzMik7
CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGxlZnQs
IHJpZ2h0KSwgdW5zdXJlKGxlZnRFcXVhbHNSaWdodCksIHVuc3VyZShsZWZ0SXNIZWFwQmlnSW50
KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRFcXVhbHNSaWdodCk7CisgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5hbmNo
b3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNIZWFwQmlnSW50KTsKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKHJpZ2h0SXNCaWdJbnQzMiksIHVuc3VyZShyaWdodElzTm90
QmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRJc0JpZ0ludDMy
KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0SXNCaWdJbnQzMiA9IG1f
b3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25D
b21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90QmlnSW50MzIpOworICAg
ICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBz
cGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCisgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Cisg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoSGVhcEJpZ0ludCA9IG1fb3V0LmFu
Y2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXEsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSkpOworICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGko
SW50MzIsIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiwgcmVzdWx0TGVmdElzQmlnSW50MzIsIHJlc3Vs
dExlZnRFcXVhbHNSaWdodCwgcmVzdWx0UmlnaHRJc0JpZ0ludDMyLCByZXN1bHRCb3RoSGVhcEJp
Z0ludCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEJJ
R0lOVDMyKQorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVz
ZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKQEAgLTg0NTAs
MTEgKzg2OTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFs
aXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVzZQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0
cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtODU0
MCw2ICs4NzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CisgICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2ggc21hcnRlciBoZXJl
LCBzZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4gU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAgICAg
ICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsmXSAoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgewpAQCAtMTA1MDQsNyArMTA3NDcsMzEgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEJv
b2xlYW4obV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwgcGF0Y2hwb2lu
dFJlc3VsdCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAg
ICB7CisgICAgICAgIC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIEJpZ0ludDMyLCB3ZSBz
aG91bGQganVzdCBlbWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQpCisgICAgICAgIEFTU0VS
VChVU0VfQklHSU5UMzIpOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxD
YXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c05vdENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2Vs
bFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlzQ2VsbFdpdGhUeXBlKHZh
bHVlLCBtX25vZGUtPnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVy
eSgpLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1
bHQsIGNlbGxSZXN1bHQpKTsKKyAgICB9CiAgICAgdm9pZCBjb21waWxlSXNDZWxsV2l0aFR5cGUo
KQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpIHsKQEAgLTE0MjE0LDkgKzE0NDgxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0
QmluYXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbikKICAgICB7
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVjdWxhdGUobm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQy
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQg
bGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkp
OwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQyODIsOCArMTQ1NTEsMTEgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIAotICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJU
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7
CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDg5NSw3ICsxNTE2Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2lu
ZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYgKHZhbHVlIGlzIGNl
bGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlz
IEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVl
IGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUt
Pmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAgICAgLy8gICAgICAg
ICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC0xNDkwNSw2
ICsxNTE3Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIp
IHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAg
ICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgICAgICAgICAg
Ly8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAgICAgICAgIC8vIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAg
ICAgICAgICAvLyB9CkBAIC0xNDkxMiwxMyArMTUxODYsMTcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAg
ICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQzMkNhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50MzJDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91YmxlQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgYmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Js
b2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4gcmVzdWx0czsKQEAgLTE0
OTMyLDIwICsxNTIxMCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAgICAgICAgICAgIG1f
b3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShl
ZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAgICAgICB1bnN1cmUo
YmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2UpKTsKKyAgICAgICAgICAg
ICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3BlY0NlbGwgLSBT
cGVjU3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBCaWdJbnRDYXNlKSwgdW5z
dXJlKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFrUG9pbnRlcihqc0VtcHR5
U3RyaW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBub3RTdHJp
bmdPckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGVhcEJpZ0ludENh
c2UsIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBub25a
ZXJvQmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQz
Mk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0aCkpOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJbnQpKTsKICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSwgbm90Q2Vs
bENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0OwogICAgICAgICAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpCiAgICAg
ICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFuVHJ1ZTsKQEAgLTE0OTg4
LDggKzE1MjY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodmFs
dWUpLCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICAgICAgIGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkg
JiB+U3BlY0NlbGwpLAorICAgICAgICAgICAgICAgICB1bnN1cmUoYmlnSW50MzJDYXNlKSwgdW5z
dXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJ
bnQzMkNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBMVmFsdWUgYmlnSW50MzJO
b3RaZXJvID0gbV9vdXQubm90RXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihi
aWdJbnQzMk5vdFplcm8pKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzJDYXNl
LCBjb250aW51YXRpb24pOworI2Vsc2UKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERv
dWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisjZW5kaWYKICAgICAgICAgICAgIExWYWx1ZSBtaXNj
SXNUcnV0aHkgPSBtX291dC5lcXVhbCgKICAgICAgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1pc2NJc1RydXRoeSkpOwpAQCAtMTU1OTQsMTMg
KzE1ODg2LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIC8vICAgICAgICAgfQogICAgICAgICAvLyAg
ICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3Ry
aW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2ludCkgeworICAgICAgICAvLyAg
ICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJu
IGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gICAgICAgICByZXR1
cm4gc3ltYm9sCiAgICAgICAgIC8vICAgICB9CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVt
YmVyKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gbnVtYmVyCisgICAgICAgIC8vIH0gZWxzZSBp
ZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdpbnQKICAgICAgICAg
Ly8gfSBlbHNlIGlmIChpcyBudWxsKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAg
ICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9vbGVhbikgewpAQCAtMTU2MjgsNiArMTU5MjIsOSBA
QCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBub3ROdW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENh
c2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBib29sZWFuQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHVuZGVmaW5lZENhc2UgPSBt
X291dC5uZXdCbG9jaygpOwpAQCAtMTU2ODAsNyArMTU5NzcsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOwogICAgICAgICBt
X291dC5icmFuY2goCi0gICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGls
ZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAorICAgICAgICAgICAg
aXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNwZWNP
YmplY3QgLSBTcGVjU3RyaW5nKSksCiAgICAgICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVu
c3VyZShzeW1ib2xDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwg
c3ltYm9sQ2FzZSk7CkBAIC0xNTY5Niw4ICsxNTk5MywxNSBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgbm90TnVtYmVyQ2FzZSk7CiAgICAg
ICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6TnVtYmVyKTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdEJpZ0ludDMy
Q2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBl
KGNoaWxkKSAmIH5TcGVjQ2VsbCksIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdEJpZ0lu
dDMyQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgbm90
TnVsbENhc2UpOworI2Vsc2UKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwg
bm90TnVsbENhc2UpOworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpc051bGw7CiAgICAgICAgIGlm
IChwcm92ZW5UeXBlKGNoaWxkKSAmIFNwZWNPdGhlcikKICAgICAgICAgICAgIGlzTnVsbCA9IG1f
b3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwpA
QCAtMTYzODgsMTUgKzE2NjkyLDMzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgTFZhbHVlIGxvd0JpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUg
bG93SGVhcEJpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
bW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkg
PT0gQmlnSW50VXNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKTsK
IAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdlLCBtb2RlKTsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KGVkZ2UsIHJlc3VsdCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQoZWRnZSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGxvd0JpZ0ludDMyKEVkZ2UgZWRnZSwgT3Bl
cmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSk7CisKKyAgICAgICAg
TG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2YWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZh
bHVlKHJlc3VsdCksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMihyZXN1bHQpKTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF5
SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGUoVW5j
b3VudGFibGUpOworICAgICAgICByZXR1cm4gbV9vdXQuYmlnSW50MzJaZXJvOworICAgIH0KKyNl
bmRpZgorCiAgICAgTFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBAIC0xNjU4Miw3ICsxNjkwNCw3
MiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmFkZChtX291dC56ZXJv
RXh0KHZhbHVlLCBJbnQ2NCksIG1fbnVtYmVyVGFnKTsKICAgICB9Ci0gICAgCisKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgTFZhbHVlIGlzQmlnSW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJv
dmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0
dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgbV9v
dXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNr
KSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7
CisgICAgfQorICAgIExWYWx1ZSBpc05vdEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHBy
b3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICBy
ZXR1cm4gcHJvdmVuOworICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCisgICAgICAgICAg
ICBtX291dC5iaXRBbmQoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQz
Mk1hc2spKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJU
YWcpKTsKKyAgICB9CisgICAgTFZhbHVlIHVuYm94QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihqc1ZhbHVl
LCBtX291dC5jb25zdEludDY0KDE2KSkpOworICAgIH0KKyAgICBMVmFsdWUgYm94QmlnSW50MzIo
TFZhbHVlIGludDMyVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQuYml0T3IoCisg
ICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dChpbnQzMlZhbHVlLCBCMzo6SW50NjQp
LCBtX291dC5jb25zdEludDY0KDE2KSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpT
VmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSBpc05vdEFueUJpZ0ludChM
VmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsK
KyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmln
SW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgLy8gaWYgKGlzQmln
SW50MzIpCisgICAgICAgIC8vICAgcmV0dXJuIGZhbHNlCisgICAgICAgIC8vIGlmICghaXNDZWxs
KQorICAgICAgICAvLyAgIHJldHVybiB0cnVlOworICAgICAgICAvLyByZXR1cm4gIWlzSGVhcEJp
Z0ludAorICAgICAgICBMQmFzaWNCbG9jayBpc0JpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNC
aWdJbnQzMkNhc2UpLCB1bnN1cmUoaXNOb3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhpc0JpZ0ludDMyQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVy
bkZhbHNlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc05vdEJpZ0lu
dDMyQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwoanNWYWx1ZSwgdHlwZSksIHVu
c3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhpc05vdENlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJu
VHJ1ZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuSXNOb3RIZWFwQmlnSW50ID0gbV9vdXQuYW5j
aG9yKGlzTm90SGVhcEJpZ0ludChqc1ZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKEludDMyLCByZXR1cm5GYWxzZSwgcmV0dXJuVHJ1ZSwgcmV0dXJu
SXNOb3RIZWFwQmlnSW50KTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAgICAg
TFZhbHVlIGlzQ2VsbE9yTWlzYyhMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IFNwZWNGdWxsVG9wKQogICAgIHsKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3Zl
blZhbHVlKHR5cGUsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjTWlzYykpCkBAIC0xNjg5NCw4ICsxNzI4
MSwxNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBz
cGVjdWxhdGVCb29sZWFuKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
QmlnSW50VXNlOgotICAgICAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0
ZUJpZ0ludDMyKGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55Qmln
SW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2UpOworICAgICAgICAg
ICAgYnJlYWs7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAgICBjYXNlIEhlYXBCaWdJ
bnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm90U3RyaW5nVmFyVXNlOgogICAgICAgICAgICAgc3Bl
Y3VsYXRlTm90U3RyaW5nVmFyKGVkZ2UpOwpAQCAtMTcwODEsMTggKzE3NDc2LDM4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3ltYm9sU3RydWN0dXJlLT5p
ZCgpKSk7CiAgICAgfQogCi0gICAgTFZhbHVlIGlzTm90QmlnSW50KExWYWx1ZSBjZWxsLCBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0lu
dFVua25vd25XaGV0aGVyQ2VsbChMVmFsdWUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBT
cGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5W
YWx1ZSh0eXBlICYgU3BlY0NlbGwsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBw
cm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjSGVhcEJpZ0ludCkpCisgICAgICAgICAg
ICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGRlZmF1bHRUb0ZhbHNlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Nl
bGwodmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24p
KTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2Vs
bENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybkZvckNl
bGwgPSBtX291dC5hbmNob3IoaXNIZWFwQmlnSW50KHZhbHVlLCB0eXBlKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQz
MiwgZGVmYXVsdFRvRmFsc2UsIHJldHVybkZvckNlbGwpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1
bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUg
cHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIH5TcGVjSGVhcEJpZ0ludCkp
CiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1
YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlSUQpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLmJpZ0ludFN0cnVjdHVy
ZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc0JpZ0ludChMVmFsdWUgY2VsbCwgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc0hlYXBCaWdJbnQo
TFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0g
ICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGws
IFNwZWNCaWdJbnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUo
dHlwZSAmIFNwZWNDZWxsLCBTcGVjSGVhcEJpZ0ludCkpCiAgICAgICAgICAgICByZXR1cm4gcHJv
dmVuOwogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2Fk
MzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLApAQCAtMTc1NTAsMTYgKzE3OTY1
LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBsb3dDZWxsKGVk
Z2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UsIExWYWx1
ZSBjZWxsKQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UsIExWYWx1ZSBj
ZWxsKQorICAgIHsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBl
ZGdlLCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50KGNlbGwpKTsKKyAgICB9CisgICAg
dm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIEZUTF9U
WVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RCaWdJ
bnQoY2VsbCkpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRn
ZSkpOwogICAgIH0KIAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSkKKyAgICB2
b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoRWRnZSBlZGdlKQogICAg
IHsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNw
ZWNIZWFwQmlnSW50LCBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwodmFsdWUpKTsK
ICAgICB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQzMihF
ZGdlIGVkZ2UpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2Us
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMih2YWx1ZSkp
OworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7
CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwg
ZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RBbnlCaWdJbnQodmFsdWUpKTsKKyAgICB9CisjZW5kaWYK
KwogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxs
KQogICAgIHsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdl
LCBTcGVjT2JqZWN0LCBpc05vdE9iamVjdChjZWxsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggMjE3MTVkM2RkMjIuLjliYmE3
NDM5YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0m
IHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUp
Ci0gICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgIGV4
aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1Zh
bHVlUmVncyhHUFJJbmZvOjpyZWdUMCksIEdQUkluZm86OnJlZ1QxKTsKICAgICB9CiAKICAgICAv
LyBNYXRlcmlhbGl6ZSBhbGwgb2JqZWN0cy4gRG9uJ3QgbWF0ZXJpYWxpemUgYW4gb2JqZWN0IHVu
dGlsIGFsbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RC
dWlsZGVyLmNwcAppbmRleCBkNWI5YWQyMmY5NS4uN2FkMDY1ZGNhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC00MTUs
NyArNDE1LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9v
bCAoY29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KIAogICAgICAgICB2b2lkKiB3cmFw
cGVkQWRkcmVzcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGxhYmVsSW5kZXggPSAwOwotICAgICAg
ICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0JpZ0ludCgpKSB7
CisgICAgICAgIGlmICghbm9kZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzSGVh
cEJpZ0ludCgpKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2Vs
bC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgICAgIGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1
cmUtPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgICAgIGZsYWdzIHw9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihOb2RlRmxhZ3M6OkludGVybmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKaW5kZXggOTlmYTQwZWJiNDQuLmYyN2VlZjRi
NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGlu
ZXMuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKLSNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIK
ICNpbmNsdWRlICJWTS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVj
aXNlQWxsb2NhdGlvbi5jcHAKaW5kZXggNmNiYWVjMTY0NDMuLjAzMjQ2OWZlNjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
KyNpbmNsdWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDgxMzMyZDIxMDkx
Li42MWYyZTc2NWYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0xODcsOCArMTg3
LDggQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjdElkLAogICAgIH0KIAogICAgIC8vIEJpZ0ludCBwcmV2
aWV3LgotICAgIGlmIChjZWxsLT5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIHJlc3VsdFN0cmluZyA9
IEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGFzQmlnSW50KGNlbGwpLCAxMCk7CisgICAgaWYg
KGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50
Ojp0cnlHZXRTdHJpbmcodm0sIGFzSGVhcEJpZ0ludChjZWxsKSwgMTApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCBiZjI5ODRhMTI4OS4uZGYxMDMyNDM0ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjA1
LDcgKzIwNSw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU3RyaW5nVHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6Ci0gICAgY2FzZSBCaWdJbnRU
eXBlOgorICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJy
b3IoZ2xvYmFsT2JqZWN0LCAgYXJndW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRl
eCBlYjgwODJlOWI3Yi4uNDhlYWE0MDNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmUKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBm
bG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBp
ZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZh
bHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVz
dWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAg
ZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNjk4LDYgKzY5
OCw4IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZN
JiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5i
b3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAg
IC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAo
dmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMy
KHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpz
VHJ1ZQogICAgIC8vIH0KQEAgLTcwNiw3ICs3MDgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZQogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRv
IGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRv
IGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRv
IGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwog
CiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBB
U1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFs
aWRHUFJSZWcpOwpAQCAtNzI5LDcgKzczMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAg
ICAgY29tcGFyZVB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BS
KCksIHJlc3VsdCwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNC
aWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICBsb2Fk
MzIoQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgp
KSwgcmVzdWx0KTsKICAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVz
dWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsK
QEAgLTc1Miw2ICs3NTQsMTUgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFs
dWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICBkb25lLmFw
cGVuZChqdW1wKCkpOwogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5v
dE51bWJlcih2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCByZXN1
bHQpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgIGNvbXBh
cmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJbW0zMigwKSwg
cmVzdWx0KTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5s
aW5rKHRoaXMpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQpAQCAtNzY3LDcg
Kzc3OCw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFu
Y2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0
aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlz
IGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJ
bnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0lu
dCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBl
bHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11
bmRlZmluZWQKQEAgLTc3Nyw2ICs3ODgsOCBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFz
c2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAg
IC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2
YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1
ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJl
c3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAg
ICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03ODYsNyArNzk5LDcgQEAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUo
Vk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBh
eWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBh
eWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQo
dmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgxNyw3ICs4MzAsNyBAQCBBc3Nl
bWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoUHRyKGludmVydCA/
IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbVB0cihqc0Vt
cHR5U3RyaW5nKHZtKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJ
bnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICB0cnV0aHku
YXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRkcmVzcyh2YWx1
ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIGRvbmUu
YXBwZW5kKGp1bXAoKSk7CiAKQEAgLTg0Miw2ICs4NTUsMTUgQEAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWwKICAgICB9CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90
TnVtYmVyKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCBzY3Jh
dGNoKTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaCk7CisgICAgdHJ1
dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHNjcmF0Y2gp
KTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRo
aXMpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRy
dXRoeS5hcHBlbmQoYnJhbmNoNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3By
KCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpKTsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA2
NjhmMGU1YWMxNS4uZGI2NDhhYmJiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyOSw3ICs5MjksMzcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlm
CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEp1bXAgYnJhbmNoSWZCaWdJ
bnQzMihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0g
SGF2ZVRhZ1JlZ2lzdGVycykKKyAgICB7CisgICAgICAgIEp1bXAgbnVtYmVyID0gYnJhbmNoSWZO
dW1iZXIoZ3ByLCBtb2RlKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5jaElmQmlnSW50
MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICBudW1iZXIubGluayh0aGlz
KTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZC
aWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUo
Z3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgdGVtcEdQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIEp1bXAg
YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJl
ZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJ
Zk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisg
ICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAg
bW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFs
LCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBt
YWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4K
ICAgICBKdW1wIGJyYW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGJyYW5jaDgoCkBAIC05NTEsMTMgKzk4MSwxNCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9Ci0gICAgCisK
KyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IHJl
cXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNoSWZTdHJpbmco
R1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTdHJpbmdUeXBl
KTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJu
IGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNo
SWZTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBT
eW1ib2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQotICAgIEp1
bXAgYnJhbmNoSWZCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShj
ZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQoR1BSUmVn
IGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsg
fQorICAgIEp1bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBi
cmFuY2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJ
Zk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShj
ZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlw
ZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0
dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICAKQEAg
LTEzMzgsNiArMTM2OSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmso
dGhpcyk7CiAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgdm9pZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICB1
cnNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICB9CisK
KyAgICB2b2lkIGJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBsc2hpZnQ2
NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAgICBvcjY0KFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQogI2VuZGlmCiAK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTcxOCw3ICsxNzYyLDcgQEAgcHVibGljOgogICAg
ICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7
CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNl
IGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2lu
dCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcyOSw2ICsxNzcz
LDggQEAgcHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9
IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisg
ICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVy
biBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRl
ZmluZWQKICAgICAgICAgLy8gfQpAQCAtMTc2MCwxMCArMTgwNiwxMCBAQCBwdWJsaWM6CiAKICAg
ICAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBi
cmFuY2hJZk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0g
YnJhbmNoSWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5
cGU6OkJpZ0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAg
ICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlw
ZTo6U3ltYm9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7
CkBAIC0xNzc5LDYgKzE4MjUsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4g
PSBicmFuY2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlw
ZW9mVHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIEp1bXAgbm90QmlnSW50MzIgPSBicmFuY2hJ
Zk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgICAgIGZ1bmN0
b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBmYWxzZSk7CisgICAgICAgIG5vdEJpZ0ludDMyLmxpbmso
dGhpcyk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6VW5k
ZWZpbmVkLCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYzZl
NjFiODliZjkuLmQ1ZWE5OWYzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0z
NzAsNiArMzcwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfaXNfdW5kZWZpbmVkX29yX251bGwpCiAgICAgICAgIERFRklORV9PUChv
cF9pc19ib29sZWFuKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfbnVtYmVyKQorICAgICAgICBE
RUZJTkVfT1Aob3BfaXNfYmlnX2ludCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX29iamVjdCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2lzX2NlbGxfd2l0aF90eXBlKQogICAgICAgICBERUZJTkVf
T1Aob3BfamVxX251bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2NzE2NjYxZGY0Zi4u
NDFmNmJmODQ4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI3LDYgKzUyNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25z
dCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmlu
ZGV4IDNhMzJjMzI2MTg5Li5mNTBjMzAzMDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NzYsNiArNDc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
TmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRO
ZWdJQyogbmVnYXRlSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQcm9maWxlKTsK
ICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgbmVnYXRl
SUMpOworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVy
YXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAg
ZW1pdE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIH0KIApA
QCAtNDg0LDYgKzQ4NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IGJpdHdpc2VfY2FzdDxKSVRO
ZWdJQyo+KG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5nZXQoY3VycmVudEluc3RydWN0aW9uKSk7Cisg
ICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZh
bHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0
aElDU2xvdzxPcE5lZ2F0ZT4obmVnSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJp
dGhOZWdhdGVQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBv
cGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZmRlMDBiY2M4YzkuLmJjOGI1NzRhMDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFy
b2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4Myw2ICsyODMsMzQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9v
cF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSXNCaWdJbnQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICBKdW1wIGlzQ2Vs
bCA9IGJyYW5jaElmQ2VsbChyZWdUMCk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVl
OjpCaWdJbnQzMk1hc2spLCByZWdUMSk7CisgICAgYW5kNjQocmVnVDEsIHJlZ1QwKTsKKyAgICBj
b21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcp
LCByZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsK
KyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisKKyAgICBpc0NlbGwubGluayh0aGlzKTsKKyAgICBj
b21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihIZWFwQmlnSW50VHlwZSksIHJlZ1QwKTsKKyAgICBib3hCb29sZWFu
KHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworCisgICAgZG9uZS5saW5rKHRoaXMpOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyNlbHNlCisgICAgLy8gSWYgd2Ugb25s
eSBoYXZlIEhlYXBCaWdJbnRzLCB0aGVuIHdlIGVtaXQgaXNDZWxsV2l0aFR5cGUgaW5zdGVhZCBv
ZiBpc0JpZ0ludC4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9
CisKIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKQEAgLTU3MCwyOCArNTk4LDUxIEBAIHZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3BTdHJpCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29k
ZS5tX3JoczsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMy
LCByZWdUMSk7Ci0gICAgCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBj
b3ZlciBzdHJpbmdzKS4KKworICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcg
J3R5cGUnIHRvIGJlIFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQg
aXMgRG91YmxlKQorICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIHJlc3VsdCA9IChsZWZ0ID09
IHJpZ2h0KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKGxl
ZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
IGRvbmU6CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVu
dCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEg
c2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1
aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUg
dHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5
IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAK
KyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUg
aXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUg
b3IgZXF1YWwgMTw8NTAuCisgICAgbW92ZSAocmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlIChyZWdU
MSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJp
dHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdUNSwg
cmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9yNjQo
cmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJl
Z1QzLCByZWdUNSkpOworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgcmVnVDEsIHJlZ1Q1
KTsKKyAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDUpOworCiAgICAg
bW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBKdW1wIHNsb3cg
aWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cyku
CisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gc29t
ZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmlnSW50MzIsIHdlIG9ubHkg
bmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmluZ3MKKyNlbHNlCisgICAg
Ly8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBv
cjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwo
cmVnVDIpKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBG
aXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVz
dAotICAgIC8vIGlmIGl0J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBicmFuY2hJZklu
dDMyKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMCkpOwotICAg
IGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGJyYW5jaElmSW50MzIocmVn
VDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1QxKSk7Ci0gICAgcmlnaHRP
Sy5saW5rKHRoaXMpOwogCi0gICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpT
dHJpY3RFcSkKLSAgICAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsK
LSAgICBlbHNlCi0gICAgICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdU
MCk7Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKLQotICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
aWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpCisgICAgICAgIHhv
cjY0KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xlYW4ocmVnVDUsIEpTVmFs
dWVSZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1Q1
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYxNCwyNCArNjY1LDQ4IEBAIHZvaWQgSklUOjpjb21waWxl
T3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29t
cGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwg
cmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0
byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJs
ZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAg
IGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAg
ICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBub3RUYWtlbjsKKyAgICAqLworCisgICAgLy8g
VGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3Vi
bGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUg
bmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIK
KyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4g
YWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGln
aCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8
PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRv
dWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgbW92ZSAocmVnVDAsIHJlZ1QyKTsKKyAg
ICBtb3ZlIChyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxv
d2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBh
ZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUp
OworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92
ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9IGJyYW5jaDY0
KEVxdWFsLCByZWdUMCwgcmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVx
VHlwZTo6U3RyaWN0RXEpCisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdldCk7CisKICAg
ICBtb3ZlKHJlZ1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEp1bXAgc2xv
dyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRz
KS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBz
b21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25s
eSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworI2Vsc2UKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgogICAg
IG9yNjQocmVnVDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2Vs
bChyZWdUMikpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4gRmly
c3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRlc3QK
LSAgICAvLyBpZiBpdCdzIGEgZG91YmxlLgotICAgIEp1bXAgbGVmdE9LID0gYnJhbmNoSWZJbnQz
MihyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDApKTsKLSAgICBs
ZWZ0T0subGluayh0aGlzKTsKLSAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1Qx
KTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwotICAgIHJpZ2h0T0su
bGluayh0aGlzKTsKLQotICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3Ry
aWN0RXEpCi0gICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCByZWdUMCksIHRh
cmdldCk7Ci0gICAgZWxzZQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdU
MSwgcmVnVDApLCB0YXJnZXQpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlw
ZTo6TlN0cmljdEVxKSB7CisgICAgICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOworICAgICAg
ICBhcmVFcXVhbC5saW5rKHRoaXMpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfanN0
cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02ODYsNyAr
NzYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywg
cmVnVDApOwogCiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1
bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IGIxMWY2NTVmY2I2Li41NmViZmIwODcx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApA
QCAtMjg4LDYgKzI4OCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVn
VDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgLy8gV2UgZW1pdCBpc19jZWxsX3dpdGhfdHlw
ZSBpbnN0ZWFkLCBzaW5jZSBCaWdJbnQzMiBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBwbGF0
Zm9ybXMuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtODY2LDcgKzg3Miw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVn
VDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAg
ICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAyMmI5YTFk
MWU5Yy4uMmRkZGYzOTg1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMTI5Niw2ICsxMjk2LDE5IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
CiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGdsb2JhbE9iamVjdCwgc3JjMSwgc3Jj
Mik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIGhlYXBCaWdJbnQsIGludDMyX3Qgc21hbGxJbnQpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoaGVhcEJpZ0ludC0+aXNIZWFwQmln
SW50KCkpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4oaGVhcEJpZ0ludCkt
PmVxdWFsc1RvSW50MzIoc21hbGxJbnQpOworfQorI2VuZGlmCisKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoUHJvZmlsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1Zh
bHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTI4MTUsNiArMjgyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0
dXJuIHByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFy
aXRoUHJvZmlsZSk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0
aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmln
SW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5k
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4MjcsOCArMjg0MSwx
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVy
YW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVl
ID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5U
X01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbVZh
bHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAg
ICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkp
KTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTI4MzYsNiArMjg1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQogCisvLyBGSVhN
RTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUs
IHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjg1MCwx
MCArMjg3NCwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbVZh
bHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlN
aW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmlt
VmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
LXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBC
aWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWlu
dXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKICAgICB9CiAKQEAgLTI4NjQsNiArMjg5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhN
RTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUs
IHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lD
KiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODg0LDkg
KzI5MjAsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5l
Z2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVlIHBy
aW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZh
bHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0g
SU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1
bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFs
dWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpOwogICAgICAgICBhcml0
aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTI4OTgsNiArMjk0Niw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisv
LyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVO
ZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyog
bmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjkxNyw5ICsy
OTY2LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHByaW1WYWx1
ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhpcyBmdW5jdGlvbiBwcm9maWxlIHRoZSBhcmd1bWVu
dCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAg
ICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1
ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJp
bVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVl
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDYwMGZjYTI5ZGMyLi4yMDliM2MzZjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBK
U0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogaGVh
cEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lOVEVSTkFMOwogI2Vsc2UKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogbGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5k
ZXggNTI0MzVhNjYxMjAuLjJhMmJiOTlmOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xMzYsNiArMTM2LDEyIEBA
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAwCiAjZW5kaWYKIAorI2lmIFVTRShCSUdJ
TlQzMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fQklHSU5UMzIgMAorI2VuZGlmCisKICNpZiBDUFUoQUREUkVTUzY0KQogI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMDI5NTU0MjE4OS4u
ZjJhZmIwYmMyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5Niw2ICsxOTYsMTIgQEAgaWYgSlNWQUxVRTY0CiAg
ICAgY29uc3QgVmFsdWVOdWxsICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6OlZhbHVlTnVsbAog
ICAgIGNvbnN0IFRhZ051bWJlciAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpOdW1iZXJUYWcK
ICAgICBjb25zdCBOb3RDZWxsTWFzayAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Tm90Q2VsbE1h
c2sKKyAgICBpZiBCSUdJTlQzMgorICAgICAgICBjb25zdCBUYWdCaWdJbnQzMiA9IGNvbnN0ZXhw
ciBKU1ZhbHVlOjpCaWdJbnQzMlRhZworICAgICAgICBjb25zdCBNYXNrQmlnSW50MzIgPSBjb25z
dGV4cHIgSlNWYWx1ZTo6QmlnSW50MzJNYXNrCisgICAgZW5kCisgICAgY29uc3QgTG93ZXN0T2ZI
aWdoQml0cyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzCisgICAgY29uc3Qg
Q29uc3RhbnRPbmUgPSAxCiBlbHNlCiAgICAgY29uc3QgSW50MzJUYWcgPSBjb25zdGV4cHIgSlNW
YWx1ZTo6SW50MzJUYWcKICAgICBjb25zdCBCb29sZWFuVGFnID0gY29uc3RleHByIEpTVmFsdWU6
OkJvb2xlYW5UYWcKQEAgLTUyMSw2ICs1MjcsNyBAQCBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNv
bnN0ZXhwciBKU0Z1bmN0aW9uVHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5
VHlwZQogY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBl
CiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmplY3RUeXBlCitjb25z
dCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQogCiAjIFRoZSB0eXBl
ZCBhcnJheSB0eXBlcyBuZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBi
ZWNhdXNlIG9mIHRoZSBtYW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0
X2J5X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMzQxNjgwYWJlZTguLjEyYTRl
NTY2NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTg0NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lz
X3VuZGVmaW5lZF9vcl9udWxsLCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0
CiBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVx
dWFsaXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIGNyZWF0ZUJvb2xlYW4pCiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUl
LCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAg
ICAgIGdldChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQyLCB0MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbwor
ICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
ICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQp
OworICAgICAgICAjIGlmIChyZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAg
ICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0Owor
CisgICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCBy
aWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRo
YXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJh
bmNoSWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMg
YW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywg
bGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1i
ZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAg
ICAgICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCiAgICAgICAg
IG1vdmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAg
ICAgICAgbW92ZSBMb3dlc3RPZkhpZ2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAg
ICAgICBhZGRxIHQ1LCB0MworICAgICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgQ29u
c3RhbnRPbmUsIHQ1LCB0NQorICAgICAgICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAg
Y3FlcSB0MCwgdDEsIHQ1CisgICAgICAgIGJ0cW56IHQ1LCB0NSwgLmRvbmUgI2lzIHRoZXJlIGEg
YmV0dGVyIHdheSBvZiBjaGVja2luZyB0NSAhPSAwID8KKworICAgICAgICBtb3ZlIHQwLCB0Mgor
ICAgICAgICAjIFRoaXMgYW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5vdCBmb3IgQmlnSW50MzIg
KHNpbmNlIGl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8gYmUgc3RyaWN0RXF1YWwg
dG8gYSBub24tQ2VsbCkKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwgbm90
Q2VsbE1hc2ssIC5zbG93Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sKLSAg
ICAgICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAgICBi
cWFlcSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSwotICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFn
LCAuc2xvdwotICAgIC5yaWdodE9LOgotICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEs
IHQwKQotICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKLSAgICAgICAgcmV0dXJuKHQwKQorCisg
ICAgLmRvbmU6CisgICAgICAgIGNyZWF0ZUJvb2xlYW4odDUpCisgICAgICAgIHJldHVybih0NSkK
IAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFt
ZSUpCkBAIC04NzEsMzMgKzg5NSw1MyBAQCBlbmQKIAogCiBzdHJpY3RFcU9wKHN0cmljdGVxLCBP
cFN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcWVxIGxlZnQsIHJp
Z2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVlRmFsc2UsIG9w
ZXJhbmQgZW5kKQogCiAKIHN0cmljdEVxT3AobnN0cmljdGVxLCBPcE5zdHJpY3RlcSwKLSAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FuZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQp
CisgICAgbWFjcm8gKG9wZXJhbmQpIHhvcnEgVmFsdWVUcnVlLCBvcGVyYW5kIGVuZCkKIAogCi1t
YWNybyBzdHJpY3RFcXVhbGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFs
aXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBqdW1wSWZFcXVhbCwganVtcElmTm90RXF1YWwpCiAgICAgbGxpbnRPcFdpdGhK
dW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1w
LCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgZ2V0KG1fcmhzLCB0
MykKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDMsIHQxKQorCisgICAgICAgICMgQXQgYSBo
aWdoIGxldmVsIHdlIGRvCisgICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyBpZiAobGVm
dCA9PSByaWdodCkKKyAgICAgICAgIyAgICAgZ290byBqdW1wVGFyZ2V0OworICAgICAgICAjIGlm
IChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290byBzbG93
UGF0aDsKKyAgICAgICAgIyBnb3RvIG90aGVySnVtcFRhcmdldAorCisgICAgICAgICMgVGhpcyBm
cmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3
aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVs
eSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAg
ICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRk
aW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBi
aXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8
PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBvbmx5
IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCiAgICAgICAgIG1vdmUgdDAsIHQyCi0gICAg
ICAgIG9ycSB0MSwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAgICAgbW92ZSBMb3dlc3RP
ZkhpZ2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAgICBhZGRxIHQ1LCB0Mwor
ICAgICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgQ29uc3RhbnRPbmUsIHQ1LCB0NQor
ICAgICAgICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgYnFlcSB0MCwgdDEsIC5lcXVh
bAorCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFu
ICdvcicgaWYgbm90IGZvciBCaWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9y
IGEgQ2VsbCB0byBiZSBzdHJpY3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQx
LCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEg
dDAsIG51bWJlclRhZywgLmxlZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xv
dwotICAgIC5sZWZ0T0s6Ci0gICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0g
ICAgICAgIGJ0cW56IHQxLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAg
IGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAgICAgIGRpc3BhdGNo
KCkKIAotICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCisgICAg
ICAgIGp1bXBJZk5vdEVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQorCisgICAg
LmVxdWFsOgorICAgICAgICBqdW1wSWZFcXVhbChqdW1wLCBtX3RhcmdldExhYmVsLCBkaXNwYXRj
aCkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8l
b3Bjb2RlTmFtZSUpCkBAIC05MDcsMzMgKzk1MSwzNiBAQCBlbmQKIAogCiBzdHJpY3RFcXVhbGl0
eUp1bXBPcChqc3RyaWN0ZXEsIE9wSnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBicWVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQotCisgICAgbWFjcm8gKGp1bXAs
IHRhcmdldExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJlbCkgZW5kLAorICAgIG1hY3Jv
IChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogCiBzdHJpY3RF
cXVhbGl0eUp1bXBPcChqbnN0cmljdGVxLCBPcEpuc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJxbmVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQorICAgIG1hY3Jv
IChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kLAorICAgIG1hY3Jv
IChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGp1bXAodGFyZ2V0TGFiZWwpIGVuZCkKIAog
bWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQog
ICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNy
byB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1f
Yml0c1t0MV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAg
ZW5kCiAKLSAgICAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MwotICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4g
dDEsIHNyY0RzdCBpbiB0MwotICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAg
ICAgaW50ZWdlck9wZXJhdGlvbih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQz
Ci0gICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDAsIDhdCi0gICAgICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZShBcml0aFByb2ZpbGVJbnQpCi0gICAgICAgIGRpc3BhdGNoKCkKKyAgICBnZXQobV9zcmNE
c3QsIHQwKQorICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDEKKyAgICBtZXRhZGF0YSh0MiwgdDMp
CisgICAgIyBzcmNEc3QgaW4gdDEsIG1ldGFkYXRhIGluIHQyCisgICAgIyBGSVhNRTogdGhlIG5l
eHQgbGluZSBqdW1wcyB0byB0aGUgc2xvdyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5z
dGVhZCBoYXZlIGEgZGVkaWNhdGVkIHBhdGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICBicWIgdDEs
IG51bWJlclRhZywgLnNsb3cKKyAgICBpbnRlZ2VyT3BlcmF0aW9uKHQxLCAuc2xvdykKKyAgICBv
cnEgbnVtYmVyVGFnLCB0MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCisgICAgdXBkYXRl
QXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKKyAgICBkaXNwYXRjaCgpCiAKICAgICAuc2xv
dzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAg
ICBkaXNwYXRjaCgpCiAgICAgZW5kKQorCiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3Rv
X251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
QEAgLTEyNzksNiArMTMyNiwxOSBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9w
SXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgcmV0dXJu
KHQxKQogZW5kKQogCitsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50
LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fb3BlcmFuZCwg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCisgICAgYnRxbnog
dDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3Qw
XSwgSGVhcEJpZ0ludFR5cGUsIHQxCisgICAgb3JxIFZhbHVlRmFsc2UsIHQxCisgICAgcmV0dXJu
KHQxKQorLm5vdENlbGxDYXNlOgorICAgIGFuZHEgTWFza0JpZ0ludDMyLCB0MAorICAgIGNxZXEg
dDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIHJldHVybih0
MCkKK2VuZCkKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXND
ZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0
dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCA4NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVl
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBA
IC04Myw2ICs4MywxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VC
aWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIGlmIChyYWRpeCA9
PSAxMCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiaWdJbnQgPSBKU0JpZ0ludDo6cGFy
c2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6
RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6
VW5zaWduZWQpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisKICAgICAvLyBGSVhN
RTogV2UgYXJlIGFsbG9jYXRpbmcgYSBKU0JpZ0ludCBqdXN0IHRvIGJlIGFibGUgdG8gdXNlCiAg
ICAgLy8gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyB3aGVuIHJhZGl4IGlzIG5vdCAxMC4KICAgICAv
LyBUaGlzIGNyZWF0ZXMgc29tZSBHQyBwcmVzc3VyZSwgYnV0IHNpbmNlIHRoZXNlIGlkZW50aWZp
ZXJzCkBAIC05MCwxMSArOTQsMTUgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5h
OjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICAvLyBp
dCB3b250IGJlIG11Y2ggcHJvYmxlbWF0aWMsIGdpdmVuIHN1Y2ggY2FzZXMgYXJlIHZlcnkgcmFy
ZS4KICAgICAvLyBUaGVyZSBpcyBhIGxvdCBvZiBvcHRpbWl6YXRpb25zIHdlIGNhbiBhcHBseSBo
ZXJlIHdoZW4gbmVjZXNzYXJ5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc2MjcKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIs
IHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2Rl
OjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAg
ICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGJpZ0lu
dCwgMTApKSk7CisgICAgSlNCaWdJbnQqIGhlYXBCaWdJbnQ7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICBoZWFwQmlnSW50ID0gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgZWxzZQor
I2VuZGlmCisgICAgICAgIGhlYXBCaWdJbnQgPSBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisKKyAg
ICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0lu
dDo6dHJ5R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50LCAxMCkpKTsKICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAg
LTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmZmM2Y3
OTcyMGIuLjVmMGQ1NDg0ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsMTggKzc1LDYgQEAgdm9pZCBCaWdJbnRDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJbnRQcm90b3R5cGUqIGJpZ0ludFBy
b3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGJvb2wgaXNTYWZlSW50ZWdlcihK
U1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVudC5pc0ludDMyKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1bWVudC5pc0RvdWJsZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0gYXJndW1lbnQuYXNEb3VibGUoKTsK
LSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBudW1iZXIgJiYgc3RkOjphYnMobnVtYmVyKSA8
PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBB
U1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CkBAIC05NCwyMCArODIsMjQgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYgKGFyZ3VtZW50LmlzQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQpOwotICAgIAorCisgICAgaWYgKGFy
Z3VtZW50LmlzQm9vbGVhbigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgYXJndW1lbnQuYXNC
b29sZWFuKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJp
bmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9i
YWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3Vt
ZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVu
dC5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
YXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZp
bmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0g
ICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3Ry
aW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOwotICAgIH0pKTsKKyAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBl
IGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTExOSwyMCArMTExLDIyIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1pdGl2ZS5pc051bWJlcigpKSB7Ci0gICAgICAg
IGlmICghaXNTYWZlSW50ZWdlcihwcmltaXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKLSAgICAgICAgCi0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJ
bnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpIHsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0Jp
Z0ludDMyLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigp
KSk7CisjZW5kaWYKKyAgICB9CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc1VJbnQzMigpKQot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgcHJpbWl0aXZlLmFzVUludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlzRG91YmxlKCkp
IHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHByaW1pdGl2ZS5hc0RvdWJsZSgpOworICAgICAg
ICBpZiAodHJ1bmMobnVtYmVyKSAhPSBudW1iZXIgfHwgc3RkOjphYnMobnVtYmVyKSA+IG1heFNh
ZmVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGEgc2FmZSBpbnRl
Z2VyIl9zKSk7CiAKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0lu
dDMyT3JIZWFwLCB2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkp
KSk7CiAgICAgfQotICAgIAorCiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQo
Z2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAppbmRleCBlZTAwNDVkYWM5Ni4uZTYx
OTgyYjkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2Jq
ZWN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBM
aW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xhc3NJbmZvIEJpZ0ludE9iamVjdDo6c19pbmZv
ID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAKIAotQmlnSW50T2JqZWN0KiBCaWdJbnRPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmlnSW50
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+
KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+YmlnSW50T2JqZWN0U3Ry
dWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGJpZ0ludCk7CkBAIC00
OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6QmlnSW50T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKaW5kZXggNDRmYzc2ZmJkZjkuLmE2MzU0YTE2
ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSAr
NDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9k
ZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmln
SW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50
ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1
ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApp
bmRleCBkYjRhNjE4ODk5ZC4uZmI1YjlmYWIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDEyICs3OSwyNCBAQCB2
b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShW
TSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBG
SVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJl
LWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0
aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVl
LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0
aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVl
LmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2Fz
dDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAg
ICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJ
bnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1
ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIo
KSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk5LDggKzExMSw2IEBA
IHN0YXRpYyBKU1ZhbHVlIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBi
ZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwogCi0gICAgQVNTRVJUKHZhbHVlKTsKLQog
ICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTExOCw2ICsxMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJp
bmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1
bmN0aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhlIHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5k
cyBhbmQgc2ltaWxhciB0aGluZ3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0lu
dFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50
UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0
NGQ4ZmI0YjQyMi4uNzQzZWM4YzFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRl
ICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcwLDEzICs0NjksOCBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cEluYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3Qp
LmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50
ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0luYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGds
b2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxz
ZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlh
bnQpICsgMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3Ny
Y0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC00ODUsMTMgKzQ3OSw4IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wRGVjPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3Ny
Y0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZh
cmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzRGVjKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50Ojpk
ZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0
VmFyaWFudCkgLSAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2Rl
Lm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTUwOCw3ICs0OTcsMTUgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTVmEKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAg
ICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlm
IChyZXN1bHQuaXNOdW1iZXIoKSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkK
KyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdC5pc051bWJlcigpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAg
ICAgICAgICAgICBpZiAob3BlcmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmls
ZS5zZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKTsKQEAgLTUyOCwxMCArNTI1LDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQo
KTsKLSAgICBlbHNlCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7Cisg
ICAgfQogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJp
dGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0Niw4
ICs1NDAsMjIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1i
ZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2
bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmlt
VmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUu
YmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVl
KTsKKyAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAg
ICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3Vs
dCwgb3BlcmFuZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1
ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQs
IHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0
YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01ODUsOCArNTkzLDEyIEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2Jz
ZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmln
SW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHBy
b2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVs
c2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRC
aWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwOCwxMyArNjIwLDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29k
ZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBy
ZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBX
VEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVz
dWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTcsNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5k
IGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigp
IG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlk
ZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5k
cyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhj
ZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbXVsKQpAQCAtNjcyLDI0ICs2NzksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNW
YWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVl
IHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnRO
dW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3Vs
dCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3Ao
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0
cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6
OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmlj
KSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVB
cml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywg
cmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY5Miw4IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERp
dj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgp
OwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwot
ICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxPYmpl
Y3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lU
SF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxl
Rm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVm
dCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6
Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwog
ICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQ
cm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3Vs
dCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs3MDUsOSBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7
CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAg
ICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBh
dXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJF
VFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBy
ZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6
OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJs
ZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAg
ICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAg
LTc1OCwyNSArNzE2LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5
dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVj
b2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRp
YXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0K
LSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAg
IGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJO
KGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzI3LDEw
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5t
X2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3Jo
cykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHRO
dW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0
U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsK
LSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4o
bGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzM5LDEw
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5t
X2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3Jo
cykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHRO
dW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWdu
ZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAg
ICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQg
b3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihX
VEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0
TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkK
QEAgLTg1MCw3OSArNzY4LDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7
CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwot
ICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFs
dWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04o
KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51
bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5v
dChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQp
OwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpz
VmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJf
dD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xv
YmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkK
IHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCku
dG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0
byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0
ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxF
RChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQz
Ml90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9i
aXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRv
cj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVl
KCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
fHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAg
ICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0
ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VU
X0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9G
SUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxp
bnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VP
cihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAg
ICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BC
aXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5q
c1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNW
YWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9
CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBh
dXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVS
Tl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6
OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jp
dHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAKaW5kZXggOWMzNDU0NDJmNTQuLjAyYTViNzFkYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6
OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpT
QmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2
bSkKQEAgLTE4OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpT
R2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4g
Y29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0Jp
Z0ludDo6c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigp
KSB7Ci0gICAgICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0
IDw9IDkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsK
LSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUlu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VN
b2RlIHBhcnNlck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUp
CiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxP
YmplY3QsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0
dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwg
cGFyc2VyTW9kZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgs
IEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBT
dHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBh
cnNlSW50U2lnbiBzaWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4g
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAw
LCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3Ry
aW5nKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJz
MTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9k
ZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5n
VG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNW
YWx1ZSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RyaW5nVmlldyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMs
IEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQxLDIz
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1F
OiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQg
aGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGds
b2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+
c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBT
aWduT3B0aW9uOjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3Vi
T25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0
cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhN
RTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50
IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1Yihn
bG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+
aXNaZXJvKCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZUZyb20oZ2xvYmFs
T2JqZWN0LT52bSgpLCAxKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0
dXJuIGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJl
dHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlNpZ25lZCk7
CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUzMiw3ICs1MjYsNyBAQCBKU0JpZ0lu
dCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIHgsIEpTQmlnSQogICAgIGlmICh4LT5zaWduKCkpCiAgICAgICAgIHN0ZDo6c3dhcCh4
LCB5KTsKICAgICAKLSAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkK
KyAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpCiAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1
dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4
LCB5MSk7CkBAIC0xNjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nQmFz
ZVBvd2VyT2ZUd28oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogU3Ry
aW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgLy8gRklYTUU6
IFtKU0NdIFJldmlzaXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3MQogICAgIFZl
Y3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFk
aXggPD0gMzYpOwpAQCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0
aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLAog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKK0pTVmFsdWUgSlNC
aWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAg
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTE4MTAsNyArMTgwNCw3IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJX
aGl0ZVNwYWNlKGRhdGFbcF0pKQogICAgICAgICArK3A7CiAKLSAgICAvLyBDaGVjayBSYWRpeCBm
cm9tIGZyaXN0IGNoYXJhY3RlcnMKKyAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZpcnN0IGNoYXJh
Y3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicpKQogICAgICAgICAgICAgcmV0
dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVy
cm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ246OlVuc2lnbmVkLCBQYXJzZUludE1vZGU6OkRpc2Fs
bG93RW1wdHlTdHJpbmcpOwpAQCAtMTgyNCwyNCArMTgxOCwxOCBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0
YSwgdW5zaQogCiAgICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVk
OwogICAgIGlmIChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKLSAg
ICAgICAgICAgICsrcDsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAg
ICAgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CiAgICAgICAgICAgICBzaWduID0gUGFyc2VJbnRTaWdu
OjpTaWduZWQ7CiAgICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlm
IChkYXRhW3BdID09ICcrJykKKyAgICAgICAgICAgICsrcDsKICAgICB9CiAKLSAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAx
MCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwotCi0gICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5p
c1plcm8oKSkKLSAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpT
aWduZWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFs
T2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgs
IEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJ
bnRNb2RlIHBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVy
cm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkK
IHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwogICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4
OwpAQCAtMTg1Miw3ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICAgICAg
QVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJv
clBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQogICAgICAgICAgICAgdGhyb3dWTUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxl
ZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICAvLyBTa2lwcGluZyBsZWFk
aW5nIHplcm9zCkBAIC0xODY2LDQ0ICsxODU0LDg2IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0
CiAKICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CiAKLSAgICBpZiAocCA9PSBsZW5ndGgpCisg
ICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBj
cmVhdGVaZXJvKHZtKTsKLQotICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEw
ID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTAp
OwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmln
SW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3Ro
IC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8g
cmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2Jh
bCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhh
dCBjYXNlLgotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVp
bnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxp
bWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBp
ZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0
ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAm
JiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsg
MTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHJlc3VsdC0+
aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0
PERpZ2l0PihkaWdpdCkpOworI2VuZGlmCiAgICAgfQogCi0gICAgcmVzdWx0LT5zZXRTaWduKHNp
Z24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQgPyB0cnVlIDogZmFsc2UpOwotICAgIGlmIChwID09
IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAvLyBU
aGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiog
bGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhM
aW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAg
ICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMTA6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMy
ID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRG
b3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBo
ZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAotICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIGlm
IChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQotICAg
ICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3Io
Z2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAg
dW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICB1
bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTAp
OworICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRp
eCkgLSAxMCk7CisgICAgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAg
d2hpbGUgKHAgPCBsZW5ndGgpIHsKKyAgICAgICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAg
IENoZWNrZWQ8aW50MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8
IGxlbmd0aCA7ICsraSwgKytwKSB7CisgICAgICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAg
ICAgICAgIG11bHRpcGxpZXIgKj0gcmFkaXg7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAn
MCcgJiYgZGF0YVtwXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3Bd
IC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8
IGxpbWl0YSkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7Cisg
ICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQor
ICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNl
TW9kZTo6VGhyb3dFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9i
YWxPYmplY3QpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNl
IFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKGRpZ2l0IDwgbXVsdGlwbGllci51bnNhZmVHZXQoKSk7CisKKyAgICAgICAgaWYgKCFoZWFw
UmVzdWx0KSB7CisgICAgICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAg
ZGlnaXQgKj0gLTE7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsKKyNlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGRpZ2l0KSk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IGhlYXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgaW5pdGlh
bExlbmd0aCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYg
d2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fu
bm90IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICAgICAgaWYg
KCFoZWFwUmVzdWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgICAgIGhlYXBSZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpX
aXRoWmVybyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaGVhcFJlc3VsdC0+
aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihtdWx0aXBsaWVyLnVuc2FmZUdl
dCgpKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisgICAgfQogCi0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2ln
bmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3VsdC0+cmlnaHRUcmltKHZtKTsKIH0KIAogaW5saW5l
IEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikKQEAgLTE5MjcsMTgg
KzE5NTcsMjAgQEAgYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1
ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgCi0gICAgaWYgKG51
bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMy
KCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJv
KCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2ln
bigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGln
aXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKLSAgICB9CisgICAg
aWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsc1RvSW50MzIobnVt
VmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAgICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0Rv
dWJsZSgpOwogICAgIHJldHVybiBjb21wYXJlVG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBh
cmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCitib29sIEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGlu
dDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPmlz
WmVybygpOworICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24o
KSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0
PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgs
IGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3Vi
bGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uOTdmYzkxNjUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDEzICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBQYXJzZUludE1vZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5n
IH07CiAgICAgZW51bSBjbGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAK
LSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJp
bmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpU
aHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwot
ICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3
LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAg
IHN0YXRpYyBKU0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdW
aWV3KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwg
U3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9k
ZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVk
KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1Zp
ZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7Cisg
ICAgc3RhdGljIEpTVmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdW
aWV3KTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1
bnNpZ25lZCByYWRpeCk7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVl
Rm9yU3RyaW5nKCk7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcmFkaXgpOwogICAgIAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEz
LDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1i
ZXIoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGlu
dDMyX3QpOwogICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgs
IEpTQmlnSW50KiB5KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAg
KzIyMiwxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCos
IFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRl
eCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUlu
dFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3Ry
aW5nKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwg
Q2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246
OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsK
IAogICAgIHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYs
IHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjU4LDkg
QEAgcHJpdmF0ZToKICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdp
dD4gbV9kYXRhOwogfTsKIAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVl
KQoraW5saW5lIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBB
U1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0Nl
bGwoKS0+aXNIZWFwQmlnSW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1
ZS5hc0NlbGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggNTQ4MDEwZWIxYzAuLjVjNWEzMmFjZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3Qu
aCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCkBAIC03MSw2ICs3Miwx
NCBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsK
ICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkgewor
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBu
b3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAg
IGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmlu
ZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAg
LTEwMSw2ICsxMTAsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlz
RmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9v
bGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
IChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAqdGhpcyk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9y
TnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVO
b3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMzEsMTQg
QEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJl
cihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2Uo
KSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihn
bG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFz
SW50MzIoKSkpOworICAgICAgICAvLyBGSVhNRTogdGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5
IHRvIGZpbmQgdG9UaGlzIGZvciBKU0JpZ0ludCwgYnV0IEkgY2FuJ3QgZXZlbiBmaW5kIHdoZXJl
IGl0IGlzIGRlZmluZWQuCisgICAgICAgIHJldHVybiBoZWFwQmlnSW50LT5tZXRob2RUYWJsZShn
ZXRWTShnbG9iYWxPYmplY3QpKS0+dG9UaGlzKGhlYXBCaWdJbnQsIGdsb2JhbE9iamVjdCwgZWNt
YU1vZGUpOworICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkp
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KQEAgLTEzMCw3ICsx
NTEsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIGlmIChpc0NlbGwoKSkgewogICAgICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1By
b3RvdHlwZSgpOwotICAgICAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgaWYgKGlzSGVhcEJp
Z0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBl
KCk7CiAgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+c3ltYm9sUHJvdG90eXBlKCk7CkBAIC0xNDAsNiArMTYxLDEwIEBAIEpTT2JqZWN0KiBK
U1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlclByb3RvdHlwZSgpOwog
ICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ym9vbGVh
blByb3RvdHlwZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQor
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKKyNlbmRpZgog
CiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAq
dGhpcykpOwpAQCAtMjg2LDYgKzMxMSw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFz
c3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJhd1Bv
aW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8o
KS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5wcmlu
dCgiU3RydWN0dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSks
IGNvbnRleHQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAg
ICBvdXQucHJpbnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRlcihh
c0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1
YkNsYXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiT2Jq
ZWN0OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiB3
aXRoIGJ1dHRlcmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVyZmx5
KCkpKTsKQEAgLTMwNSw2ICszMzIsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNz
dW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYg
KGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50
ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAg
ZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM0Nyw2ICszNzgsMTAg
QEAgdm9pZCBKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkp
CiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGlu
ZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBv
dXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM4NCwxOCArNDE5LDI1IEBAIEpTU3RyaW5nKiBK
U1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJv
b2wgcmV0dXJuRW1wCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MubnVsbFN0cmluZygp
OwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlmIChpc1N5bWJvbCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0
byBhIHN0cmluZyJfcyk7Ci0gICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgYXV0byBpbnRlZ2VyID0g
YmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50
ZWdlcikgPD0gOSkKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGludGVnZXIgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKHZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoaW50ZWdlcikpOwogICAgIH0KLSAgICBp
ZiAoaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRo
aXMpOwotICAgICAgICBpZiAoYXV0byBkaWdpdCA9IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZv
clN0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKLSAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3Qs
IDEwKSk7CisjZW5kaWYKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJ
bnQqIGJpZ0ludCA9IGFzSGVhcEJpZ0ludCgpOworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IHJhdGhlciBoYXZlIHR3byBjYXNlcyBoZXJlOiBvbmUtY2hhcmFjdGVyIHN0cmluZyB2cyBqc05v
blRyaXZpYWxTdHJpbmcgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyAgICAgICAgSlNTdHJpbmcqIHJl
dHVyblN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFs
T2JqZWN0LCAxMCkucmVsZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIHJl
dHVyblN0cmluZzsKICAgICB9CisgICAgaWYgKGlzU3ltYm9sKCkpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRv
IGEgc3RyaW5nIl9zKTsKKyAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyAgICB9CiAKICAg
ICBBU1NFUlQoaXNDZWxsKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDU4NmFmM2ZhYjM3Li5hOTExNDMwZTVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE3Niw2ICsxNzYsMTAgQEAgcHVi
bGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFn
IHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworICAgIGVu
dW0gSlNCaWdJbnRUYWcgeyBKU0JpZ0ludDMyT3JIZWFwIH07CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGVudW0gSlNCaWdJbnQzMlRhZyB7IEpTQmlnSW50MzIgfTsKKyNlbmRpZgogICAgIGVudW0g
RW5jb2RlQXNEb3VibGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OwogCiAgICAgSlNWYWx1ZSgpOwpA
QCAtMTg1LDYgKzE4OSwxMSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAg
ICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsK
KyNlbmRpZgorICAgIC8vIFJldHVybnMgZWl0aGVyIGEgQmlnSW50MzIgb3IgYSBIZWFwQmlnSW50
LgorICAgIEpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiwgaW50NjRfdCk7CiAKICAgICAvLyBOdW1i
ZXJzCiAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxOCw2ICsy
MjcsOSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBh
c0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBv
bmx5IGJlIGNhbGxlZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFz
SW50MzJGb3JBcml0aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1
dCBvdGhlcndpc2UgbGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzNyw2ICsyNDksOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsK
ICAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25z
dDsKKyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0
ZXIoKSBjb25zdDsKQEAgLTI0NSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0
cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRh
cmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAgLy8gRXh0cmFjdGluZyB0
aGUgdmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBXVEY6OlN0cmlu
ZyYpIGNvbnN0OwogICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNv
bnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2NCw5ICsyNzgsMTAgQEAg
cHVibGljOgogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lk
ZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8gYmVlbiBzZXQgaW4gdGhl
IENhbGxGcmFtZSBhbHJlYWR5LgogICAgIGRvdWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwotICAgIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHRvTnVtZXJpYyhK
U0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiB0
b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9O
dW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50
MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkg
Y29uc3Q7CiAKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0IGNhbiBiZSBkb25lIHdp
dGhvdXQgc2lkZSBlZmZlY3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJp
bWl0aXZlKCkgY29uc3Q7CkBAIC0zMTUsOCArMzMwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBz
dHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVx
dWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKTsKICAg
ICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
OwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKQEAgLTQxNCwxMSArNDI4LDIwIEBAIHB1Ymxp
YzoKICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAg
ICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxv
d2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQg
ZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRl
cnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZykgVW5k
ZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQgMyBtYXNrZWQgb3V0
IChVbmRlZmluZWRUYWcpLCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCiAgICAgICogICBz
YW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0
ZWQuCiAgICAgICoKICAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBh
dHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CiAgICAgICogaG9sZXMs
IGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGlu
dGVybmFsIHZhbHVlIG9mIDApLgorICAgICAqCisgICAgICogV2hlbiBVU0UoQklHSU5UMzIpLCB3
ZSBoYXZlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFs
bCAoMzItYml0IGF0IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAg
ICAqIFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRo
aW5nczoKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIElu
dGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1
c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNl
dCB0byB0cnVlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIg
dG8gd2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJ
dCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0
IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZp
bmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMg
dmFsdWUgaXMgMl40OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29k
ZWQgdmFsdWUgd2lsbCBiZWdpbgpAQCAtNDI4LDExICs0NTEsMTkgQEAgcHVibGljOgogICAgIC8v
IElmIGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNhdGVzIGFuIGludGVn
ZXIgbnVtYmVyLAogICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0IHRoaXMgdmFsdWUg
aXMgYSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KICAgICBzdGF0aWMgY29uc3RleHByIGludDY0
X3QgTnVtYmVyVGFnID0gMHhmZmZlMDAwMDAwMDAwMDAwbGw7CisgICAgLy8gVGhlIGZvbGxvd2lu
ZyBjb25zdGFudCBpcyB1c2VkIGZvciBhIHRyaWNrIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBz
dHJpY3RFcSwgdG8gZGV0ZWN0IGlmIGVpdGhlciBvZiB0aGUgYXJndW1lbnRzIGlzIGEgZG91Ymxl
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IExvd2VzdE9mSGlnaEJpdHMgPSAxVUxMIDw8
IDQ5OworICAgIHN0YXRpY19hc3NlcnQoTG93ZXN0T2ZIaWdoQml0cyAmIE51bWJlclRhZyk7Cisg
ICAgc3RhdGljX2Fzc2VydCghKChMb3dlc3RPZkhpZ2hCaXRzPj4xKSAmIE51bWJlclRhZykpOwog
CiAgICAgLy8gQWxsIG5vbi1udW1lcmljIChib29sLCBudWxsLCB1bmRlZmluZWQpIGltbWVkaWF0
ZXMgaGF2ZSBiaXQgMiBzZXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IE90aGVyVGFn
ICAgICAgID0gMHgyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCb29sVGFnICAgICAg
ICA9IDB4NDsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVW5kZWZpbmVkVGFnICAgPSAw
eDg7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCaWdJ
bnQzMlRhZyAgICA9IDB4MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IEJpZ0ludDMy
TWFzayAgID0gTnVtYmVyVGFnIHwgQmlnSW50MzJUYWc7CisjZW5kaWYKICAgICAvLyBDb21iaW5l
ZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgogICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IGZh
bHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUgICAgICA9IE90aGVy
VGFnIHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uZjY4ZTJjMzBjZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTI0MCw2ICsyMzksMTMgQEAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3Qg
SlNDZWxsKiBwdHIpCiAgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpT
VmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2YWwpCit7CisgICAgdS5hc0JpdHMu
dGFnID0gQ2VsbFRhZzsKKyAgICBhdXRvIHB0ciA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZhbCk7
CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3Rf
Y2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2wo
KSBjb25zdAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxldGVkVmFsdWVUYWcpOwpAQCAtMzI5
LDYgKzMzNSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29u
c3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXlsb2Fk
KTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7Cit9CisKIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAgICAg
QVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQsNiArNDc2LDE5IEBAIGlubGluZSBKU1Zh
bHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5hc0ludDY0ID0gVmFsdWVGYWxzZTsKIH0K
IAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2
YWx1ZSkKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlIDw9IElOVF9NQVggJiYg
dmFsdWUgPj0gSU5UX01JTikgeworICAgICAgICB1LmFzSW50NjQgPSAodmFsdWUgPDwgMTYpIHwg
QmlnSW50MzJUYWc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEpTQ2Vs
bCogcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB1LmFzSW50NjQg
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKK30KKwogaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewogICAgIC8vIFVuZGVmaW5lZCBhbmQg
bnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQgaW4gdGhl
IGV4dGVuZGVkIHRhZy4KQEAgLTUyMiw4ICs1NDcsMjIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwq
IEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQogCitBTFdBWVNf
SU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIEFT
U0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4o
dS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAorI2lmIFVTRShCSUdJTlQz
MikKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QgdmFsdWUp
Cit7CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2ZSBudW1iZXJz
LCBvdGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50NjQgPSAoKHN0
YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVtYmVyVGFnKSB8IEJpZ0ludDMy
VGFnOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGludDY0X3QgdHJ5Q29u
dmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBpZiAobnVtYmVyICE9IG51bWJlcikK
QEAgLTYxMCw5ICs2NDksMzEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25z
dAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiBpc0JpZ0ludDMy
KCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzSGVhcEJp
Z0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0hlYXBC
aWdJbnQoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQzMigpIGNvbnN0Cit7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5hc0ludDY0ICYgQmlnSW50MzJNYXNr
KSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
KyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpiaWdJbnQzMkFzSW50
MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOworfQorI2VuZGlmIC8vIFVTRShCSUdJ
TlQzMikKKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJl
dHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTYyMCw3ICs2ODEsNyBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpT
VmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFz
Q2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5p
c0JpZ0ludCgpOworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkg
fHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQog
CiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0CkBAIC03NjAsOCAr
ODIxLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAgICAgIHZhbHVlID0gKnRoaXM7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7
Ci0gICAgbnVtYmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkgeworICAgICAgICBu
dW1iZXIgPSBQTmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZy
b20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAgICBudW1iZXIg
PSAwLjA7CiAgICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3NSw0
NCArODQ1LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nh
c2UoZ2xvYmFsT2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50Kiwg
ZG91YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAg
ICByZXR1cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4g
YXNEb3VibGUoKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50
KCp0aGlzKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkgfHwgaXNCaWdJbnQoKSkK
KyAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVt
YmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZh
bHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNE
b3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1
ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICByZXR1cm4ganNOdW1i
ZXIodmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90
PiBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQot
ICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNCaWdJbnQo
KSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIGlmIChpc0RvdWJsZSgpICYmIGNhbkJlSW50
MzIoYXNEb3VibGUoKSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0Rv
dWJsZSgpKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0
aGlzKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91
YmxlKCkpKTsKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUg
PSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgp
KQotICAgICAgICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7fSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmlt
VmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMy
X3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7fSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAog
aW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSBjb25zdApAQCAtMTAzMiwzNyArMTEwMywxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGRvIHsKLSAgICAgICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigp
ID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7Ci0g
ICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwotICAgICAgICBpZiAoczEgJiYgczIpCi0g
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwo
Z2xvYmFsT2JqZWN0LCBhc1N0cmluZyh2MikpKTsKLQotICAgICAgICBpZiAodjEuaXNCaWdJbnQo
KSAmJiBzMikgewotICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52
YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9C
aWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2MiA9IEpTVmFsdWUo
bik7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsK
KyAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2
MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CisgICAgICAgICAgICAvLyBHdWFyYW50ZWVp
bmcgdGhhdCBpZiB3ZSBoYXZlIGEgbnVtYmVyIGl0IGlzIHYyIG1ha2VzIHNvbWUgb2YgdGhlIGNh
c2VzIGJlbG93IHNpbXBsZXIuCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChzMSAmJiB2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBT
dHJpbmcgdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYxU3Ry
aW5nKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAg
ICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHYxID0gSlNWYWx1ZShuKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgZGVhbHMgd2l0aCBCb29sZWFucywgQmlnSW50
MzIsIE9iamVjdHMsIGFuZCBpcyBhIHNob3J0Y3V0IGZvciBhIGZldyBtb3JlIHR5cGVzLgorICAg
ICAgICAvLyBJdCBoYXMgdG8gY29tZSBoZXJlIGFuZCBub3QgYmVmb3JlLCBiZWNhdXNlIGl0IGlz
IE5PVCB0cnVlIHRoYXQgTmFOID09IE5hTgorICAgICAgICBpZiAodjEgPT0gdjIpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51bGwoKSkg
ewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpCkBAIC0xMDgwLDcgKzEx
MzEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAgICAgIGlmICh2MS5pc09iamVj
dCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNPYmplY3QoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2
MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNseQogICAgICAgICAgICAgSlNWYWx1ZSBw
MSA9IHYxLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICB2MSA9IHAxOwpAQCAtMTEwMiw1
NiArMTE1Myw4NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlu
bGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICBib29sIHN5bTIg
PSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAoc3ltMSB8fCBzeW0yKSB7CiAgICAgICAgICAg
ICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAgICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSkg
PT0gYXNTeW1ib2wodjIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0g
djIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOworICAg
ICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHMxKSB7CisgICAgICAg
ICAgICBpZiAoczIpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBh
c1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7CisgICAgICAg
ICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyYW50ZWVk
IHRvIGVudGVyIHRoZSBuZXh0IGNhc2UsIHNvIGxvc2luZyB0aGUgaW52YXJpYW50IG9mIG9ubHkg
djIgYmVpbmcgYSBudW1iZXIgaXMgZmluZQorICAgICAgICB9CiAgICAgICAgIGlmIChzMSB8fCBz
MikgewotICAgICAgICAgICAgZG91YmxlIGQxID0gdjEudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
LSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAg
ICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZDEg
PT0gZDI7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBzdHJpbmcg
aXMgdjIgKHRoYW5rcyB0byB0aGUgc3dhcCBhYm92ZSkKKyAgICAgICAgICAgIGlmICh2MS5pc0Jp
Z0ludCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIp
LT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2MiA9IEpTQmlnSW50OjpzdHJpbmdU
b0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2MikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICh2MSA9
PSB2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciBCaWdJbnQzMgor
ICAgICAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBnZW5lcmljIGNvZGUgZm9y
IGNvbXBhcmluZyBCaWdJbnRzICh3aGljaCBpcyBvbmx5IG1pc3NpbmcgdGhlIEJpZ0ludDMyL0Jp
Z0ludDMyIGNhc2UsIGhlbmNlIHRoZSBjaGVjayBhYm92ZSkKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKHYxLmlzTnVtYmVyKCkgfHwgdjEuaXNCb29sZWFuKCkp
OworICAgICAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAg
ICAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFu
KCkpID09IHYyLmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgp
KSB7Ci0gICAgICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAg
Ly8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdwor
ICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIG9uZSBtb3JlIHN3YXAgdG8gcmVwYWlyIHRoZSBy
dWxlIHRoYXQgb25seSB2MiBpcyBhbGxvd2VkIHRvIGJlIGEgbnVtYmVyIGluIHRoZXNlIGNvbXBh
cmlzb25zCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfSBlbHNlIGlm
ICh2Mi5pc0Jvb2xlYW4oKSkgewotICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2
Mi5hc0Jvb2xlYW4oKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0g
ICAgICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjIg
PSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2Ug
ZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdwogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgp
KQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0Jp
Z0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNO
dW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MSktPmVxdWFsc1RvTnVtYmVy
KHYyKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9OdW1iZXIodjEpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgaWYgKHYxLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAg
aWYgKHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0lu
dDMyKCkgPT0gdjIuYXNJbnQzMigpOworICAgICAgICAgICAgaWYgKHYyLmlzRG91YmxlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYmlnSW50MzJBc0lu
dDMyKCkpID09IHYyLmFzRG91YmxlKCk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsK
KyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAodjEuaXNI
ZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIu
YXNIZWFwQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmICh2Mi5p
c0JpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5l
cXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVtYmVyKHYyKTsKKyAgICAgICAgfQogCi0g
ICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gd2hp
bGUgKHRydWUpOwogfQogCiAvLyBFQ01BIDExLjkuMwotQUxXQVlTX0lOTElORSBib29sIEpTVmFs
dWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpz
dHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
djEsIEpTQ2VsbCogdjIpCiB7Ci0gICAgQVNTRVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgp
KTsKLQotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNT
dHJpbmcoKSkKKyAgICBpZiAodjEtPmlzU3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIp
KTsKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7CisgICAgaWYg
KHYxLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBKU0JpZ0ludDo6ZXF1YWxzKHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odjEpLCBzdGF0aWNfY2Fz
dDxKU0JpZ0ludCo+KHYyKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCkBAIC0xMTYzLDEw
ICsxMjQyLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAgICAgaWYgKHYxLmlzTnVtYmVy
KCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIu
YXNOdW1iZXIoKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAg
ICAgICByZXR1cm4gdjEgPT0gdjI7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hl
YXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBC
aWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgaWYgKHYx
LmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFz
SGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRp
ZgogCi0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIpOworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0
dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXND
ZWxsKCkpOworCisgICAgcmV0dXJuIHYxID09IHYyOwogfQogCiBpbmxpbmUgaW50MzJfdCBKU1Zh
bHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0CkBAIC0xMTg0LDE1ICsxMjcwLDIzIEBA
IGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAg
ICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKIAotICAg
IGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdHJpU3Rh
dGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2
Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0
cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0
cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKLSAg
ICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gTWl4
ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5n
LCAqdjJTdHJpbmcpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzSGVhcEJpZ0lu
dCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVh
cEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgaWYg
KHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHRy
aVN0YXRlKHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQz
MigpKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkgewor
ICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3Ry
aW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYxU3RyaW5nID0gYXNTdHJp
bmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwq
IHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAg
IGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBNaXhl
ZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3Ry
aW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlz
SGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAg
IHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5h
c0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0g
djIpOwpAQCAtMTIwNiw2ICsxMzAwLDEwIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJl
VG9Cb29sZWFuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGlzTm90WmVyb0FuZE9yZGVyZWQoYXNE
b3VibGUoKSkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOyAvLyBmYWxzZSBmb3IgTmFO
CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xl
YW4oKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsK
KyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3Rh
dGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI0
ZWQ2NTIzMzc5Li45MGM1YTdmYzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6OmdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIAogYm9v
bCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8
fCBjZWxsLT5pc0JpZ0ludCgpKQorICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlz
U3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
KGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNs
b3QpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxP
YmplY3QpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpCiBib29s
IEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmIChjZWxsLT5p
c1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkgeworICAg
IGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFw
QmlnSW50KCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhy
b3cpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgfQpAQCAtMTU4LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShn
bG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYg
KGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJ
bnQqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBib29s
IEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGRvdWJsZSYgbnVtYmVyLCBKUwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2
YWx1ZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBTeW1ib2wqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVt
YmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0
UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihn
bG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogfQpAQCAtMTgwLDcgKzE4MCw3IEBAIGRvdWJs
ZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b051bWJl
cihnbG9iYWxPYmplY3QpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCBKU09iamVjdCogSlND
ZWxsOjp0b09iamVjdFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICBBU1NFUlQoIWlzT2JqZWN0KCkpOwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDEwNjc0OWRlM2NlLi43ZjkyNTA0
ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTEwMiw3ICsx
MDIsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAg
ICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKKyAg
ICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsK
ICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmlu
ZGV4IDJkYWY3YmMwZGRiLi5jMjgzODM2ODM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjA1LDkgKzIwNSw5IEBAIGlubGluZSBib29s
IEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlw
ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNDZWxsOjppc0JpZ0ludCgpIGNvbnN0CitpbmxpbmUgYm9v
bCBKU0NlbGw6OmlzSGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBC
aWdJbnRUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gSGVhcEJpZ0ludFR5cGU7CiB9CiAKIGlu
bGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdApAQCAtMzQxLDcgKzM0MSw3IEBAIGlu
bGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKTsKLSAgICBpZiAoaXNCaWdJbnQo
KSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKTsKICAgICByZXR1cm4gIXN0cnVjdHVy
ZShnZXRWTShnbG9iYWxPYmplY3QpKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmpl
Y3QpOwogfQpAQCAtMzUwLDcgKzM1MCw3IEBAIGlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVU
b0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJp
U3RhdGUgOiBGYWxzZVRyaVN0YXRlOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hl
YXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4o
dGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAgICBp
ZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDIyYzAxMjA1YzJmLi43ZThiMjYwYWY2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xMDM4LDYg
KzEwMzgsMTAgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8
IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAg
ICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiAhIWJpZ0lu
dDMyQXNJbnQzMigpOworI2VuZGlmCiAgICAgcmV0dXJuIGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVs
bCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBmYWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggYTEzMzdjNmE0ZWYuLjBkYzViNzRjMDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5
cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShT
eW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkKKyAgICBDQVNFKEhlYXBCaWdJbnRUeXBl
KQogICAgIENBU0UoU3RydWN0dXJlUmFyZURhdGFUeXBlKQogICAgIENBU0UoQ3VzdG9tR2V0dGVy
U2V0dGVyVHlwZSkKICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDBmODY4YTZhZTA3Li5kMTQ2NDMzZDQ2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTI2LDggKzI2LDggQEAgZW51
bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBUaGUgQ2VsbFR5cGUgdmFsdWUgbXVzdCBjb21l
IGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBKU0NlbGwuCiAgICAgQ2VsbFR5cGUsCiAgICAg
U3RyaW5nVHlwZSwKLSAgICBCaWdJbnRUeXBlLAotICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1p
dGl2ZSA9IEJpZ0ludFR5cGUsCisgICAgSGVhcEJpZ0ludFR5cGUsCisgICAgTGFzdE1heWJlRmFs
c3lDZWxsUHJpbWl0aXZlID0gSGVhcEJpZ0ludFR5cGUsCiAgICAgU3ltYm9sVHlwZSwKIAogICAg
IFN0cnVjdHVyZVJhcmVEYXRhVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZUluZm8uaAppbmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VS
VChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgYm9vbCBp
c1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwg
OCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCi0gICAgdWludDhfdCBtX3R5
cGU7CisgICAgSlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1fZmxhZ3M7CiAgICAgdWludDE2
X3QgbV9mbGFnczI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAppbmRleCBjNGViYmVjNTAzNS4u
MjdhMjIxYzJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC0yNiw5ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5o
IgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmlu
ZGV4IDQ5MDVkNWJhZjA3Li41M2VkMTI0ZTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTEgKzM2LDYgQEAgYm9vbCBKU1ZhbHVlOjplcXVhbFNs
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIKICAgICByZXR1cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7
CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIHJldHVybiBzdHJp
Y3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKLX0KLQogTkVWRVJf
SU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERh
dGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03MywyMSArNjgsMjMgQEAgTkVWRVJf
SU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0
cmluZyhnbG9iYWxPYmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhwMikpKTsKICAgICB9CiAKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHAy
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpICsgV1RGOjpn
ZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJs
ZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICsg
cmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBp
bnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENo
ZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJl
c3VsdCArPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2Vk
KCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAg
ICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0Jp
Z0ludDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAogSlNWYWx1ZSBqc1R5cGVTdHJp
bmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dikKQEAgLTEyOCw3ICsxMjUsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxs
KCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlw
ZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5
cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwg
dHlwZSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0
eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUo
dm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJiZTIzYzA3MjUuLjY5MzhlMjY2
YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNyAr
MjUsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0JpZ0lu
dC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIzOSw2ICsyMzgsMzUgQEAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmUKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwogfQogCitB
TFdBWVNfSU5MSU5FIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVCaWdJbnRUb090
aGVyUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2MSwg
SlNWYWx1ZSBwcmltVmFsdWUpCit7CisgICAgQVNTRVJUKHByaW1WYWx1ZS5pc1ByaW1pdGl2ZSgp
KTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgpKTsKKworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBi
aWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3Ry
aW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsK
KyAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOworCisgICAgICAgIGlmIChiaWdJbnRWYWx1ZS5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZSh2MSwg
YmlnSW50VmFsdWUuYXNIZWFwQmlnSW50KCkpOworCisgICAgICAgIEFTU0VSVChiaWdJbnRWYWx1
ZS5pc0JpZ0ludDMyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgLy8gRklYTUU6IHVz
ZSBzb21ldGhpbmcgbGVzcyBoYWNreSwgZS5nLiBzb21lIGtpbmQgb2YgSlNCaWdJbnQ6OmNvbXBh
cmVUb0ludDMyCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBz
dGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5k
aWYKKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBh
cmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgYmln
SW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVz
dWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNvbk1vZGUpCiB7CiAgICAgaWYg
KGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCkBA
IC0yNTUsNTEgKzI4Myw1MCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQot
ICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0Jp
Z0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBpZiAo
djEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYyOwotICAgICAg
ICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBiaWdJ
bnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5n
KHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiBiaWdJ
bnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYmlnSW50VmFs
dWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHByaW1WYWx1ZSkpLCBjb21wYXJp
c29uTW9kZSk7CiAKLSAgICAgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBh
cmVUb0RvdWJsZShhc0JpZ0ludCh2MSksIG51bWJlclZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzQmlnSW50
MzIoKSkgeworICAgICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlz
b25Nb2RlOjpMZXNzVGhhbikKKyAgICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIo
KSA8IHYyLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBBU1NFUlQoY29tcGFyaXNvbk1vZGUg
PT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpOworICAgICAgICBy
ZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPD0gdjIuYmlnSW50MzJBc0ludDMyKCk7CiAgICAg
fQotICAgIAotICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0gICAgaWYgKHByaW1WYWx1ZS5p
c1N0cmluZygpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50Ojpz
dHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGds
b2JhbE9iamVjdCkpOworI2VuZGlmCisKKyAgICBKU0JpZ0ludCogdjFIZWFwQmlnSW50ID0gbnVs
bHB0cjsKKyAgICBKU0JpZ0ludCogdjJIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhN
RTogaGF2ZSBzb21lIGZhc3QtaXNoIHBhdGggZm9yIGEgY29tcGFyaXNvbiBiZXR3ZWVuIGEgc21h
bGwgYW5kIGEgbGFyZ2UgYmlnLWludAorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSkKKyAgICAg
ICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGVsc2UgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisg
ICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSB2Mi5hc0hl
YXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQz
MigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjIu
YmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAodjFIZWFwQmlnSW50ICYmIHYy
SGVhcEJpZ0ludCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6
OmNvbXBhcmUodjFIZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQpLCBjb21wYXJpc29uTW9kZSk7CisK
KyAgICBpZiAodjFIZWFwQmlnSW50KSB7CisgICAgICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9
IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjFIZWFwQmlnSW50
LCB2Mik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAg
ICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShiaWdJbnRWYWx1
ZSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOworICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJpc29uTW9kZSk7CiAgICAgfQot
ICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0lu
dENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQocHJpbVZhbHVlKSwgYXNC
aWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGRvdWJsZSBudW1iZXJWYWx1
ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKIAorICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBh
cmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjJIZWFwQmlnSW50LCB2MSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIC8vIEhlcmUgd2Ug
Y2hlY2sgaW52ZXJ0ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3Vi
bGUoYXNCaWdJbnQodjIpLCBudW1iZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09
IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJldHVybiBjb21w
YXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsK
LQogICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0OjpHcmVhdGVyVGhhbiB8fCBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJp
c29uUmVzdWx0OjpFcXVhbDsKKworCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCB0b1ByaW1pdGl2
ZU51bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2LCBKU1ZhbHVl
JiBwLCBkb3VibGUmIG4pCkBAIC0zNTcsNyArMzg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpz
TGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBp
ZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5n
MSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlz
QmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENv
bXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVz
c1RoYW4pKTsKIApAQCAtNDA3LDcgKzQzNCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NF
cShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAg
ICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3
YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8
IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJ
bnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFy
ZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhh
bk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzksMzQ4IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0K
IAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRzIG9w
ZXJhbmRzIHVuYm94ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxsCit0
ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVy
YXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGht
ZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJh
dGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJy
b3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJp
Z2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmln
aHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAg
IGlmIChsZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQor
ICAgICAgICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwg
cmlnaHROdW1lcmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
bGVmdE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNC
aWdJbnQzMigpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9w
KGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0lu
dDMyKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0Jp
Z0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJp
Z0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0lu
dDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50
T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4i
X3MpOworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
ICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
bGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwg
cmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYg
KGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMu
aXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9i
YWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsK
KyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3Qs
IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkp
KTsKICAgICB9CisjZWxzZQorICAgICh2b2lkKSBiaWdJbnQzMk9wOworICAgIGlmIChsZWZ0TnVt
ZXJpYy5pc0hlYXBCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwg
bGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkp
OworI2VuZGlmCisKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgZXJyb3JNZXNzYWdlKTsKK30KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3Vi
bGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBs
ZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmln
aHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQz
Ml90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNr
ZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3Vs
dCAtPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkp
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAg
ICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0
aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnN1YiwgZG91YmxlT3As
IGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3Vi
dHJhY3Rpb24uIl9zKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0
byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewor
ICAgICAgICByZXR1cm4gbGVmdCAqIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1
bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQu
aGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsK
KyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAg
cmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6
Om11bHRpcGx5LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3Vi
bGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAg
fTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICghcmlnaHQpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCBsZWZ0IC8gcmlnaHQpOworI2Vsc2UKKyAgICAgICAgKHZvaWQpIGxl
ZnQ7CisgICAgICAgICh2b2lkKSByaWdodDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9w
KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50
MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4i
X3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1haW5kZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMy
T3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEZJWE1F
OiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyLiJfcyk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIG9wZXJh
dGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0g
W10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBFeHBvbmVudGlh
dGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwg
YW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAvLyBTbyBkb24ndCBib3RoZXIg
dHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlP
cChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZSwgZG91YmxlT3As
IGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhw
b25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzSW5jKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5k
TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIob3BlcmFuZE51bWVy
aWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5k
TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRp
Y19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSArIDE7Cisg
ICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVm
aXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5l
d1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJv
bSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0lu
dDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisg
ICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJp
Yy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEZWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBsZWZ0TnVtZXJpYyA9IHYxLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkK
KyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgLSAxKTsK
KworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVy
YW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgLSAxOworICAgICAgICAvLyBGSVhNRTogdGhl
IGZvbGxvd2luZyBuZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBp
bnRvIGEgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdWYWx1ZSA8IElOVF9NSU4pCisg
ICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVt
ZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0Jp
Z0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsK
K30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAg
IHJldHVybiBqc051bWJlcih+b3BlcmFuZE51bWVyaWMuYXNJbnQzMigpKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdp
c2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQor
CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgc2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgYm9vbCBpc0xlZnQpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8g
cmlnaHROdW1lcmljID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0lu
dDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJ
bnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAgICAgICAgaW50MzJfdCByaWdodEludDMy
ID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOworICAgICAgICBpbnQzMl90IHJlc3VsdCA9
IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQzMikgOiAobGVmdEludDMyID4+IHJpZ2h0
SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKKyAgICB9CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSAmJiByaWdodE51
bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgbGVmdEludDMyID0gbGVmdE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJp
Z2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHJpZ2h0SW50MzIgPCAw
KSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0OworICAgICAgICAgICAgcmlnaHRJbnQz
MiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAvLyBU
aGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQgcmVxdWlyZWQgYmVjYXVzZSBpbiBDKysg
aXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEgc2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9w
ZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgYml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9w
ZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMx
KSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVy
Zmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0aW5nIEhlYXBCaWdJbnRzLgorICAgICAg
ICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIs
IHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQgZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQg
b3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBC
aWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRJbnQzMik7CisgICAgICAgIGlm
IChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50
OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50
KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJp
Z2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7
CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJp
Z2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGlz
TGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlm
dCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
c2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMu
aXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0lu
dDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50
KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdodE51
bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZWxzZQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0lu
dCA9IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBC
aWdJbnQgPSByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZW5kaWYKKworICAgIGlmIChp
c0xlZnQpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmxlZnRT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGds
b2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworfQorCitBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBib29sIGlzTGVmdCA9IHRydWU7CisgICAg
cmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOworfQogCi0gICAgZG91
YmxlIGxlZnRWYWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3Vi
bGUgcmlnaHRWYWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgcmV0
dXJuIGpzTnVtYmVyKGxlZnRWYWx1ZSAqIHJpZ2h0VmFsdWUpOworQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCit7CisgICAgYm9vbCBpc0xlZnQgPSBmYWxzZTsKKyAgICByZXR1cm4gc2hpZnQo
Z2xvYmFsT2JqZWN0LCB2MSwgdjIsIGlzTGVmdCk7CiB9CiAKLWlubGluZSBib29sIHNjcmliYmxl
RnJlZUNlbGxzKCkKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24sIHR5cGVu
YW1lIEludDMyT3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGJpdHdpc2VCaW5hcnlP
cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBI
ZWFwQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIHJldHVybiBBU1NFUlRfRU5BQkxFRCB8
fCBPcHRpb25zOjpzY3JpYmJsZUZyZWVDZWxscygpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJp
Z2h0TnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihpbnQzMk9wKGxl
ZnROdW1lcmljLmFzSW50MzIoKSwgcmlnaHROdW1lcmljLmFzSW50MzIoKSkpOworCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1l
cmljLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJ
bnQzMiwgaW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgLy8gRklYTUU6IGFkZCBmYXN0IHBhdGggZm9yIEJp
Z0ludDMyIC8gSGVhcEJpZ0ludCwgYW5kIGZvciBIZWFwQmlnSW50IC8gQmlnSW50MzIKKyAgICAv
LyBJbiBtYW55IGNhc2VzIHRoZXNlIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgdGhhbiBo
ZWFwLWFsbG9jYXRpbmcgdGhlIHNtYWxsIGJpZy1pbnQgYW5kIGdvaW5nIHRocm91Z2ggdGhlIGdl
bmVyaWMgcGF0aC4KKyAgICAvLyBCdXQgaXQgaXMgcXVpdGUgdHJpY2t5LCBub3QgbGVhc3QgYmVj
YXVzZSBIZWFwQmlnSW50IHVzZSBhIHNpZ24gYml0IHdoZXJlYXMgQmlnSW50MzIgdXNlIDItY29t
cGxlbWVudCByZXByZXNlbnRhdGlvbi4KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMu
aXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpCisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmlj
LmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJ
bnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0lu
dCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHRO
dW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJ
bnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFw
QmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJ
bnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogfQogCi0jZGVmaW5lIFNDUklCQkxFX1dPUkQgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3
aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpCit7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdo
dCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKwor
ICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3gg
dGhlbSwgZG8gdGhlICJhbmQiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBp
dCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGds
b2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlv
bi4iX3MpOworfQogCi1pbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUp
CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlT3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHZhbHVlKSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFND
UklCQkxFX1dPUkQpKTsKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQz
Ml90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKKyAg
ICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3
ZSB1bmJveCB0aGVtLCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291
bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5h
cnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VPciwgaW50MzJPcCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3Bl
cmF0aW9uLiJfcyk7CiB9CiAKLWlubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVf
dCBzaXplKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIGZvciAoc2l6
ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgewotICAgICAgICAv
LyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRo
ZSBjZWxsIGNoZWNrLgotICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2Up
W2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JE
KSk7Ci0gICAgfQorICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qg
cmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OworICAgIH07
CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVu
Ym94IHRoZW0sIGRvIHRoZSAieG9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQg
ZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUsIGFuZCBqdXN0IHJlbWVtYmVyIHRvIGRvIGFu
IG9yIHdpdGggMHgxMiBhdCB0aGUgZW5kIHRvIHJlc3RvcmUgdGhlIHRhZworICAgIHJldHVybiBi
aXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlWG9y
LCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdp
c2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFs
dWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBiYXNlLCB1aW50MzJfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmliYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
YmJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NzdlNjVhNzA0
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmli
YmxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk9wdGlv
bnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxz
KCkKK3sKKyAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVl
Q2VsbHMoKTsKK30KKworI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90
PigweGJhZGJlZWYwKQorCitpbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFs
dWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5j
b2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Cit9CisKK2lubGluZSB2
b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQoreworICAgIGZvciAoc2l6ZV90
IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgeworICAgICAgICAvLyBV
c2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBj
ZWxsIGNoZWNrLgorICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ld
ID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7
CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKaW5kZXggM2RjMTdiNzMzNTkuLjQwMmRhYTcxNmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0zMjEs
NyArMzIxLDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1p
dGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKICAgICAKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQorICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5i
aWdJbnRQcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlw
ZSgpID09IFN5bWJvbFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYzVhMWQxMmNmYS4uZjJjNzllYjliNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4g
SlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFnLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDMtMDIgIFBhdWxvIE1hdG9z
ICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEpTQyAzMmJpdCBhbGlnbm1lbnQg
aW5jcmVhc2UgZ2NjIHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDFhZDYxNTA3NmM5Li4x
NmM5YmQxMjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5LDEwIEBACiAjZW5k
aWYKICNlbmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNW
QUxVRTMyXzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgVVNFX0JJR0lOVDMy
IDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBtb3JlIHNwZWNpZmlj
IGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8qIFVzZSBfX2J1aWx0
aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lmIENPTVBJTEVSKEdD
Q19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392189</attachid>
            <date>2020-03-02 14:16:47 -0800</date>
            <delta_ts>2020-03-02 17:03:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>398454</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CmluZGV4IGFmMjI4M2Y4ZWU0Li43ZjVjYjEwNGUzMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCkBAIC04Myw3ICs4Myw4
IEBAIGZ1bmN0aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAiLCBSaWdodCA9ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRDYXNlc1tyaWdo
dENhc2VJbmRleF0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmVzdWx0ID0gIiArCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1dDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIg
KGNhc2U6ICIgKyBsZWZ0Q2FzZUluZGV4ICsgIiwgIiArIHJpZ2h0Q2FzZUluZGV4ICsgIikiOwog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGxldCBzdHJpY3ROb3RFcXVhbE91
dHB1dCA9IG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXMobGVmdENhc2VzW2xlZnRDYXNlSW5k
ZXhdLCByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSk7CkBAIC05Myw3ICs5NCw4IEBAIGZ1bmN0
aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSaWdo
dCA9ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRl
eF0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmVzdWx0ID0gIiArCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1dDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmljdEVxdWFsT3V0cHV0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgKGNhc2U6ICIg
KyBsZWZ0Q2FzZUluZGV4ICsgIiwgIiArIHJpZ2h0Q2FzZUluZGV4ICsgIikiOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdGwt
c3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwppbmRleCAwNDNhNzYwN2E0Zi4uOGU5NmNmNDQyODkg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5Lmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCkBAIC0z
MCw2ICszMCw2IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKICAgICB2YXIg
cmVzdWx0ID0gZm9vKGFycmF5LCBhcnJheTJbaW5kZXhdKTsKICAgICB2YXIgZXhwZWN0ZWQgPSBp
bmRleCA+PSBhcnJheS5sZW5ndGggPyBudWxsIDogaW5kZXgKICAgICBpZiAocmVzdWx0ICE9PSBl
eHBlY3RlZCkKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQgKyAiIGJ1dCBleHBl
Y3RlZCAiICsgZXhwZWN0ZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21pc3Np
bmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
bWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKaW5kZXggOTY1YTdk
NzNiNzEuLmRkODVhODM4N2ZiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4
Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9t
aXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwpAQCAtMSw2ICsxLDgg
QEAKIGNvbnN0IHMxID0gKC0xKS50b0xvY2FsZVN0cmluZygpLnBhZEVuZCgyKiozMS0xLCAnYWEn
KTsKK2NvbnN0IHMyID0gKC0xKS50b0xvY2FsZVN0cmluZygpLnBhZEVuZCgyKiozMS0xLCAnYWEn
KTsKIHRyeSB7Ci0gICAgczEgPT0gczE7CisgICAgLy8gRm9yY2UgZXZhbHVhdGlvbiBvZiBSb3Bl
CisgICAgczEgPT0gczI7CiB9IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2NGRhMGI2MTU4Li5iMTA3N2RjYWZmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzg3IEBACisyMDIwLTAzLTAyICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxp
bmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMy
IikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gb3B0aW1pemUgdGhlIHBlcmZvcm1hbmNlIG9mIEJpZ0ludHMsIHdo
ZW4gdGhleSBhcmUgc21hbGwgKDMyIGJpdCBvciBsZXNzKS4KKyAgICAgICAgSXQgd29ya3MgYnkg
aW5saW5pbmcgdGhlbSBpbnRvIEpTVmFsdWUgb24gNjQtYml0IHBsYXRmb3JtcywgYXZvaWRpbmcg
dGhlIGFsbG9jYXRpb24gb2YgYSBKU0JpZ0ludC4KKyAgICAgICAgVGhlIGJpdCBwYXR0ZXJuIHdl
IHVzZSBpcyAwMDAwOlhYWFg6WFhYWDowMDEyCisgICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24g
d29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAgICAgLSBJdCBjYW5u
b3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9w
IGJpdHMKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8g
YSBDZWxsLCB0aGFua3MgdG8gYml0IDEgd2hpY2ggaXMgc2V0IHRvIHRydWUKKyAgICAgICAgLSBJ
dCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8gYml0
IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2Vk
IHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCBmb3IgbnVsbC91bmRlZmluZWQgYmVjYXVzZSBiaXQgNCBp
cyBzZXQgdG8gdHJ1ZQorCisgICAgICAgIFRoaXMgZW50aXJlIGNoYW5nZSBpcyBnYXRlZCBieSBV
U0UoQklHSU5UMzIpLCB0byBtYWtlIGl0IGVhc2llciB0byBkaXNhYmxlIGlmIGl0IHR1cm5zIG91
dCB0byBoYXZlIGJ1Z3MuCisgICAgICAgIEl0IHNob3VsZCBhbHNvIG1ha2UgaXQgbXVjaCBlYXNp
ZXIgdG8gdmVyaWZ5IGlmIGEgZ2l2ZW4gYnVnIGNvbWVzIGZyb20gaXQgb3IgZnJvbSBzb21ldGhp
bmcgZWxzZS4KKworICAgICAgICBOb3RlIHRoYXQgaW4gdGhpcyBwYXRjaCB3ZSBjcmVhdGUgc3Vj
aCBzbWFsbCBCaWdJbnRzIHdoZW4gcGFyc2luZyBCaWdJbnQgY29uc3RhbnRzLCBhbmQgbW9zdCBv
cGVyYXRpb25zIChlLmcuIEFkZCBvciBCaXRPcikgcHJvZHVjZSBhIEJpZ0ludDMyIGlmIGJvdGgg
b2YgdGhlaXIgb3BlcmFuZHMgYXJlIEJpZ0ludDMyLAorICAgICAgICBidXQgd2UgZG9uJ3QgcHJv
ZHVjZSBhIEJpZ0ludDMyIGZyb20gZm9yIGV4YW1wbGUgdGhlIHN1YnN0cmFjdGlvbi9kaXZpc2lv
biBvZiB0d28gbGFyZ2UgaGVhcC1hbGxvY2F0ZWQgSlNCaWdJbnRzLCBldmVuIGlmIHRoZSByZXN1
bHQgZml0cyBpbiAzMi1iaXRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgc21hbGwgQmlnSW50cyBj
YW4gbm93IGVpdGhlciBiZSBoZWFwLWFsbG9jYXRlZCBvciBpbmxpbmVkIGluIHRoZSBKU1ZhbHVl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgYSBzaWduaWZpY2FudCByZWZhY3RvciBv
ZiB2YXJpb3VzIHNsb3cgcGF0aHMsIHdoaWNoIGFyZSBub3cgZ3JvdXBlZCB0b2dldGhlciBpbiBP
cGVyYXRpb25zLmgKKyAgICAgICAgQmVjYXVzZSB0aGlzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiBP
cGVyYXRpb25zLmggc2lnbmlmaWNhbnRseSwgSSBzcGxpdCB0aGUgcGFydHMgb2YgT3BlcmF0aW9u
cy5oIHdoaWNoIGFyZSBvbmx5IHVzZWQgYnkgdGhlIEdDIGludG8gU2NyaWJibGUuaCwgdG8gYXZv
aWQgYmxvYXRpbmcgY29tcGlsZSB0aW1lcy4KKworICAgICAgICBJbiB0aGUgREZHIGFuZCBGVEwg
d2Ugbm93IGhhdmUgMyBVc2VLaW5kcyBmb3IgQmlnSW50czogSGVhcEJpZ0ludFVzZSwgQmlnSW50
MzJVc2UgYW5kIEFueUJpZ0ludFVzZS4KKyAgICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgd2hl
biB3ZSBub3cgdGhhdCB3ZSBhcmUgcmVjZWl2aW5nIEJpZ0ludHMsIGJ1dCBzcGVjdWxhdGlvbiBp
bmRpY2F0ZXMgYSBtaXggb2YgaGVhcC1hbGxvY2F0ZWQgYW5kIHNtYWxsIChpbmxpbmVkKSBiaWct
aW50cy4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5LCBhIG5haXZlIGltcGxlbWVudGF0aW9uIG9m
IHRoaXMgcGF0Y2ggc2lnbmlmaWNhbnRseSByZWdyZXNzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIFN0
cmljdEVxIChhbmQgaXRzIHZhcmlhbnRzKSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHRydWUgdGhhdCBh
IGNlbGwgYW5kIGEgbm9uLWNlbGwgY2Fubm90IGJlIGVxdWFsLgorICAgICAgICBCZWZvcmUgdGhp
cyBwYXRjaCwgdGhlIGNvZGUgd2FzIGp1bXBpbmcgdG8gYSBzbG93IHBhdGggaWYgZWl0aGVyOgor
ICAgICAgICAtIGF0IGxlYXN0IG9uZSBvcGVyYW5kIGlzIGEgZG91YmxlCisgICAgICAgIC0gb3Ig
Ym90aCBvcGVyYW5kcyBhcmUgY2VsbHMKKyAgICAgICAgTm93LCBpdCBhbHNvIG5lZWRzIHRvIGp1
bXAgdG8gdGhlIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLgorICAgICAgICBU
byByZWNvdmVyIHRoaXMgcGVyZm9ybWFuY2UgY29zdCwgSSBzaWduaWZpY2FudGx5IHJld3JvdGUg
dGhpcyBjb2RlLCBmcm9tCisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBpZiAoISBsZWZ0IGlzIEludDMyKSB7CisgICAgICAgICAgICBpZiAobGVmdCBpcyBOdW1i
ZXIpCisgICAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAg
aWYgKCEgcmlnaHQgaXMgSW50MzIpIHsKKyAgICAgICAgICAgIGlmIChyaWdodCBpcyBOdW1iZXIp
CisgICAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0
dXJuIGxlZnQgPT0gcmlnaHQKKyAgICAgICAgVG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICBp
ZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aAorICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAg
ICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IEkgYmVsaWV2ZSB0aGlzIHRvIGJlIGZhc3RlciB0aGFuIGp1c3QgcmVwbGFjaW5nIChsZWZ0IGlz
IENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgYnkgYW4gfHwsIGJlY2F1c2UgSSBmb3VuZCBhIGJpdC10
cmljayB0byBjaGVjayAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSB3aGljaCBz
aG91bGQgaGVscCByZWR1Y2UgdGhlIHByZXNzdXJlIG9uIHRoZSBicmFuY2ggcHJlZGljdG9yLgor
ICAgICAgICBFYXJseSBKZXRTdHJlYW0yIHRlc3RzIGFwcGVhciB0byBjb25maXJtIHRoYXQgdGhp
cyBwYXRjaCBpcyByb3VnaGx5IG5ldXRyYWwgd2hpbGUgaXQgd2FzIGEgMC41JSByZWdyZXNzaW9u
IGJlZm9yZSBJIHVzZWQgdGhpcyB0cmljaywgYnV0IHRoZSBudW1iZXJzIGFyZSBzdGlsbCB0b28g
bm9pc3ksIEkgcGxhbiB0byBkbyBtb3JlIG1lYXN1cmVtZW50cyBiZWZvcmUgbGFuZGluZyB0aGlz
IHBhdGNoLgorCisgICAgICAgIEkgZG9uJ3QgeWV0IGhhdmUgcGVyZm9ybWFuY2UgbnVtYmVycyBm
b3IgdGhpcyBwYXRjaCBvbiBhIEJpZ0ludCBiZW5jaG1hcmssIEkgd2lsbCBnZXQgc3VjaCBudW1i
ZXJzIGJlZm9yZSB0cnlpbmcgdG8gbGFuZCBpdCwgYnV0IEknZCBsaWtlIHNvbWUgcmV2aWV3IGlu
IHRoZSBtZWFudGltZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJ
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1p
dFNldEJpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVz
dWx0czo6ZGlkT2JzZXJ2ZU5vbkludDMyKToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRz
OjpkaWRPYnNlcnZlQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRP
YnNlcnZlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2Jz
ZXJ2ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJp
Z0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEhl
YXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9y
bWF0Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBv
cnRWYWx1ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21KU1R5cGUpOgorICAgICAgICAoSlNDOjpsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5
RXF1aXZhbGVudFNwZWN1bGF0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaDoKKyAgICAgICAgKEpTQzo6aXNCaWdJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNIZWFwQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0JpZ0ludFNwZWN1
bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhp
c0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhh
c2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpv
YnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91
bGRTcGVjdWxhdGVIZWFwQmlnSW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlNhZmVUb0V4ZWN1dGVF
ZGdlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3ApOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXR3aXNlT3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TFNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVCaXRSU2hpZnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
U2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1
Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6U3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6On5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6ZWRnZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpub2RlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Omdwcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp1c2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhv
bGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjppc0NlbGwp
OgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkNvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyk6CisgICAgICAg
ICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVE
aXYpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVN
b2QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVQ
b3cpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVC
aXROb3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFs
dWVCaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVCaXRPcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZUJpdFhvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVBcml0aEJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aEJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaXRVUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeVNuaXBwZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5Qml0T3BTbmlwcGV0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym9vbGlmeSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJ1aWxkVHlwZU9mKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SGVhcEJpZ0ludCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjp1bmJveEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjppc05vdEFueUJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmlzSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVB
bnlCaWdJbnQpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOgorICAgICAgICAqIGhlYXAvUHJlY2lz
ZUFsbG9jYXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQ
cmV2aWV3KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xl
YW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OnVuYm94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJveEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0VHlw
ZU9mKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9uZWdhdGUpOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVt
ZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rv
X251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVj
aW1hbElkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp0
b0JpZ0ludCk6CisgICAgICAgIChKU0M6OmNhbGxCaWdJbnRDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9CaWdJbnRPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9CaWdJ
bnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0b1RoaXNCaWdJbnRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmluYyk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkZWMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6ZXF1YWxzVG9JbnQzMik6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOgor
ICAgICAgICAoSlNDOjphc0hlYXBCaWdJbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6ZHVtcEZvckJhY2t0cmFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
U3RyaW5nU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFzSGVhcEJpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
aXNCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmJpZ0ludDMyQXNJbnQz
MiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzUHJpbWl0aXZlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9CaWdJ
bnRPckludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlu
bGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnB1cmVTdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4g
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpn
ZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvTnVtYmVy
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1
cmVUb0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICog
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc0FkZFNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6anNJc09iamVjdFR5cGVPck51bGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOgorICAgICAgICAoSlNDOjpjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZSk6CisgICAg
ICAgIChKU0M6OmJpZ0ludENvbXBhcmUpOgorICAgICAgICAoSlNDOjpqc0xlc3MpOgorICAgICAg
ICAoSlNDOjpqc0xlc3NFcSk6CisgICAgICAgIChKU0M6OmFyaXRobWV0aWNCaW5hcnlPcCk6Cisg
ICAgICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorICAgICAgICAoSlND
Ojpqc0Rpdik6CisgICAgICAgIChKU0M6OmpzUmVtYWluZGVyKToKKyAgICAgICAgKEpTQzo6anNQ
b3cpOgorICAgICAgICAoSlNDOjpqc0luYyk6CisgICAgICAgIChKU0M6OmpzRGVjKToKKyAgICAg
ICAgKEpTQzo6anNCaXR3aXNlTm90KToKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAo
SlNDOjpqc0xTaGlmdCk6CisgICAgICAgIChKU0M6OmpzUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6
Yml0d2lzZUJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNCaXR3aXNlQW5kKToKKyAgICAgICAg
KEpTQzo6anNCaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VYb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvU2NyaWJibGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50T2JqZWN0LmguCisgICAgICAgIChKU0M6OnNjcmliYmxlRnJlZUNlbGxz
KToKKyAgICAgICAgKEpTQzo6aXNTY3JpYmJsZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OnNjcmli
YmxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6CisKIDIwMjAtMDMtMDIgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIERlbGV0ZSBi
eSB2YWwgY2FjaGluZyBkb2VzIG5vdCBrZWVwIHRoZSBzdWJzY3JpcHQgYWxpdmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI3NDU2NTE3ZjguLmJhNjUxYjBlNDA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY2LDYgKzg2Niw3IEBACiAJCTJBRDg5MzJCMTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBI
ZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJG
MzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNv
dXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEz
NENFIC8qIFNjcmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVD
NzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTMz
QTkyMEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZE
MDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAv
KiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87
IH07CkBAIC0zNTA3LDYgKzM1MDgsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1
Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFB
RDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMw
QTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzM3NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4
cHJlc3Npb25UcmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhw
cmVzc2lvblRyZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NEEy
MjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsg
cGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU0Myw2ICs3NTQ1LDcgQEAKIAkJCQkw
RkUwNTAyMDFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywKIAkJ
CQkwRkUwNTAyMTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJCTBG
RTA1MDIyMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTExQjhB
MjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYw
MEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5
MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQyMzg5
QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTA3LDYgKzg5MTAsNyBAQAogCQkJ
CTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0
aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAv
KiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAx
IC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMy
MDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENC
NUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXgg
YzEwMDI0MDRlZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1tZWRh
aXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMg
YmVlbiBlbWl0dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVuZGVk
IHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAgICAg
IC8vIFRoZSB3cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRlcnMg
YWJvdmUgd2lsbCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlhdGU4
KGludCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2Zp
bGUuY3BwCmluZGV4IGZlYTY2NzQ1YjYyLi5mMmMwNTg0ZDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVs
ZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3Vs
dChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBt
b2RlKQordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQo
Q0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdS
ZWdpc3RlcnNNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYg
IXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKKyAg
ICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSAmJiAhc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludDMy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsK
QEAgLTQ4LDkgKzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRP
YnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3REb3Vi
bGUubGluaygmaml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm90QmlnSW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJl
Z3MsIHRlbXBHUFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBwZW5k
KGppdC5qdW1wKCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAgICh2
b2lkKSB0ZW1wR1BSOworI2VuZGlmCisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RDZWxsKHJlZ3MsIG1vZGUpKTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGppdCk7
CisgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdzLnBh
eWxvYWRHUFIoKSkpOworICAgIGVtaXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5hcHBl
bmQoaml0Lmp1bXAoKSk7CiAKICAgICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwxOSAr
OTcsMzkgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KLWJvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRC
aWdJbnQoKSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1p
dFNldEJpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0ZmllbGRU
eXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRz
ICYgbWFzaykgIT0gbWFzazsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OnNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRmaWVs
ZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlwZSBt
YXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYg
bWFzaykgIT0gbWFzazsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMm
IGppdCkgY29uc3QKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRIZWFw
QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0
QmlnSW50KCkpCi0gICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1
bHRzOjpCaWdJbnQpOworICAgIGlmIChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAgICAg
ICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7
CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+
Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0NhbGxI
ZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigpKQor
ICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50
MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVs
cGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgsMTIg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmls
ZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1Mk92
ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQucHJp
bnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVI
ZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFwQmln
SW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmlu
dChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwyNCBA
QCBwdWJsaWM6CiAgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAgIElu
dDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8
IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBCaWdJ
bnQgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYsCiAg
ICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAgICBP
YnNlcnZlZFJlc3VsdHMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1bHRz
KHVpbnQ4X3QgYml0cykKICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAgIGJv
b2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3Vi
bGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CiAg
ICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9vbCBk
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3VibGU7
IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYgTm9u
TnVtZXJpYzsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IChIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0lu
dCgpIHsgcmV0dXJuIG1fYml0cyAmIEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVC
aWdJbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRPYnNl
cnZlSW50MzJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0KICAg
ICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50NTJP
dmVyZmxvdzsgfQogCkBAIC0xMDksMTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmlj
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVyaWMo
KTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBC
aWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVhcEJp
Z0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVybiBv
YnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlSW50MzJPdmVyZmxvdygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93KCk7IH0KIAogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2Jz
ZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJvRG91
YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2JzZXJ2
ZWRSZXN1bHRzOjpOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7
IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVk
SGVhcEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0KKyAg
ICB2b2lkIHNldE9ic2VydmVkQmlnSW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJp
Z0ludDMyKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQo
T2JzZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJ
bnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93KTsg
fQogCkBAIC0xMjcsOCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8PSBP
YnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUyT3Zl
cmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJlc3Vs
dHM6Ok5lZ1plcm9Eb3VibGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVl
LmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRz
OjpIZWFwQmlnSW50OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1f
Yml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwyMiBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwg
SW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBz
ZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51
bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVl
UmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQgZW1p
dE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BS
LCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRzIChJ
bnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJv
RG91YmxlKS4KICAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2b2lk
IGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5vbk51
bWVyaWMKICAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNldHMg
QmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNl
dEhlYXBCaWdJbnQoKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdDsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJz
JikgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxI
ZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAt
MTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90Owog
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRU
eXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0aWNf
YXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVk
IDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0
aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNp
emVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUg
b2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFVu
YXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNf
Y2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1
YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0
aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRz
TmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAx
KSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0
aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBh
dGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxk
IG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQg
JiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNl
Y3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lhbEZh
c3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlBcml0
aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBiaXRz
IHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEg
aGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjLi40OGI3ODcwZWNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMjcsNiArMzI3LDcg
QEAgb3BfZ3JvdXAgOlVuYXJ5T3AsCiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwKICAg
ICAgICAgOmlzX2Jvb2xlYW4sCiAgICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19iaWdf
aW50LAogICAgICAgICA6aXNfb2JqZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGwsCiAg
ICAgICAgIDppc19mdW5jdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4
IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXgg
NjdmMmNlYzBhODAuLmVlYTVmYTRjM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lz
dGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJhbmQp
CiAgICAgVVNFUyhPcElzQm9vbGVhbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIsIG9w
ZXJhbmQpCisgICAgVVNFUyhPcElzQmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVj
dCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAgVVNF
UyhPcElzQ2VsbFdpdGhUeXBlLCBvcGVyYW5kKQpAQCAtNDIzLDkgKzQyNCwxMCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3Qp
CiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRzdCkK
LSAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRlZmlu
ZWRPck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhPcElz
TnVtYmVyLCBkc3QpCisgICAgREVGUyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElzT2Jq
ZWN0LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElz
Q2VsbFdpdGhUeXBlLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDkxZWVmYTAwOThlLi4zYzBlY2ZjZjJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVE1hdGhJQy5oIgotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1ODhk
YmZmNi4uMjA3NWRhNzA1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EYXRhRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rh
dGFGb3JtYXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NCwxMiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWludDhf
dCB7CiAgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0gNiwK
ICAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAgICBE
YXRhRm9ybWF0QmlnSW50MzIgPSA4LAorICAgIERhdGFGb3JtYXRKUyA9IDE2LAogICAgIERhdGFG
b3JtYXRKU0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLAogICAgIERhdGFG
b3JtYXRKU0RvdWJsZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsCiAgICAgRGF0
YUZvcm1hdEpTQ2VsbCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLAogICAgIERhdGFG
b3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwKLSAgICAK
KyAgICBEYXRhRm9ybWF0SlNCaWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCaWdJ
bnQzMiwKKwogICAgIC8vIE1hcmtlciBkZWxpbWluYXRpbmcgb3JkaW5hcnkgZGF0YSBmb3JtYXRz
IGFuZCBPU1Itb25seSBkYXRhIGZvcm1hdHMuCiAgICAgRGF0YUZvcm1hdE9TUk1hcmtlciA9IDMy
LCAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODliOS4u
ODMwZjZkNjc1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0
Niw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAordm9pZCBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdz
IHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICBjYXNlIE5vbmU6CkBAIC02NywxMiArNjcsMTIgQEAg
dm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVW5hcnlB
cml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2Jz
ZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUu
dW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwg
bW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIEJpbmFyeUFyaXRoUHJv
ZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJl
c3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUuYmluYXJ5
QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
CmluZGV4IGU4YjY1ZWFkNDZlLi41MzM5MmM2MjUxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCkBAIC04Myw3ICs4Myw4IEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KIAotICAgIHZvaWQgZW1p
dFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKKyAgICAvLyBU
aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIGlzIG9ubHkgbmVlZGVkIG9uIDY0LWJpdHMgYnVpbGRzIChm
b3IgdGVzdGluZyBCaWdJbnQzMikuCisgICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxw
ZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2
ZVRhZ1JlZ2lzdGVycykgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRWYWx1ZShKU1ZhbHVlKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmluZGV4IDEwNTNiYTUyYjU0Li43NzFjNzliODU2YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM5LDEx
ICsyMzksNiBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHN0ck91dC5wcmludCgiU3ltYm9sIik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0KLSAgICAgICAgaWYg
KHZhbHVlICYgU3BlY0JpZ0ludCkKLSAgICAgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAog
ICAgIGlmICh2YWx1ZSA9PSBTcGVjSW50MzJPbmx5KQpAQCAtMjc4LDcgKzI3MywyMyBAQCB2b2lk
IGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9Ci0g
ICAgCisKKyAgICBpZiAoKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkKKyAgICAg
ICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSB7
CisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQzMikKKyAgICAgICAgICAgIHN0ck91dC5w
cmludCgiQmlnSW50MzIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKKworICAgICAgICBpZiAodmFsdWUgJiBTcGVjSGVhcEJpZ0ludCkKKyAgICAgICAgICAgIHN0
ck91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1Rv
cCA9IGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUlt
cHVyZU5hTikKICAgICAgICAgc3RyT3V0LnByaW50KCJEb3VibGVJbXB1cmVOYU4iKTsKICAgICAK
QEAgLTQzMSw3ICs0NDIsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0lu
Zm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OwogICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNCaWdJbnQ6OmluZm8oKSkKLSAgICAgICAg
cmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKIAogICAg
IGlmIChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4g
U3BlY0ZpbmFsT2JqZWN0OwpAQCAtNDk5LDggKzUxMCw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJu
IFNwZWNTdHJpbmc7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3lt
Ym9sVHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgaWYgKHN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJ
bnQ7CisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5
cGUpCisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBEZXJpdmVkQXJyYXlUeXBlKQogICAgICAgICByZXR1cm4gU3Bl
Y0Rlcml2ZWRBcnJheTsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpOwpAQCAtNTM2LDYgKzU0Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3Bl
Y0FueUludEFzRG91YmxlOwogICAgICAgICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwogICAg
IH0KKyAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gU3BlY0JpZ0lu
dDMyOwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKQEAg
LTU5NSw4ICs2MDgsOCBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9t
SlNUeXBlKEpTVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBjYXNl
IFN5bWJvbFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50
VHlwZToKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50VHlw
ZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGNhc2UgQXJyYXlUeXBlOgog
ICAgICAgICByZXR1cm4gU3BlY0FycmF5OwogICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAg
LTYzMiw2ICs2NDUsMTAgQEAgU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3Rs
eUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHkKIAogICAgIGlmICh0eXBl
ICYgU3BlY1N0cmluZykKICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5nOworCisgICAgaWYgKHR5
cGUgJiBTcGVjQmlnSW50KQorICAgICAgICB0eXBlIHw9IFNwZWNCaWdJbnQ7CisKICAgICByZXR1
cm4gdHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZC4uZGYwYjkxYTczNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsMTIgKzk4
LDE0IEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7
IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBh
IGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCi1zdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAg
PSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgorc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcEJpZ0ludCAgICAgICAgICAgICAgICAgICAg
ICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50IHRoYXQgaXMgYWxs
b2NhdGVkIG9uIHRoZSBoZWFwCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNC
aWdJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBzbWFsbCBCaWdJbnQgdGhhdCBpcyBpbmxpbmUgdGhlIEpTVmFsdWUKK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNCaWdJbnQzMiB8IFNwZWNIZWFwQmlnSW50Oworc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0g
MXVsbCA8PCA0MzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KIHN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01p
c2MgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCiBzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVj
VHlwZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50
cyB8IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3Qg
fCBTcGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3Bl
Y1dlYWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNw
ZWNEZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wg
fCBTcGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxs
Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlz
YzsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25s
eSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBT
cGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBT
cGVjQmlnSW50MzIgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJl
IGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJs
ZUltcHVyZU5hTi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2Rl
VG9wICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBT
cGVjRG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGlu
IGEgYnl0ZWNvZGUgbG9jYWwuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dWxsVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQnl0ZWNvZGVUb3AgfCBTcGVj
RnVsbE51bWJlcjsgLy8gSXQgY2FuIGJlIGFueXRoaW5nIHRoYXQgYnl0ZWNvZGUgY291bGQgc2Vl
IHBsdXMgZXhvdGljIGVuY29kaW5ncyBvZiBudW1iZXJzLgogCkBAIC0xODUsOSArMTg3LDE5IEBA
IGlubGluZSBib29sIGlzU3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAg
ICAgcmV0dXJuIHZhbHVlID09IFNwZWNTeW1ib2w7CiB9CiAKK2lubGluZSBib29sIGlzQmlnSW50
MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0JpZ0ludDMyOworfQorCitpbmxpbmUgYm9vbCBpc0hlYXBCaWdJbnRTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0hlYXBC
aWdJbnQ7Cit9CisKIGlubGluZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQ7CisgICAgcmV0dXJu
ICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBi
b29sIGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggZmEzYWJiZDExYWQuLmRkNDI2MDM1MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2Fy
aWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSwgUy5MLgogICoKQEAgLTE2NjgsNyArMTY2OCwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RXF1YWxpdHlPcEltcGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBS
ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYm
IHZhbHVlID09ICJiaWdpbnQiKSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQodGhpcywgZHN0LCBv
cC5tX3ZhbHVlKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1p
dCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEJpZ0ludFR5cGUpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUg
PT0gIm9iamVjdCIpIHsKQEAgLTI4NzYsNyArMjg4MCw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVp
bnQ4CiAgICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlm
aWVyLmltcGwoKSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWdu
ID8gSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2ln
bjo6VW5zaWduZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50Ojpw
YXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJ
bnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAg
ICAgIEpTVmFsdWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0o
KSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6
VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IDI5ODkzNzQwYTg1Li4wYTAwM2I4ZjZmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
MTA4OSw3ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVy
TWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVy
U3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRp
ZmllclJlcEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1h
cDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJp
Z0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2lu
ZyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFz
aE1hcDx1aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8
dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNi4uZTg4MjI1MDA2NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29u
c3RydWN0b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNh
Y2hlLmgiCkBAIC0yMTQsNyArMjEzLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0Fu
SWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAg
ICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1f
c3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAg
ICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBl
IHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlw
ZSk7CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09
IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9
PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVy
OgpAQCAtNTAyLDcgKzUwMSwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludDMyKTsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICB9IGVs
c2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNl
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzIsNyArNTM2LDEzIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEJpbmFyeUJpdHdpc2VPcChu
b2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2YgYmluYXJ5
VXNlS2luZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVjaWFsaXplIHRvIChmb3IgZXhhbXBsZSkg
YSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdodC1vcGVyYW5kLgor
ICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAg
ICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOworICAgICAgICAgICAg
QVNTRVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2Rl
LCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAg
LTcyMiwxMSArNzMyLDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIFZh
bHVlU3ViOgogICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFw
QmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAg
ICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICAg
ICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNwZWNTdHJpbmcgaGVyZSBmb3IgVmFsdWVT
dWI/IEl0IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0IGZvciBWYWx1ZUFkZC4KICAgICAgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIg
fCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTg4Niw2ICs4OTks
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBW
YWx1ZU5lZ2F0ZTogeworICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gbXVjaCBzbWFydGVy
IHRoaW5ncyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRkL1ZhbHVlU3ViLgogICAgICAgICBjbG9i
YmVyV29ybGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlTnVt
YmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTU4LDcgKzk3MiwxMSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCB0eXBlT2ZEb3VibGVJbmNPckRlYyhm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMy
VXNlOgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTk3NCw3ICs5OTIsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkWSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZFggJiYgY2hpbGRZICYmIGNo
aWxkWC5pc051bWJlcigpICYmIGNoaWxkWS5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAvLyBX
ZSBuZWVkIHRvIGNhbGwgYGRpZEZvbGRDbG9iYmVyV29ybGRgIGhlcmUgYmVjYXVzZSB0aGlzIHBh
dGggaXMgb25seSBwb3NzaWJsZQotICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlz
IFVudHlwZWRVc2UuIEluIHRoZSBjYXNlIG9mIEJpZ0ludFVzZSwgY2hpbGRyZW4gd2lsbCBiZQor
ICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlwZWRVc2UuIEluIHRoZSBj
YXNlIG9mIEFueUJpZ0ludFVzZSBvciBmcmllbmRzLCBjaGlsZHJlbiB3aWxsIGJlCiAgICAgICAg
ICAgICAvLyBjbGVhcmVkIGJ5IGBBYnN0cmFjdEludGVycHJldGVyOjpleGVjdXRlRWZmZWN0c2Au
CiAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAgICAgICAvLyBPdXIg
Ym94aW5nIHNjaGVtZSBoZXJlIG1hdGNoZXMgd2hhdCB3ZSBkbyBpbiBvcGVyYXRpb25WYWx1ZVBv
dy4KQEAgLTk4Miw3ICsxMDAwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmln
SW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5Miw3ICsxMDEyLDEwIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZU11bDogewotICAgICAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHdo
eSBpcyB0aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRoIFZhbHVlU3ViPworICAgICAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMDU2
LDcgKzEwNzksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAoaGFuZGxl
Q29uc3RhbnREaXZPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMzgwLDYgKzE0
MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51
bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElz
QmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAg
ICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTE0MDgsNiArMTQzNCw5IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzTnVtYmVyKCkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNC
aWdJbnQoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBOdW1i
ZXJJc0ludGVnZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFu
KE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNoaWxkLnZhbHVlKCkpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYyLDcgKzE1OTEsMjIgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUg
JiB+U3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCEo
Y2hpbGQubV90eXBlICYgU3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1Nl
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBpZiB0aGUgU3BlY3VsYXRlZFR5cGUgaW5mb3JtcyB1cyB0aGF0IHdl
IHdvbid0IGhhdmUgYSBCaWdJbnQzMiAob3IgdGhhdCB3ZSB3b24ndCBoYXZlIGEgSGVhcEJpZ0lu
dCksIHRoZW4gd2UgY2FuIHRyYW5zZm9ybSB0aGlzIG5vZGUgaW50byBhIElzQ2VsbFdpdGhUeXBl
KEJpZ0ludFR5cGUpIChvciBhIGh5cG90aGV0aWNhbCBJc0JpZ0ludDMyIG5vZGUpLgogCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAg
ICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwpAQCAtMTkzNiwxMyArMTk4MCwx
NSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
KyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBub3QgbGF0ZXIg
KGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxhY2VtZW50IGJ5IGZhbHNlKS4KKyAgICAgICAgLy8g
U2FhbSBzZWVtcyB0byBhZ3JlZSB0aGF0IHRoZSB0d28gY2hlY2tzIGNvdWxkIGJlIHN3aXRjaGVk
LCBJJ2xsIHRyeSB0aGF0IGluIGEgc2VwYXJhdGUgcGF0Y2gKICAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlz
aXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlNDLgotICAgICAg
ICAgICAgYXV0byBpc05vblN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1
ZS5pc1N0cmluZygpOworICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENv
bnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVh
cEJpZ0ludCgpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5n
Q2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KHJpZ2h0KSkgewor
ICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQobGVmdCkgfHwg
aXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAgICAgICAgICAg
ICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAgICAgICAgICAg
ICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTk1NywxOSArMjAwMywyNCBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0g
bm9kZS0+Y2hpbGQyKCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
Qm9vbGVhblVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
MzJVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVw
VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2Up
IHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNl
KSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpIHx8
Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKLSAg
ICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkg
fHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlz
Y1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRl
bnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKLSAgICAgICAgICAg
ICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNlKSB8fAotICAg
ICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBTdHJpbmdVc2Up
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IGNhc2Ugbm90IGludm9sdmlu
ZyBOYU4gd2hlcmUgeCA9PT0geCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gdHJ1ZT8KKyAg
ICAgICAgICAgIC8vIElmIG5vdCBJIG1pZ2h0IHNsaWdodGx5IHNpbXBsaWZ5IHRoYXQgY2hlY2su
CisgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCisgICAg
ICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKQorICAgICAgICAg
ICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkKKyAgICAgICAgICAg
ICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAgICAgICAg
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKKyAgICAgICAgICAgICAg
ICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisgICAgICAgICAg
ICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdW
YXJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmlu
Z1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKQorICAgICAgICAgICAgICAg
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAgICAgICAgICB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgICAgICB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQxZmEwYjMxNzg3Li5jOGMyNWMzMGQwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU1NjIs
NiArNTU2MiwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfbnVtYmVyKTsKICAgICAgICAgfQog
CisgICAgICAgIGNhc2Ugb3BfaXNfYmlnX2ludDogeworICAgICAgICAgICAgQVNTRVJUKFVTRV9C
SUdJTlQzMik7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcElzQmlnSW50PigpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNv
ZGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFw
aChJc0JpZ0ludCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX2JpZ19p
bnQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlwZTogewog
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0Nl
bGxXaXRoVHlwZT4oKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1f
b3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKaW5kZXggNzU5Yjc3ODBhNmMuLjAzZTg5YjI2ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNDksNiArMTQ5LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsOgogICAg
IGNhc2Ugb3BfaXNfYm9vbGVhbjoKICAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAgICBjYXNlIG9w
X2lzX2JpZ19pbnQ6CiAgICAgY2FzZSBvcF9pc19vYmplY3Q6CiAgICAgY2FzZSBvcF9pc19vYmpl
Y3Rfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiMjMxOGZlMDNhZS4uZWMxZWY5ZjAy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc1
LDYgKzE3NSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBJc1VuZGVmaW5l
ZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNh
c2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVj
dDoKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CkBAIC0yNjAsNyArMjYxLDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5v
dDoKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsK
KyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVl
KG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjg1LDcgKzY4Niw5
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgICAg
ICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgY2Fz
ZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgICAg
IGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNl
IFVudHlwZWRVc2U6CkBAIC03MDcsNyArNzEwLDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIFZhbHVlUG93OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6CiAgICAgY2FzZSBW
YWx1ZUJpdFJTaGlmdDoKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRV
c2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUtYXJndW1lbnQgaXNC
aW5hcnlVc2VLaW5kIHdvdWxkIHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXppbmcgKGZvciBleGFt
cGxlKSBmb3IgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdodC1v
cGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI0M2Y3Y2Y1
NGUxLi5hYzY4MzQzMzBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgY29uZGl0aW9u
IHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KICAgICAgICAgICAgICAgICAgICAgYXV0
byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAm
JiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJp
bmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICAgICAgICAgIH07CiAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQo
Y2hpbGQxQ29uc3RhbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggNTVkM2M4ZmQ1ZGMuLmVhYTViMjQxMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6
ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBA
IC0xNDcsNiArMTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2Fz
ZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2Vy
OgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGU5N2RlMTBmNmY0Li45
MjQ4NmZiYWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjAxLDE0ICsyMDEsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3Vs
dChOb2RlUmVzdWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxs
IGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lz
ZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0
byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7
CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9y
aWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNv
bnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgLy8gSGVhcEJpZ0ludHMgYXJlIGNlbGxzLCBz
byB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQmlnSW50MzIoKSkgeworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/
IFZhbHVlQWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwg
SlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJl
bi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBk
ZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGVub3VnaCBmb3Igbm93LgorICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciBoYXZpbmcgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9u
IGZvciBzbWFsbCBCaWdJbnRzIGluc3RlYWQuCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpT
Q2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhl
cndpc2UuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9wdGltaXplIGluYy9k
ZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4gdGhhdCBjYXNlLgog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVT
dWIpOwotICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9y
aWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5v
cmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IDEpKSkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5v
ZGVDb25zdGFudE9uZSkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKLSAgICAgICAgICAgICAgICAvLyBCaWdJbnRzIGFyZSBjdXJyZW50bHkgY2VsbHMs
IHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgLy8gVGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9
PSBJbmMgPyBBcml0aEFkZCA6IEFyaXRoU3ViKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRB
cml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwpAQCAtMjM0LDEyICsyNTQsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAg
ICAgICAgRWRnZSYgY2hpbGQyID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2Rl
KCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hp
bGQyLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQx
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyNlbmRpZgorCiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4o
Y2hpbGQyKTsKQEAgLTI2Nyw4ICsyOTUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1
ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOiB7CiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtMzEyLDcgKzM1MywxNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBpZiAo
b3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVC
aWdJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihvcGVy
YW5kRWRnZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5z
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbHNl
CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7Cisj
ZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRT
cGVjdWxhdGVVbnR5cGVkRm9yQml0T3BzKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5
cGVkVXNlPihvcGVyYW5kRWRnZSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ1Nyw5ICs1MDgs
MTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hp
bGQyLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQx
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNo
aWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludDMyKGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludDMyVXNlPihjaGlsZDIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQyKTsKKyNlbmRpZgogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtNTQ1LDgg
KzYwNCwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUt
PmNoaWxkMigpOwogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50
KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGxlZnRDaGlsZC5u
b2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmln
aHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNTg3LDEyICs2NTksMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGxlZnRDaGlsZCk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAgICAg
ICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmln
aHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGxl
ZnRDaGlsZCk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KHJpZ2h0Q2hpbGQp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihyaWdodENoaWxkKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOyAKICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobGVmdENoaWxkLm5vZGUoKSwg
cmlnaHRDaGlsZC5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNl
PihsZWZ0Q2hpbGQpOwpAQCAtNjU2LDEyICs3MzYsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgVmFsdWVQb3c6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQxKCku
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5l
cmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjaWYgVVNFKEJJ
R0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMjU0MCw2ICsyNjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNh
c2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgSXNPYmpl
Y3RPck51bGw6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVE
aXJlY3RBcmd1bWVudHM6CkBAIC0yODgwLDcgKzI5NjksMTYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50
KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTI5NTMsNyArMzA1MSwxNiBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgLy8gSWYgdGhlIHByZWRpY3Rpb24gb2YgdGhlIGNoaWxkIGlzIEJpZ0ludCwgd2Ug
YXR0ZW1wdCB0byBjb252ZXJ0IFRvTnVtZXJpYyB0byBJZGVudGl0eSwgc2luY2UgaXQgY2FuIG9u
bHkgcmV0dXJuIGEgQmlnSW50IHdoZW4gZmVkIGEgQmlnSW50LgogICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgp
KQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5kaWYKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MzMsMTMg
KzM1NDAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNh
c2UgS25vd25TdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNl
IEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICBjYXNlIFN0
cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAg
ICAgICAgICAgIGlmIChhbHdheXNVbmJveFNpbXBsZVByaW1pdGl2ZXMoKQogICAgICAgICAgICAg
ICAgIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAg
ICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9m
aXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhN
RTogd2hhdCBzaG91bGQgd2UgZG8gYWJvdXQgQmlnSW50MzJVc2UgYW5kIEFueUJpZ0ludFVzZSA/
CisgICAgICAgIC8vIEFsc28gbW9yZSBicm9hZGx5LCB3aGF0IGFib3V0IGFsbCBvZiB0aGUgVXNl
S2luZHMgd2hpY2ggYXJlIG5vdCBsaXN0ZWQgaW4gdGhhdCBzd2l0Y2g/CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzk0OSwxMiArNDA1OCwyNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhD
b21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRP
cEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3Mo
Q29tcGFyZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQo
KSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewogICAg
ICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggYjkyODgxMGUxMDEuLmY4MTcwZDky
YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNp
bmNsdWRlICJERkdOdWxsQWJzdHJhY3RTdGF0ZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlmLi45N2YxN2EwODkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTQxLDYgKzI1NDEsMTggQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzU3ltYm9sU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMigp
CisgICAgeworICAgICAgICByZXR1cm4gaXNCaWdJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24o
KSk7CisgICAgfQorI2VuZGlmCisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50KCkKICAg
ICB7CkBAIC0yNzQxLDcgKzI3NTMsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJ
bnQoKTsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgc3RhdGljIGJvb2wg
c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoTm9kZSogb3AxLCBOb2RlKiBvcDIpCisgICAgeworICAg
ICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpICYmIG9wMi0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIoKTsKKyAgICB9CisjZW5kaWYKKworICAgIHN0YXRpYyBib29sIHNo
b3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoTm9kZSogb3AxLCBOb2RlKiBvcDIpCisgICAgeworICAg
ICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkgJiYgb3AyLT5zaG91
bGRTcGVjdWxhdGVIZWFwQmlnSW50KCk7CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
U3BlY3VsYXRlRmluYWxPYmplY3QoTm9kZSogb3AxLCBOb2RlKiBvcDIpCiAgICAgewogICAgICAg
ICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpICYmIG9wMi0+c2hvdWxk
U3BlY3VsYXRlRmluYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAppbmRleCBlMjExZWE3N2Q4NS4uYWYwZjNmNzQwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM5NSw2ICszOTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSXNVbmRlZmluZWRPck51bGwsIE5vZGVSZXN1bHRC
b29sZWFuKSBcCiAgICAgbWFjcm8oSXNCb29sZWFuLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAg
IG1hY3JvKElzTnVtYmVyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIC8qIElzQmlnSW50IGlz
IG9ubHkgdXNlZCB3aGVuIFVTRV9CSUdJTlQzMi4gT3RoZXJ3aXNlIHdlIGVtaXQgSXNDZWxsV2l0
aFR5cGUgKi9cCisgICAgbWFjcm8oSXNCaWdJbnQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAg
bWFjcm8oTnVtYmVySXNJbnRlZ2VyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElz
T2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0T3JOdWxsLCBO
b2RlUmVzdWx0Qm9vbGVhbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAKaW5kZXggMjNlYmUwZDdiYzcuLmIyMjExOWI5ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTM4MywxMCArMzgzLDEzIEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhp
dCwgY29uc3QKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBiZSBzdXJlIHRoYXQgd2UgaGF2
ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2UgdGhlIG51bWJlclRhZ1JlZ2lzdGVyLAogICAgICAg
ICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCiAgICAgICAgICAg
ICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVT
b3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAgICAgIC8vIFdlIGFsc28gdXNlIHRo
ZSBub3RDZWxsTWFza1JlZ2lzdGVyIGFzIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLCBmb3IgdGhlIHNh
bWUgcmVhc29uLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBmaW5kIGEgbGVzcyBncm9zcyB3
YXkgb2YgZG9pbmcgdGhpcywgbWF5YmUgdGhyb3VnaCBkZWxheWluZyB0aGVzZSBvcGVyYXRpb25z
IHVudGlsIHdlIGFjdHVhbGx5IGhhdmUgc29tZSBzcGFyZSByZWdpc3RlcnMgYXJvdW5kPworICAg
ICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBE
b05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
Z3ByKCkpKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSwgR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSwgR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAg
ICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgpAQCAtMzk4
LDcgKzQwMSw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQs
IFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyBzY3JhdGNoKHNjcmF0Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNl
LmFzQWRkcmVzcygpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgc2NyYXRjaCwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAg
ICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKQEAgLTQwNywxMCArNDEwLDEw
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2
ZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwog
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1Zh
bHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCB2YWx1ZSwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgaml0LnBv
cFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVn
cygpKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQu
bV9qc1ZhbHVlU291cmNlLnJlZ3MoKSwgSW52YWxpZEdQUlJlZyk7CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMuLmUwZTg3MjFlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCmluZGV4IDJmZGI5YzlkNzY3Li5hMjY1YzBhYTcwMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODYsNyArODYsNiBAQAogI2lu
Y2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL0lubGluZUFTTS5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBF
TkFCTEUoSklUKQogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjIxLDU2ICsyMjAsNiBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbAogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0
LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRP
cGVyYXRpb24sIHR5cGVuYW1lIE51bWJlck9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIE51bWJlck9wZXJhdGlvbiYmIG51bWJlck9w
LCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7
Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1
dG8gcmlnaHROdW1lcmljID0gb3AyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9wKFdURjo6
Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykp
KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgSW50
MzJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaXR3aXNl
QmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRp
b24mJiBiaWdJbnRPcCwgSW50MzJPcGVyYXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBlcnJv
ck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNW
YWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnRO
dW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1l
cmljID0gb3AyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0K
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGludDMyT3AoV1RGOjpnZXQ8aW50
MzJfdD4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSkpOwot
fQotCiBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBwYXJzZUludFJlc3VsdChk
b3VibGUgaW5wdXQpCiB7CiAgICAgaW50IGFzSW50ID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1dCk7
CkBAIC00NzAsNzEgKzQxOSwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlTW9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBh
dXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBK
U0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0K
LSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRv
dWJsZSB7Ci0gICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAg
IHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3Ay
LCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpn
ZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcih2YWx1ZSArIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzSW5jKGds
b2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51
bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZh
bHVlID0gV1RGOjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih2YWx1ZSAtIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzRGVjKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSk7CiAKLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKH5XVEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3ApKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU0MywxNSArNDU1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10g
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCog
cmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAg
IHJldHVybiBsZWZ0ICYgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGlu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAn
YW5kJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lz
ZUFuZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTYwLDE1
ICs0NjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9w
ID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0Jp
Z0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0
d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGlu
dDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAg
ICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VC
aW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRP
cCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3
aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jp
dHdpc2VPcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU3
NywxNSArNDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0
byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7
Ci0gICAgICAgIHJldHVybiBsZWZ0IF4gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3
aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmln
SW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
Yml0d2lzZSAneG9yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQml0d2lzZVhvcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MikKQEAgLTU5NCwxNSArNDgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
YXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9Owot
Ci0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
aW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IDw8IChyaWdodCAmIDB4MWYpOwotICAgIH07
Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRP
cDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0xTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikKQEAgLTYxMSwxNSArNDkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQs
IGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA+PiAocmln
aHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxP
YmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQg
b3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JTaGlmdChnbG9i
YWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NTcsMTUgKzUy
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBb
XSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50
KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3Ag
PSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0
dXJuIGxlZnQgLyByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVyYXRpb24u
Iik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RpdihnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY3NCwxNSArNTM4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCog
ewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVm
dCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0
aFBvdyhsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxP
YmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3Bl
cmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1BvdyhnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDIpKSk7CiB9CiAKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCkBAIC0x
NDc5LDcgKzEzMzUsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgcmVnZXhwLT50ZXN0KGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTE0OTEsNyArMTM0Nyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
dWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0
dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogb3AxKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTAy
LDcgKzEzNTgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0lu
dDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUxNCw3
ICsxMzcwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6
Om11bHRpcGx5KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAg
ICAgCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTUyNiw3ICsxMzgyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAg
ICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCBy
aWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2Qmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUzOCw3ICsxMzk0LDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxl
ZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU1MCw3ICsxNDA2LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0
ZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMTU2Miw3ICsxNDE4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1
cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRP
cGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NzQsNyArMTQzMCw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFs
T2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1ODYsNyAr
MTQ0Miw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50Ojph
ZGQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE1OTgsNyArMTQ1NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAg
ICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYxMCw3ICsxNDY2LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihn
bG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTYyOCw3ICsxNDg0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAg
cmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBv
cDEsIG9wMik7CisgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFs
T2JqZWN0LCBvcDEsIG9wMik7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNh
bWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBhcmcx
LCBFbmNvZGVkSlNWYWx1ZSBhcmcyKQpAQCAtMTY3MywxMCArMTUyOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gdmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1
ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPih2YXJpYW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShX
VEY6OmdldDxKU0JpZ0ludCo+KHZhcmlhbnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4odmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0
aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRl
eCAwZjFjODc1NGNkNi4uM2YwNGY4OWNkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTgxLDE4ICsxODEsMTggQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVj
dCosIEoKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoSlNHbG9iYWxP
YmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZf
SU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
b2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
b3AxKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JI
ZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChWTSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1i
b2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVEaXJlY3RBcmd1bWVudHMoVk0qLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgs
IHVpbnQzMl90IG1pbkNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4
YjM4YzEuLmUzY2Y3OTVjNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTMyLDcgKzUz
MiwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjU3ltYm9sKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkg
eworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmln
SW50MzIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisj
ZW5kaWYKKworICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMDAzLDYgKzEwMTUsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVk
T3JOdWxsOgogICAgICAgICBjYXNlIElzQm9vbGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoK
KyAgICAgICAgY2FzZSBJc0JpZ0ludDoKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAg
ICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgIGNhc2UgSXNPYmplY3RPck51bGw6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIy
ZDE0Li5kNTU4YTc1Nzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKQEAgLTc5LDcgKzc5LDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmlu
Z1VzZToKICAgICAgICAgY2FzZSBTdHJpbmdPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN5bWJv
bFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNl
OgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6
CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3Ry
aW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKQEAgLTI2Myw2ICsy
NjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgSXNVbmRlZmluZWRPck51
bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElz
QmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAg
ICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTY3NSwxMCArNjc4LDEwIEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBWYWx1ZURpdjoKICAgICBjYXNlIFZhbHVlTW9kOgogICAg
IGNhc2UgVmFsdWVQb3c6Ci0gICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRV
c2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAg
ICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2U7CisgICAgICAg
IHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZTsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAwMmU4ZDA2ODA3OS4uNWUxOTIzNDQ0
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTcwNiw2ICsxNzA2LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZUJyYW5jaChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBj
b21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpKQorICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQmln
SW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNlbmRpZgogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1
MlJlcFVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChub2RlLCBi
cmFuY2hOb2RlLCBjb25kaXRpb24pOwpAQCAtMzUzMywyNCArMzUzNyw0NyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKIHsKICAgICBFZGdlJiBj
aGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKIAotICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEJp
Z0ludFVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3BlcmFu
ZCh0aGlzLCBjaGlsZDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIC8vIFRoZSBm
b2xsb3dpbmcgdHJpY2sgcmVsaWVzIG9uIGRldGFpbHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9m
IEJpZ0ludDMyLCBhbmQgd2lsbCBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYgd2UgbW92ZSBiaXRzIGFy
b3VuZC4KKyAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMlRhZyA9PSAweDEy
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMk1hc2sgPT0gMHhmZmZl
MDAwMDAwMDAwMDEyKTsKKyAgICAgICAgY29uc3RleHByIHVpbnQ2NF90IG1hc2tGb3JCaWdJbnQz
MkJpdHMgPSAweDAwMDBmZmZmZmZmZjAwMDA7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShKU1Zh
bHVlOjpCaWdJbnQzMk1hc2sgJiBtYXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTY0KG1hc2tGb3JCaWdJbnQzMkJpdHMpLCByZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC54b3I2NChvcGVyYW5kLmdwcigpLCByZXN1bHRHUFIpOworCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50
CisjZW5kaWYKKworICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEpOwogICAg
ICAgICBHUFJSZWcgb3BlcmFuZEdQUiA9IG9wZXJhbmQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3Vs
YXRlQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQoY2hpbGQxLCBvcGVyYW5kR1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25CaXROb3RCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
ZXJhbmRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEpTVmFsdWVPcGVy
YW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICBBU1NFUlQoY2hpbGQxLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlIHx8IGNoaWxkMS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgY2hpbGQxKTsgLy8gUmVxdWlyZWQgZm9yIHRoZSBB
bnlCaWdJbnRVc2UgY2FzZQogICAgIEpTVmFsdWVSZWdzIG9wZXJhbmRSZWdzID0gb3BlcmFuZC5q
c1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTM1NzgsMTQgKzM2MDUs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VOb3QoTm9kZSogbm9kZSkK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU25pcHBldEdlbmVyYXRvciwgSl9KSVRPcGVyYXRpb25f
R0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uPgotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVu
dHlwZWRCaXRPcChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRP
ckFueUJpZ0ludEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCisg
ICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBsZWZ0Q2hpbGQu
dXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisKICAgICBp
ZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVy
KHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hp
bGQpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRl
KG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTM2
MzAsMTEgKzM2NjEsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChO
b2RlKiBub2RlKQogICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwg
IXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0
KCkpIHsKLSAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxl
ZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOyAvLyBSZXF1aXJlZCBmb3IgQW55Qmln
SW50VXNlCiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAg
ICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0LmVtcGxhY2Uo
dGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJp
Z2h0Q2hpbGQpOyAvLyBSZXF1aXJlZCBmb3IgQW55QmlnSW50VXNlCiAgICAgICAgIHJpZ2h0UmVn
cyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzY3MCw1MiArMzcwMyw4NCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXR3aXNlT3AoTm9kZSogbm9kZSkK
ICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENo
aWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2Ug
JiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKwog
ICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAg
ICAgICBlbWl0VW50eXBlZEJpdE9wPEpJVEJpdEFuZEdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVC
aXRBbmQ+KG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFZhbHVlQml0
WG9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRYb3JHZW5lcmF0b3IsIG9w
ZXJhdGlvblZhbHVlQml0WG9yPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gvYm94OiBiaXRBbmQgZG9lcyBub3QgaW50ZXJmZXJlIHdp
dGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5hbmQ2NChyaWdo
dC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZh
bHVlQml0T3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBlZEJpdE9wPEpJVEJpdE9yR2VuZXJhdG9y
LCBvcGVyYXRpb25WYWx1ZUJpdE9yPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gvYm94OiBiaXRPciBkb2VzIG5vdCBpbnRlcmZlcmUg
d2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAgICAgICAgICAgIG1faml0Lm9yNjQocmln
aHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBW
YWx1ZUJpdFhvcjoKKyAgICAgICAgICAgIC8vIEJpdFhvciByZW1vdmVzIHRoZSB0YWcsIHNvIHdl
IG11c3QgYWRkIGl0IGJhY2sgYWZ0ZXIgZG9pbmcgdGhlIG9wZXJhdGlvbgorICAgICAgICAgICAg
bV9qaXQueG9yNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBtX2ppdC5v
cjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdEdQUik7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJU
KGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgp
ID09IEJpZ0ludFVzZSk7Ci0gICAgCi0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBH
UFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQg
Zm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENo
aWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09
IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdwcigp
OworICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIHNwZWN1bGF0
ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENo
aWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQ
Uik7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAg
ICAgc3dpdGNoIChvcCkgeworICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgorICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdFhvcjoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVmFsdWVCaXRPcjoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0T3JIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBzd2l0Y2ggKG9wKSB7
CiAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRBbmRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGVtaXRVbnR5cGVkT3JBbnlC
aWdJbnRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0QW5kPihub2Rl
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0WG9yQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0WG9yR2VuZXJhdG9yLCBvcGVyYXRp
b25WYWx1ZUJpdFhvcj4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0
T3I6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0T3JCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcDxKSVRCaXRPckdl
bmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAg
ICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
LQotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQml0d2lzZU9wKE5vZGUq
IG5vZGUpCkBAIC0zNzU1LDcgKzM4MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Qml0d2lzZU9wKE5vZGUqIG5vZGUpCiAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Ao
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdo
dFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKIHsKICAgICBKX0pJVE9wZXJhdGlvbl9HSkogc25pcHBl
dFNsb3dQYXRoRnVuY3Rpb24gPSBub2RlLT5vcCgpID09IFZhbHVlQml0UlNoaWZ0CiAgICAgICAg
ID8gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQgOiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQ7CkBA
IC0zNzY1LDkgKzM4MzAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGls
ZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAo
aXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJp
Z2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxl
ZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQp
OworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25O
b3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0
Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0zODU5LDI3ICszOTI2
LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVm
dEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdwcigp
OwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkJpdExTaGlmdEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkJpdExTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSAmJiBy
aWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBlbWl0VW50eXBlZEJpdE9w
PEpJVExlZnRTaGlmdEdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQ+KG5vZGUpOwor
ICAgIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9w
ZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCkBAIC0zODg3LDI3ICszOTU0LDI3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgeworICAgIC8vIEZJWE1FOiBzdXBwb3J0IEJpZ0ludDMyCisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxl
ZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRS
U2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRSU2hpZnRI
ZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSAmJiByaWdodENoaWxk
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRP
cChub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2hpZnRPcChOb2RlKiBub2RlKQpAQCAt
MzkxOCw3ICszOTg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9k
ZSogbm9kZSkKIAogICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVChvcCA9PSBCaXRVUlNoaWZ0KTsKLSAgICAgICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0
T3Aobm9kZSk7CisgICAgICAgIGVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3Aobm9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM5NDgsMTkgKzQwMTUsNjkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYg
bGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUt
PmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7
Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50MzJVc2UpKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5lZWQgdGhp
cyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0ID8KKyAgICAgICAg
Ly8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJpY2tzIGZvciBhIG1v
cmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1w
LmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3Zl
KHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1w
R1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUg
b3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2pp
dC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQ
UiwgcmVzdWx0R1BSKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHBhc3MgYW4gaW5m
b3JtYXRpdmUgU3BlY3VsYXRpb25SZWNvdmVyeT8KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhP
dmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIC8vIEZJWE1FOiBz
aG91bGQgSSBkbyBhbnl0aGluZyB0byBmcmVlIHRlbXBHUFI/CisgICAgICAgIG1faml0LmJveEJp
Z0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxl
ZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFs
dWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVS
ZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2FsbCBhIG1vcmUgc3Bl
Y2lhbGl6ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFk
ZE5vdE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRS
ZWdzLCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmln
SW50CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0
KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRCaWdJbnQsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwpAQCAtNDAwNiw0NCArNDEyMyw5MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEo
KTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVl
ZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29sIG5lZWRzU2NyYXRj
aEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsK
LSNlbmRpZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2Ug
cmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3Jp
Z2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIg
dHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5i
b3hCaWdJbnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBt
X2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKLSAgICAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwotICAgICAg
ICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworICAgICAg
ICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hTdWIzMihN
YWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsK
IAotICAgICAgICBjb21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcs
IG5lZWRzU2NyYXRjaEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHBhc3MgYW4gaW5mb3JtYXRpdmUg
U3BlY3VsYXRpb25SZWNvdmVyeT8KKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgSSBk
byBhbnl0aGluZyB0byBmcmVlIHRlbXBHUFI/CisgICAgICAgIG1faml0LmJveEJpZ0ludDMyKHJl
c3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJp
Z0ludDMyL0hlYXBCaWdJbnQKIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJp
Z0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOworICAgIC8vIEZJ
WE1FOiB3aHkgZG8gY29tcGlsZVZhbHVlQWRkL2NvbXBpbGVWYWx1ZU11bCB1c2UgaXNLbm93bk5v
dE51bWJlciBidXQgbm90IFZhbHVlU3ViPworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQW55QmlnSW50VXNlKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVm
dENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBzcGVjdWxhdGVBbnlCaWdJbnQobGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlQW55
QmlnSW50KHJpZ2h0Q2hpbGQpOworICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQu
anNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNW
YWx1ZVJlZ3MoKTsKIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJp
Z2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
IEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25WYWx1ZVN1YiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCi0gICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgc3BlY3Vs
YXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByaWdodEdQ
UiA9IHJpZ2h0LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdWJCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAg
ICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAotICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdWJIZWFwQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisKKyAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1NjcmF0Y2hG
UFJSZWcgPSBmYWxzZTsKKyNlbHNlCisgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVl
OworICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxv
Y2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOworICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgSklUU3ViSUMq
IHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7Cisg
ICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwor
ICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CisKKyAg
ICBjb21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcsIG5lZWRzU2Ny
YXRjaEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwor
ICAgIHJldHVybjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
UmVwYXRjaGluZ0Z1bmN0aW9uLCB0eXBlbmFtZSBOb25SZXBhdGNoaW5nRnVuY3Rpb24+CkBAIC00
NjEzLDYgKzQ3NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9k
ZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2Rl
KQogewogICAgIC8vIEluIGFsbCBvdGhlciBjYXNlcyB0aGUgbm9kZSBzaG91bGQgaGF2ZSBiZWVu
IHRyYW5zZm9ybWVkIGludG8gYW4gYWRkIG9yIGEgc3ViIGJ5IEZpeHVwUGhhc2UKKyAgICAvLyBG
SVhNRTogSSBkb24ndCB0aGluayB0aGlzIGlzIHRydWUsIHdlIHNob3VsZCBwcm9iYWJseSBoYXZl
IHNvbWUgcGF0aCBmb3IgQW55QmlnSW50LgogICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSk7CiAKICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtNDYyOCw2ICs0Nzk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBh
dGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHByb2JhYmx5IGFsc28gZm9yIEhlYXBCaWdJ
bnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgo
KS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUlu
ZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CkBAIC00ODA4LDI5ICs0OTc2LDYzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwog
ICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChsZWZ0Q2hp
bGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUgYmV0d2VlbiBj
b21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29tcGlsZVZhbHVlTXVsIGZvciBC
aWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8gZ2V0IHJpZCBvZiB0aGUgZHVw
bGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5l
ZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0ID8KKyAg
ICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJpY2tzIGZv
ciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BS
KTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQz
Mih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0
ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sg
PSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwg
dGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHBhc3Mg
YW4gaW5mb3JtYXRpdmUgU3BlY3VsYXRpb25SZWNvdmVyeT8KKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIC8vIEZJ
WE1FOiBzaG91bGQgSSBkbyBhbnl0aGluZyB0byBmcmVlIHRlbXBHUFI/CisgICAgICAgIG1faml0
LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBv
cnQgZm9yIG1peGVkIEJpZ0ludDMyL0hlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxlZnRD
aGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENo
aWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQ
Uik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTXVsQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxl
ZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7
Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0
Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC01MDEwLDI5ICs1MjEy
LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJp
Z0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBG
SVhNRTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMi4gQ3VycmVudGx5IHdlIGdvIHRocm91
Z2ggdGhlIHNsb3cgcGF0aCwgYmVjYXVzZSBvZiBob3cgdWdseSB0aGUgY29kZSBmb3IgRGl2IGdl
dHMuCisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAg
IEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0g
cmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQ
Uik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGl2QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGl2SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlz
S25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAgIEpTVmFsdWVPcGVy
YW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQo
dGhpcywgcmlnaHRDaGlsZCk7CisgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5v
ZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkgfHwgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQo
dGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENo
aWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAK
QEAgLTUwNDYsNiArNTI1Miw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURp
dihOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgQVNTRVJUKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSk7CisKICAgICBPcHRpb25hbDxKU1ZhbHVlT3Bl
cmFuZD4gbGVmdDsKICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CiAKQEAgLTUy
OTUsMjkgKzU1MDMsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTW9kKE5v
ZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRn
ZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoIGZv
ciBCaWdJbnQzMi4gQ3VycmVudGx5IHdlIGdvIHRocm91Z2ggdGhlIHNsb3cgcGF0aCwgYmVjYXVz
ZSBvZiBob3cgdWdseSB0aGUgY29kZSBmb3IgTW9kIGdldHMuCisKKyAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RC
aWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJp
Z2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywg
bGVmdENoaWxkKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgcmlnaHRDaGlsZCk7Cisg
ICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxk
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hp
bGQpOworICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICBKU1ZhbHVlUmVncyBv
cDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3Mgb3AyUmVncyA9IG9w
Mi5qc1ZhbHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC01ODU5LDMwICs2MDcx
LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVBvdyhOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGRvIHdlIHdhbnQgYSBmYXN0IHBhdGggZm9yIEJp
Z0ludDMyIGZvciBQb3c/IEkgZXhwZWN0IGl0IHdvdWxkIG92ZXJmbG93IHByZXR0eSBvZnRlbi4K
KyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Qb3dCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Qb3dIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKKyAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwogCi0g
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhp
cywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0
Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwog
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTYw
MzAsNiArNjI0NSwxMiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUs
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBjb21waWxlQmlnSW50MzJDb21w
YXJlKG5vZGUsIGNvbmRpdGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5k
aWYKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVJbnQ1MkNvbXBhcmUobm9kZSwgY29uZGl0aW9u
KTsKQEAgLTYwNTcsNiArNjI3OCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9k
ZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAg
ICAgICBjb21waWxlU3RyaW5nSWRlbnRDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CisgICAgCisgICAgLy8gRklYTUU6IGFkZCBIZWFwQmlnSW50
IGNhc2UgaGVyZSAoYW5kIGFkZCBhIGNvcnJlc3BvbmRpbmcgdGVzdCwgd2Ugc2hvdWxkIHJlYWxs
eSBoYXZlIGNhdWdodCB0aGlzKQogCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7
CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpIHsKQEAgLTYx
MzYsNyArNjM1OSwyNCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9k
ZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSNpZiBVU0UoSlNW
QUxVRTY0KSAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sg
PSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOworICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2Nr
ICE9IFVJTlRfTUFYKSB7CisgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+
YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0lu
dDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CisgICAg
ICAgICAgICB1c2Uobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrID0gYnJhbmNoSW5kZXhJbkJsb2NrOwor
ICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJyYW5jaE5vZGU7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjb21waWxlQmlnSW50MzJDb21wYXJlKG5vZGUs
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisj
ZW5kaWYKKworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAh
PSBVSU5UX01BWCkgewpAQCAtNjE4Myw4ICs2NDIzLDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCi0gICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAg
ICAgIGNvbXBpbGVCaWdJbnRFcXVhbGl0eShub2RlKTsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxp
dHkobm9kZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC02Mjc4LDgg
KzY1MTgsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9k
ZSkKICAgICAgICAgY29tcGlsZVN0cmluZ1RvVW50eXBlZEVxdWFsaXR5KG5vZGUsIG5vZGUtPmNo
aWxkMigpLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgCi0gICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2Up
KTsKKworICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpOwogICAgIHJldHVybiBub25TcGVjdWxh
dGl2ZVN0cmljdEVxKG5vZGUpOwogfQogCkBAIC0xMDU0MSwxOCArMTA3ODEsMTggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3ltYm9sKEVkZ2UgZWRnZSkKICAgICBzcGVjdWxhdGVT
eW1ib2woZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQogewotICAgIERG
R19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3Bl
Y0NlbGxDaGVjayB8IFNwZWNCaWdJbnQsIG1faml0LmJyYW5jaElmTm90QmlnSW50KGNlbGwpKTsK
KyAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRn
ZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFw
QmlnSW50KGNlbGwpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50
KEVkZ2UgZWRnZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRn
ZSBlZGdlKQogewogICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywg
ZWRnZSk7Ci0gICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdENlbGwoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzKQpA
QCAtMTA3MjIsOCArMTA5NjIsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5v
ZGUqLCBFZGdlIGVkZ2UpCiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN5
bWJvbChlZGdlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAgICAg
IHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgY2FzZSBCaWdJ
bnQzMlVzZToKKyAgICAgICAgc3BlY3VsYXRlQmlnSW50MzIoZWRnZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQoZWRn
ZSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAg
ICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFN0cmluZ09iamVjdFVzZToKICAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0KGVkZ2UpOwpA
QCAtMTMwNzMsMTcgKzEzMzIxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051
bWVyaWMoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBhcmd1bWVudFJlZ3MgPSBhcmd1bWVu
dC5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogICAgIEdQUlJlZyBzY3JhdGNoID0gdGVtcC5ncHIoKTsKKyAgICAvLyBGSVhNRTogYWRk
IGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlIChhbmQgZm9yIHR5cGVPZiwgYW5kIGZvciBi
b29saWZ5IG9yIHdoYXRldmVyIGl0IGlzIGNhbGxlZCBpbiB0aGlzIGZpbGUpLgogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJndW1lbnRSZWdzKTsKLSAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90QmlnSW50KGFyZ3VtZW50UmVncy5wYXls
b2FkR1BSKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0JpZ0ludCA9IG1faml0Lmp1
bXAoKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChh
cmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNI
ZWFwQmlnSW50ID0gbV9qaXQuanVtcCgpOwogCiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE51bWJlcihhcmd1bWVudFJlZ3Ms
IHNjcmF0Y2gpKTsKIAotICAgIGlzQmlnSW50LmxpbmsoJm1faml0KTsKKyAgICBpc0hlYXBCaWdJ
bnQubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRSZWdzLCBy
ZXN1bHRSZWdzKTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVtZXJpYywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwpAQCAtMTM5NDIsOSArMTQxOTEsOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5v
ZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgbV9jdXJyZW50Tm9kZSA9IGJyYW5jaE5vZGU7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2Rl
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKiBu
b2RlKQogewotICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVzZQorICAgIC8vIEZJWE1FOiBb
RVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVh
bHMgZm9yIGJpZyBpbnRzCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjg5NQogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKQEAgLTEzOTU2LDggKzE0MjA1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiAgICAgbGVmdC51c2UoKTsKICAgICByaWdo
dC51c2UoKTsKIAotICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7
Ci0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CisgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7CisgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOwogCiAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90RXF1YWxDYXNlID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjFmYjBlOGM5N2EuLmE2NTVkZTk4M2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQ2LDYg
KzM0Niw5IEBAIHB1YmxpYzoKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlKTsK
ICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVCb29sZWFuKEVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBHUFJSZWcgZmlsbFNw
ZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworI2VuZGlmCiAgICAgR2VuZXJhdGVkT3BlcmFuZFR5cGUg
Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQzMihOb2RlKik7CiAKICAgICB2b2lkIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4pOwpAQCAtMTE0
OCw2ICsxMTUxLDkgQEAgcHVibGljOgogICAgIGJvb2wgY29tcGlsZVBlZXBIb2xlQnJhbmNoKE5v
ZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZUNvbmRpdGlvbiwgU19KSVRPcGVyYXRpb25fR0pKKTsKICAgICB2b2lkIGNvbXBpbGVQ
ZWVwSG9sZUludDMyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5j
aChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMy
QnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CisjZW5kaWYKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2go
Tm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlKiwgTm9kZSogYnJh
bmNoTm9kZSwgSklUQ29tcGlsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CkBAIC0xMTcy
LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTWlzY1N0cmljdEVxKE5vZGUq
KTsKIAogICAgIHZvaWQgY29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqKTsKLSAgICB2b2lkIGNv
bXBpbGVCaWdJbnRFcXVhbGl0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlSGVhcEJpZ0ludEVx
dWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1
YWxpdHkoTm9kZSosIEVkZ2Ugc3ltYm9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7CiAKQEAgLTEy
MjIsNiArMTIyOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlQmlnSW50MzJDb21w
YXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjZW5kaWYK
ICAgICB2b2lkIGNvbXBpbGVCb29sZWFuQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSos
IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVN0cmlu
Z0NvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKQEAg
LTEyOTcsMTEgKzEzMDYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUJpdHdpc2VOb3Qo
Tm9kZSopOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU25pcHBldEdlbmVyYXRvciwgSl9KSVRP
cGVyYXRpb25fR0pKIHNsb3dQYXRoRnVuY3Rpb24+Ci0gICAgdm9pZCBlbWl0VW50eXBlZEJpdE9w
KE5vZGUqKTsKKyAgICB2b2lkIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQml0d2lzZU9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJp
dHdpc2VPcChOb2RlKik7CiAKLSAgICB2b2lkIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5v
ZGUqKTsKKyAgICB2b2lkIGVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZVZhbHVlTFNoaWZ0T3AoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZVZhbHVlQml0UlNoaWZ0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTaGlmdE9wKE5vZGUqKTsK
QEAgLTE1NzksNiArMTU4OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMihF
ZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBBbnlJbnQoRWRn
ZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9p
ZCBzcGVjdWxhdGVCaWdJbnQzMihFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChF
ZGdlKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3Bl
Y3VsYXRlRG91YmxlUmVwUmVhbChFZGdlKTsKQEAgLTE2MjgsOCArMTY0MSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQg
c3BlY3VsYXRlU3ltYm9sKEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5
bWJvbChFZGdlKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7
Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVIZWFw
QmlnSW50KEVkZ2UsIEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihF
ZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOwpAQCAtMjYwNyw2ICsyNjIwLDU2IEBAIHBy
aXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAorI2lmIFVTRShCSUdJTlQz
MikKK2NsYXNzIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkK
KyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlk
R1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkp
CisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisKKyAgICB+U3BlY3VsYXRlQmlnSW50MzJPcGVy
YW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorCisg
ICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAg
fQorCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgp
Lm5vZGUoKTsKKyAgICB9CisKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmICht
X2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFs
aWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UoKSk7CisgICAgICAgIHJldHVy
biBtX2dwck9ySW52YWxpZDsKKyAgICB9CisKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAg
ICBtX2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZl
SklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
Cit9OworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogI2RlZmluZSBERkdfVFlQRV9DSEVDS19X
SVRIX0VYSVRfS0lORChleGl0S2luZCwgc291cmNlLCBlZGdlLCB0eXBlc1Bhc3NlZFRocm91Z2gs
IGp1bXBUb0ZhaWwpIGRvIHsgXAogICAgICAgICBKU1ZhbHVlU291cmNlIF9kdGNfc291cmNlID0g
KHNvdXJjZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFZGdlIF9kdGNf
ZWRnZSA9IChlZGdlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggYjAxOWQ4NWRmOWMuLjNlYTlmM2M5N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQxODUs
NyArNDE4NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBo
KCksIG5vZGUsICJDaGVja0FycmF5T3JFbXB0eSBvbmx5IHVzZWQgaW4gNjQtYml0IERGRyIpOwog
ICAgICAgICBicmVhazsKLSAgICAgICAgCisKKyAgICBjYXNlIElzQmlnSW50OgorICAgICAgICBE
RkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIklzQmlnSW50IGlzIG9ubHkgdXNlZCB3aGVu
IFVTRV9CSUdJTlQzMiwgd2hpY2ggY2FuIG9ubHkgYmUgdHJ1ZSBpbiA2NCBiaXQgbW9kZSIpOwor
ICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCBiMDdjYjI1NzVkMS4uOWQ4NmQ1ZTQ1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzOCw3ICsxMzgsOCBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICBjYXNlIERhdGFG
b3JtYXRKU0ludDMyOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0
YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKKyAgICBjYXNl
IERhdGFGb3JtYXRKU0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjogewog
ICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3By
KTsKICAgICAgICAgcmV0dXJuIGdwcjsKQEAgLTM0MCw4ICszNDEsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUq
IGJyYW5jaE5vZGUKICAgICAgICAgbm90VGFrZW4gPSB0bXA7CiAgICAgfQogICAgIAotICAgIEpT
VmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVy
YW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEFTU0VSVChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVz
ZSkpOworICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7
CiAgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOwogICAgIEdQUlJlZyBhcmcyR1BSID0g
YXJnMi5ncHIoKTsKICAgICAKQEAgLTM2Myw0MyArMzY3LDY4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFu
Y2hOb2RlCiAgICAgICAgIAogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGls
ZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIp
OwotICAgICAgICAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgdHdvQ2VsbHNDYXNlID0gbV9q
aXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFyZzFHUFIpOwotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBsZWZ0RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMUdQ
Uik7Ci0gICAgICAgIGxlZnRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFyZzJHUFIpOwotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCByaWdodERvdWJsZSA9IG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzJHUFIp
OwotICAgICAgICByaWdodE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgCi0gICAgICAgIGJyYW5j
aDY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwg
YXJnMUdQUiwgYXJnMkdQUiwgdGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3JjZUp1
bXApOwotICAgICAgICAKLSAgICAgICAgdHdvQ2VsbHNDYXNlLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxz
ZSk6CisgICAgICAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAg
ICAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAg
ICAgICAgICAgZ290byB0YWtlbjsKKyAgICAgICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICBnb3RvIG5vdFRh
a2VuOworICAgICAgICAgKi8KKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1Bh
dGhDYXNlczsKKworICAgICAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMg
RG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQg
b2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNo
SWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgICAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBh
IEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBp
dCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAgICAgLy8gSWYgaXQg
aXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2gg
Yml0IHNldAorICAgICAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAx
PDw1MC4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIG1faml0
Lm1vdmUoYXJnMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShhcmcyR1BSLCBz
Y3JhdGNoLmdwcigpKTsKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHNjcmF0Y2guZ3ByKCkpOworICAg
ICAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgY29uc3RleHByIHVpbnQ2NF90IG5leHRMb3dlc3RPZkhpZ2hCaXRzID0gSlNWYWx1ZTo6
TG93ZXN0T2ZIaWdoQml0cyA8PCAxOworICAgICAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW02NChuZXh0TG93ZXN0T2ZIaWdoQml0cykpKTsKKwogICAgICAgICBicmFuY2g2NChKSVRDb21w
aWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4p
OwogICAgICAgICAKLSAgICAgICAgbGVmdERvdWJsZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIHJp
Z2h0RG91YmxlLmxpbmsoJm1faml0KTsKLSAgICAgICAgCi0gICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcx
R1BSLCBhcmcyR1BSKTsKLSAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwotICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICAKKyAgICAgICAgLy8gSWYgd2Ugc3Vw
cG9ydCBCaWdJbnQzMiB3ZSBtdXN0IGdvIHRvIGEgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBv
cGVyYW5kIGlzIGEgY2VsbCAoZm9yIEhlYXBCaWdJbnQgPT09IEJpZ0ludDMyKQorICAgICAgICAv
LyBJZiB3ZSBkb24ndCBzdXBwb3J0IEJpZ0ludDMyLCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBz
bG93IHBhdGggaWYgYm90aCBvcGVyYW5kcyBhcmUgY2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBI
ZWFwQmlnSW50IGFuZCBTdHJpbmcgPT09IFN0cmluZykKKyAgICAgICAgLy8gSW5zdGVhZCBvZiBk
b2luZyB0d28gYnJhbmNoZXMsIHdlIGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0
aGF0CisgICAgICAgIC8vIDEuIChsZWZ0IGlzIENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgaXMgdGhl
IHNhbWUgYXMgKChsZWZ0IHwgcmlnaHQpIGlzIENlbGwpCisgICAgICAgIC8vICAgICAgQm90aCBh
cmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAiCisgICAgICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhh
dCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlz
IGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmlnaHQpIGlzIENlbGwpCisgICAgICAgIC8vICAgICAg
SWYgYm90aCBhcmUgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgc2V0IGFuZCB0aGUg
dGVzdCB3aWxsIGZhaWwKKyAgICAgICAgLy8gICAgICBJZiBhdCBsZWFzdCBvbmUgaXMgbm90IElu
dDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisgICAgICAgIC8vICAgICAgQW5kIGlm
IGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhlcicgdGFnIHdpbGwgYWxzbyBi
ZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
bV9qaXQuYW5kNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAg
IG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgICAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKSk7CisK
KyAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKKworICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0
aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmcxR1BSLCBhcmcyR1BSKSk7CisKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJ
VENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4p
OwogICAgIH0KLSAgICAKKwogICAgIGp1bXAobm90VGFrZW4pOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgYm9v
bCBpbnZlcnQpCiB7CisgICAgLy8gRklYTUU6IHNvbWUgb2YgdGhpcyBjb2RlIHNob3VsZCBiZSBz
aGFyZWFibGUgd2l0aCBub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEKICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBh
cmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBKU1ZhbHVlUmVncyBhcmcxUmVncyA9IGFy
ZzEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBhcmcyUmVncyA9IGFyZzIuanNWYWx1
ZVJlZ3MoKTsKKyAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CisgICAgR1BSUmVnIGFy
ZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKQEAgLTQyOCwzMyArNDU3LDYw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RF
cShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBtX2ppdC5vcjY0KGFyZzFSZWdzLmdwcigp
LCBhcmcyUmVncy5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2Ug
ZG8gKGFzc3VtaW5nICdpbnZlcnQnIHRvIGJlIGZhbHNlKToKKyAgICBJZiAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIHJlc3Vs
dCA9IChsZWZ0ID09IHJpZ2h0KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBnb3RvIGRvbmU7
CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICBnb3RvIHNs
b3dQYXRoOworICAgIGRvbmU6CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAqLwogCiAgICAgSklU
Q29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CiAKLSAgICBKSVRDb21waWxlcjo6SnVt
cCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLQotICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMVJlZ3MpOwot
ICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzFSZWdzLCBJ
bnZhbGlkR1BSUmVnKSk7Ci0gICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICBKSVRDb21waWxl
cjo6SnVtcCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyUmVncyk7Ci0gICAgc2xv
d1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMlJlZ3MsIEludmFsaWRH
UFJSZWcpKTsKLSAgICByaWdodE9LLmxpbmsoJm1faml0KTsKLQotICAgIG1faml0LmNvbXBhcmU2
NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGFy
ZzFSZWdzLmdwcigpLCBhcmcyUmVncy5ncHIoKSwgcmVzdWx0R1BSKTsKLQotICAgIEpJVENvbXBp
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICB0d29DZWxsc0Nhc2UubGluaygm
bV9qaXQpOwotICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpKSk7CisgICAgLy8g
VGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3Vi
bGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUg
bmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIK
KyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4g
YWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGln
aCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8
PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRv
dWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CisgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgIG1faml0Lm1vdmUo
YXJnMkdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCByZXN1bHRHUFIpOworICAgIG1faml0LmFkZDY0KFRy
dXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2NyYXRjaC5ncHIoKSk7Cisg
ICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7CisgICAg
Y29uc3RleHByIHVpbnQ2NF90IG5leHRMb3dlc3RPZkhpZ2hCaXRzID0gSlNWYWx1ZTo6TG93ZXN0
T2ZIaWdoQml0cyA8PCAxOworICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0
KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRM
b3dlc3RPZkhpZ2hCaXRzKSkpOworCisgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpF
cXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRH
UFIpOworCisgICAgLy8gSWYgd2Ugc3VwcG9ydCBCaWdJbnQzMiB3ZSBtdXN0IGdvIHRvIGEgc2xv
dyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBvcGVyYW5kIGlzIGEgY2VsbCAoZm9yIEhlYXBCaWdJbnQg
PT09IEJpZ0ludDMyKQorICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9u
bHkgaGF2ZSB0byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAo
Zm9yIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAg
IC8vIEluc3RlYWQgb2YgZG9pbmcgdHdvIGJyYW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25l
LCBieSBvYnNlcnZpbmcgdGhhdAorICAgIC8vIDEuIChsZWZ0IGlzIENlbGwgJiYgcmlnaHQgaXMg
Q2VsbCkgaXMgdGhlIHNhbWUgYXMgKChsZWZ0IHwgcmlnaHQpIGlzIENlbGwpCisgICAgLy8gICAg
ICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAvLyAyLiBTaW5jZSB3ZSBrbm93
IHRoYXQgbmVpdGhlciBpcyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxs
KSBpcyBlcXVpdmFsZW50IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQorICAgIC8vICAgICAg
SWYgYm90aCBhcmUgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgc2V0IGFuZCB0aGUg
dGVzdCB3aWxsIGZhaWwKKyAgICAvLyAgICAgIElmIGF0IGxlYXN0IG9uZSBpcyBub3QgSW50MzIs
IHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAvLyAgICAgIEFuZCBpZiBhdCBsZWFz
dCBvbmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXInIHRhZyB3aWxsIGFsc28gYmUgMCwgbWFr
aW5nIHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgbV9qaXQuYW5kNjQo
YXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgbV9qaXQub3I2NChhcmcx
R1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgc2xvd1BhdGhDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUikpOwogCi0gICAgbV9qaXQubW92ZShKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTY0KCFpbnZlcnQpLCByZXN1bHRHUFIpOworICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTY0KDApLCByZXN1bHRHUFIpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFy
ZzJSZWdzKSk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIAorICAgIG1faml0LnhvcjY0KFRy
dXN0ZWRJbW02NChpbnZlcnQpLCByZXN1bHRHUFIpOworCiAgICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiB9CiAKQEAgLTEwMDMsNiArMTA1OSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRnZSBlZGdlLCBEYXRhRm9ybWF0JiByZXR1cm5GCiAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQz
MjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9q
aXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAK
ICAgICBkZWZhdWx0OgpAQCAtMTIzNCw2ICsxMjkyLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFn
ZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJ
bnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRK
U0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9k
ZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMxMSw2
ICsxMzcxLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihF
ZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3Jt
YXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFG
b3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBE
RkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIp
OwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMxOSw2ICsxMzgxLDEwOSBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAgICB9CiB9
CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJ
bnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmln
SW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAoU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
KHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
QW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOworICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQoZWRnZSwgdmFsdWVSZWdzLmdwcigpKTsKKyAgICBub3RDZWxsLmxpbmsoJm1faml0
KTsKKyAgICAoU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbikpLmdwcigpOworfQorCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUg
PSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVl
Lm1fdHlwZTsKKworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQmlnSW50MzIp
OworICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkpIHsKKyAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hl
Y2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVj
dXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICByZXR1cm4gYWxs
b2NhdGUoKTsKKyAgICB9CisKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0g
ZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5l
cmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3
aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTog
eworICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+
aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+YXNK
U1ZhbHVlKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVy
LCBTcGlsbE9yZGVyQ29uc3RhbnQpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKSksIGdwcik7CisgICAg
ICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJ
bnQzMik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisKKyAgICAgICAgbV9n
cHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKKworICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0SlMpOworICAgICAgICBpZiAodHlwZSAmIH5TcGVjQmlnSW50MzIpIHsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9q
aXQuYnJhbmNoSWZOdW1iZXIoZ3ByKSk7CisgICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IGFs
bG9jYXRlKCk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihn
cHIsIHRlbXBHUFIpKTsKKyAgICAgICAgICAgIHVubG9jayh0ZW1wR1BSKTsKKyAgICAgICAgfQor
ICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJ
bnQzMik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0
QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjogeworICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICBH
UFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAg
ICAgaWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVy
KGdwcikpOworICAgICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBt
X2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7Cisg
ICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxs
SlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICBy
ZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0RG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9y
bWF0Iik7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bV9jdXJyZW50Tm9kZSwgIkNvcnJ1cHQgZGF0YSBmb3JtYXQiKTsKKyAgICAgICAgcmV0dXJuIElu
dmFsaWRHUFJSZWc7CisgICAgfQorfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFN0cmljdEVxdWFsaXR5KEVkZ2Ugb2JqZWN0Q2hp
bGQsIEVkZ2Ugb3RoZXJDaGlsZCkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhp
cywgb2JqZWN0Q2hpbGQpOwpAQCAtMTU1NSw2ICsxNzIwLDU1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5v
ZGUsIEpJCiAgICAganVtcChub3RUYWtlbik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisKKyAgICBpZiAoY29uZGl0aW9u
ID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsKSB7CisgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3ggdGhlIG9wZXJhbmRzLCBz
aW5jZSB0aGUgdGFnIGJpdHMgYXJlIGlkZW50aWNhbAorICAgICAgICBtX2ppdC5jb21wYXJlNjQo
Y29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92
ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDIuZ3ByKCksIHRlbXAuZ3ByKCkp
OworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXAuZ3ByKCkpOworICAgICAgICBtX2pp
dC5jb21wYXJlNjQoY29uZGl0aW9uLCByZXN1bHQuZ3ByKCksIHRlbXAuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgfQorCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNo
b3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpW
YWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUq
IGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikK
K3sKKyAgICAvLyBPdGhlciBjb25kaXRpb25zIHdvdWxkIHJlcXVpcmUgdW5ib3hpbmcgdGhlIEJp
Z0ludDMyIHRvIGdldCBjb3JyZWN0IHJlc3VsdHMgb24gbmVnYXRpdmUgbnVtYmVycy4KKyAgICBB
U1NFUlQoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0g
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKTsKKworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJh
bmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBCYXNpY0Jsb2NrKiBub3RU
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CisKKyAgICAv
LyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwgYnJhbmNoIHRvIHRoZSB0YWtlbiBibG9jay4K
KyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0Y2ggdGFrZW4gd2l0aCBub3RUYWtlbiAmIGlu
dmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLgorICAgIGlm
ICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBjb25kaXRpb24gPSBKSVRDb21waWxl
cjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAgIEJhc2ljQmxvY2sqIHRtcCA9IHRha2VuOwor
ICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBub3RUYWtlbiA9IHRtcDsKKyAgICB9
CisKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKworICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHRha2Vu
KTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKIHsKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00MDg2LDYg
KzQzMDAsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIElzQmlnSW50OiB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBt
X2ppdC5icmFuY2hJZkNlbGwodmFsdWUuZ3ByKCkpOworCisgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayksIHJlc3VsdC5ncHIoKSk7CisgICAgICAg
IG1faml0LmFuZDY0KHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5j
b21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGNvbnRpbnVhdGlvbiA9IG1faml0Lmp1bXAoKTsKKworICAgICAgICBpc0NlbGwubGlu
aygmbV9qaXQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpOworICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZXN1bHQuZ3ByKCkp
OworCisgICAgICAgIGNvbnRpbnVhdGlvbi5saW5rKCZtX2ppdCk7CisgICAgICAgIGJsZXNzQm9v
bGVhbihyZXN1bHQuZ3ByKCkpOworICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCmluZGV4IGIzZTQxZDhkN2UxLi5kZmE3YzYzZWQ0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCkBAIC0xMjUsNyArMTI1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9y
OgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgogICAgICAgICBjYXNlIFZhbHVlQml0WG9yOiB7
Ci0gICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQor
ICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBtYXliZSBzdXBwb3J0IHRoZSBjYXNlIHdo
ZXJlIG9uZSBvcGVyYW5kIGlzIGFsd2F5cyBIZWFwQmlnSW50IGFuZCB0aGUgb3RoZXIgaXMgYWx3
YXlzIEJpZ0ludDMyPworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8
fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQogICAgICAgICAgICAg
ICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0zNzUsNyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBC
aWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlIHx8
IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgICAg
ICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKaW5kZXggOGVmNzNiNmYyZTguLmFiNjMxYzlj
ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDUs
OCArMTQ1LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2VLaW5k
IHVzZUtpbmQpCiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIG91dC5wcmludCgiU3ltYm9s
Iik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgb3V0LnBy
aW50KCJCaWdJbnQiKTsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50
KCJBbnlCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSGVhcEJpZ0ludFVzZToK
KyAgICAgICAgb3V0LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBvdXQucHJpbnQoIkJpZ0ludDMyIik7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgb3V0LnByaW50KCJT
dHJpbmdPYmplY3QiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKaW5kZXgg
OWMxM2M1YmNkMzUuLmY0ZjdiMzNiYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY2LDcgKzY2LDkgQEAgZW51bSBVc2VLaW5kIHsKICAgICBLbm93blN0cmlu
Z1VzZSwKICAgICBLbm93blByaW1pdGl2ZVVzZSwgLy8gVGhpcyBiaXphcnJlIHR5cGUgYXJpc2Vz
IGZvciBvcF9zdHJjYXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2RlIGd1YXJhbnRlZSB0aGF0IGl0IHdp
bGwgb25seSBzZWUgcHJpbWl0aXZlcyAoaS5lLiBub3Qgb2JqZWN0cykuCiAgICAgU3ltYm9sVXNl
LAotICAgIEJpZ0ludFVzZSwKKyAgICBBbnlCaWdJbnRVc2UsCisgICAgSGVhcEJpZ0ludFVzZSwK
KyAgICBCaWdJbnQzMlVzZSwKICAgICBEYXRlT2JqZWN0VXNlLAogICAgIE1hcE9iamVjdFVzZSwK
ICAgICBTZXRPYmplY3RVc2UsCkBAIC0xNTIsOCArMTU0LDEyIEBAIGlubGluZSBTcGVjdWxhdGVk
VHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAgICAgcmV0dXJuIFNwZWNI
ZWFwVG9wICYgflNwZWNPYmplY3Q7CiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIHJldHVy
biBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50VXNlOgorICAgIGNhc2UgQW55QmlnSW50VXNl
OgogICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6Cisg
ICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAg
ICAgICByZXR1cm4gU3BlY0JpZ0ludDMyOwogICAgIGNhc2UgUHJvbWlzZU9iamVjdFVzZToKICAg
ICAgICAgcmV0dXJuIFNwZWNQcm9taXNlT2JqZWN0OwogICAgIGNhc2UgRGF0ZU9iamVjdFVzZToK
QEAgLTIxMiwyNCArMjE4LDYgQEAgaW5saW5lIGJvb2wgbWF5SGF2ZVR5cGVDaGVjayhVc2VLaW5k
IGtpbmQpCiAgICAgcmV0dXJuICFzaG91bGROb3RIYXZlVHlwZUNoZWNrKGtpbmQpOwogfQogCi1p
bmxpbmUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5k
KSB7Ci0gICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2Fz
ZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgSW50NTJSZXBV
c2U6Ci0gICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgot
ICAgIGNhc2UgQW55SW50VXNlOgotICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfQotCiBpbmxpbmUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNo
IChraW5kKSB7CkBAIC0yNjEsNyArMjQ5LDcgQEAgaW5saW5lIGJvb2wgaXNDZWxsKFVzZUtpbmQg
a2luZCkKICAgICBjYXNlIFN0cmluZ1VzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAg
IGNhc2UgU3ltYm9sVXNlOgotICAgIGNhc2UgQmlnSW50VXNlOgorICAgIGNhc2UgSGVhcEJpZ0lu
dFVzZToKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIFN0cmluZ09yU3RyaW5n
T2JqZWN0VXNlOgogICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1YzY5ZDFkMzhjMS4uMmZkOTcxZTYy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTI2MCw2ICsyNjAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFu
OgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJl
cklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6
CkBAIC00ODIsNyArNDgzLDkgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdy
YXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBT
eW1ib2xVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgICAgICAg
ICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToK
KyAgICAgICAgICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBEYXRlT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTWFwT2JqZWN0VXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCmluZGV4IDViNDkyNWNmZmJjLi5jMGY0ZjJiMDY1YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcApAQCAt
NTgsNiArNTgsOSBAQCB2b2lkIENvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyhCMzo6
UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvYwogICAgIGludFB0clRocmVlID0g
YmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMyk7CiAgICAg
aW50UHRyRWlnaHQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCA4KTsKICAgICBkb3VibGVaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBiaWdJbnQz
Mlplcm8gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEpT
VmFsdWU6OkJpZ0ludDMyVGFnKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAppbmRleCBj
MWQ2ZDVhNTUxZC4uMzFhMzkzMjkwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21tb25WYWx1ZXMuaApAQCAtNTYsNyArNTYsMTAgQEAgcHVibGljOgogICAgIExWYWx1ZSBp
bnRQdHJUaHJlZSB7IG51bGxwdHIgfTsKICAgICBMVmFsdWUgaW50UHRyRWlnaHQgeyBudWxscHRy
IH07CiAgICAgTFZhbHVlIGRvdWJsZVplcm8geyBudWxscHRyIH07Ci0gICAgCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIExWYWx1ZSBiaWdJbnQzMlplcm8geyBudWxscHRyIH07CisjZW5kaWYKKwog
ICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZCB7IDAgfTsKICAgICBjb25zdCB1bnNpZ25lZCBw
cm9mS2luZCB7IDAgfTsKICAgICBjb25zdCBMVmFsdWUgYnJhbmNoV2VpZ2h0cyB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCA4MDM2MzkwN2I5ZS4uNTMxZDEzZDYzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzUzLDYgKzEzNTMsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAgY29tcGlsZUlzTnVtYmVyKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgICAgIGNv
bXBpbGVJc0JpZ0ludCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVy
SXNJbnRlZ2VyOgogICAgICAgICAgICAgY29tcGlsZU51bWJlcklzSW50ZWdlcigpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yMTM1LDExICsyMTM4LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAg
TFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExW
YWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAg
Q2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRlQWRkKHVuYm94ZWRMZWZ0LCB1bmJv
eGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93
LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJv
eGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
Ym94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjE1NiwxMSArMjE3NiwyOCBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBM
VmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAg
IENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZVN1Yih1bmJveGVkTGVmdCwgdW5i
b3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxv
dywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBi
b3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVl
KGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25TdWJIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNzcsMTEgKzIyMTQsMjggQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAg
ICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOwor
ICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOwor
CisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxhdGVNdWwodW5i
b3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJl
c3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAg
ICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmln
SW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludCht
X25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyODUsNyArMjMzOSwyMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rp
b24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICAKKworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGJ5
IHRoZSBJQyB5ZXQuCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+
Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRp
ZgorCiAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOwogCkBAIC0y
NTU0LDExICsyNjIyLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVEaXYoKQog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogYWRkIGEg
ZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25EaXZCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uRGl2SGVhcEJp
Z0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0yNjMzLDE4ICsyNzAyLDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVNb2Qo
KQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBh
ZGQgYSBCaWdJbnQzMiBmYXN0IHBhdGggaGVyZQorICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Nb2RCaWdJbnQsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9kSGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVu
dHlwZWRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKLSAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBtX25vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgp
KTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
c3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZSht
X25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KEludDY0LCBvcGVyYXRpb25WYWx1ZU1vZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQpAQCAtMjgwOSwx
NyArMjg4MSwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlUG93KCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSBleHBvbmVudCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IG1heWJlIGFk
ZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBleHBv
bmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9u
UG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBleHBvbmVudCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
blBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRV
c2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpOworICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9u
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvblZhbHVlUG93LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBleHBvbmVu
dCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC0zMjAwLDkgKzMyNzYs
MjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE5vdCgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0Tm90QmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
aWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAg
ICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxpZXMgb24gZGV0YWlscyBvZiB0aGUg
cmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxsIGhhdmUgdG8gYmUgdXBkYXRlZCBp
ZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVl
OjpCaWdJbnQzMlRhZyA9PSAweDEyKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgICAgICB1aW50
NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihvcGVyYW5kLCBtX291dC5jb25zdEludDY0
KG1hc2tGb3JCaWdJbnQzMkJpdHMpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0
Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CiAgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTMyMjAsMTEgKzMzMTAsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1
ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNpbmNlIHRoZSB0YWdnaW5n
IGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxl
ZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0MCwxMSArMzM0MiwyMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50
MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94LCBz
aW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
ZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjAsMTEgKzMzNzQsMjMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNl
KSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCBy
aWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Qmln
SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0TWlzc2lu
Z1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2luZ1RhZywgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9ySGVh
cEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zMjgwLDExICszNDA2LDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVC
aXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFJTaGlm
dEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0lu
dFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZQorICAgICAgICAgICAgLy8g
VGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVzZSBhIHJpZ2h0LXNoaWZ0IGJ5IGEgbmVnYXRp
dmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3IgQmlnSW50cy4KKyAgICAgICAgICAgIC8vIFNv
IGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZsb3cuCisKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBt
X25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChw
b2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQor
CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewor
ICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyOTYsMjQgKzM0NDAsMjUgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmFTaHIoCiAgICAgICAgICAgICBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMiht
X25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAgICBt
X291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIo
MzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNlZnVs
LCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0TFNoaWZ0KCkKICAgICB7CiAgICAgICAgIHNl
dEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
LAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBt
X291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJ
IGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGlu
IHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBo
ZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzMzMCw3ICsz
NDc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBzZXRJbnQzMihtX291dC5sU2hy
KAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBt
X291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIo
MzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQy
KCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhh
dCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBv
ZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJl
cigpCkBAIC03MzU1LDYgKzc1MDAsOSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYg
KGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkubV90eXBlICYgKFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3ROdW1iZXIg
PSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyNlbmRpZgogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNzM2NCwxMCAr
NzUxMiwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBub3ROdW1iZXIgY2FzZS4KICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90TnVtYmVy
LCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RCaWdJbnQzMikpOworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2VuZGlmCiAgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlz
Q2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQodmFsdWUs
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5z
dXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNIZWFwQmlnSW50KHZh
bHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiks
IHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHNldmVyYWwgYXR0ZW1wdHMg
dG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVtZXJpYyBzdGlsbCBleGlzdHMuCkBAIC04MzI0
LDcgKzg0NzYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJp
bmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmlu
Z1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1Vz
ZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKQor
ICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKICAg
ICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtODM2Nyw3ICs4NTIyLDk0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbV9vdXQuZXF1YWwobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveCBz
aW5jZSB0aGUgdGFnIGJpdHMgYXJlIHRoZSBzYW1lIG9uIGJvdGggc2lkZXMKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBtX291dC5lcXVhbChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBz
ZXRCb29sZWFuKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc3RhcnQgd2l0aCBpZiAobGVmdCA9PSByaWdodCks
IGJlY2F1c2Ugd2UgbXVzdCBpbnNlcnQgdGhlIHJpZ2h0IGNoZWNrcyAoc2VlIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiBhYm92ZSkKKyAgICAgICAgICAgIC8vIFRoZSBjb2RlIHRoYXQgd2UgZ2Vu
ZXJhdGUgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nIHBzZXVkby1jb2RlOgorICAgICAgICAgICAg
LyoKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihsZWZ0KSkgeworICAgICAgICAgICAgICAg
IGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQg
PT0gcmlnaHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KHJpZ2h0KSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIocmlnaHQs
IHVuYm94ZWQobGVmdCkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBDSEVDSyhpc0hl
YXBCaWdJbnQobGVmdCkpCisgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIocmlnaHQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGxl
ZnQsIHVuYm94ZWQocmlnaHQpKTsKKyAgICAgICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQocmln
aHQpKTsKKyAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxzKGxlZnQsIHJp
Z2h0KSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzQmln
SW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYm90aEFy
ZUJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG9u
bHlMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNC
bG9jayBsZWZ0SXNOb3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayBsZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGVmdElzSGVhcEJpZ0ludCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc05vdEJpZ0ludDMyID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKGxlZnQsIHByb3Zl
blR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUobGVmdElzQmlnSW50MzIpLCB1bnN1cmUo
bGVmdElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IHNldCB0aGUgb3Jk
ZXIgb2YgdGhlIGJsb2NrcyB0byBtYXhpbWl6ZSBmYWxsdGhyb3VnaAorICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obGVmdElzQmlnSW50MzIpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlz
QmlnSW50MzIocmlnaHQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDIoKSkpLCB1bnN1cmUoYm90
aEFyZUJpZ0ludDMyKSwgdW5zdXJlKG9ubHlMZWZ0SXNCaWdJbnQzMikpOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhib3RoQXJlQmlnSW50MzIpOworICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0LmVxdWFsKGxl
ZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlMZWZ0SXNCaWdJbnQzMik7CisgICAgICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsK
KyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExlZnRJc0JpZ0ludDMyID0gbV9vdXQu
YW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkNvbXBh
cmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCByaWdodCwg
dW5ib3hlZExlZnQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05vdEJpZ0ludDMyKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpLCB1
bnN1cmUobGVmdEVxdWFsc1JpZ2h0KSwgdW5zdXJlKGxlZnRJc0hlYXBCaWdJbnQpKTsKKworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdEVxdWFsc1JpZ2h0KTsKKyAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHJlc3VsdExlZnRFcXVhbHNSaWdodCA9IG1fb3V0LmFuY2hvcihtX291dC5i
b29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0hlYXBCaWdJbnQpOworICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKGlzQmlnSW50MzIocmlnaHQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDIo
KSkpLCB1bnN1cmUocmlnaHRJc0JpZ0ludDMyKSwgdW5zdXJlKHJpZ2h0SXNOb3RCaWdJbnQzMikp
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzQmlnSW50MzIpOworICAgICAg
ICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0UmlnaHRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9y
KG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhl
YXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCB1bmJveGVk
UmlnaHQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNOb3RCaWdJbnQzMik7CisgICAgICAgICAgICBz
cGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVk
IHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKKyAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKKyAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhIZWFwQmlnSW50ID0gbV9vdXQuYW5jaG9yKG1fb3V0
Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpKSk7CisgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgcmVz
dWx0Qm90aEFyZUJpZ0ludDMyLCByZXN1bHRMZWZ0SXNCaWdJbnQzMiwgcmVzdWx0TGVmdEVxdWFs
c1JpZ2h0LCByZXN1bHRSaWdodElzQmlnSW50MzIsIHJlc3VsdEJvdGhIZWFwQmlnSW50KSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisK
ICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAg
ICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1do
aWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwpAQCAtODQ1MCwxMSArODY5Miwx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNp
b24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFtF
U05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFs
cyBmb3IgYmlnIGludHMKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50
KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04NTQwLDYgKzg3ODIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAg
Ly8gRklYTUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyIGhlcmUsIHNlZSB0aGUg
REZHU3BlY3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSwgbV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKTsKICAgICAgICAgbm9uU3Bl
Y3VsYXRpdmVDb21wYXJlKAogICAgICAgICAgICAgWyZdIChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7CkBAIC0xMDUwNCw3ICsxMDc0NywzMSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgc2V0Qm9vbGVhbihtX291
dC5waGkoSW50MzIsIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0LCBwYXRjaHBvaW50UmVzdWx0KSk7
CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsKKyAgICAg
ICAgLy8gSWYgd2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggQmlnSW50MzIsIHdlIHNob3VsZCBqdXN0
IGVtaXQgSXNDZWxsV2l0aFR5cGUoSGVhcEJpZ0ludCkKKyAgICAgICAgQVNTRVJUKFVTRV9CSUdJ
TlQzMik7CisKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNo
aWxkMSgpKSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKwor
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90Q2VsbENh
c2UsIGlzQ2VsbENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEo
KSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoaXNDZWxsV2l0aFR5cGUodmFsdWUsIG1fbm9k
ZS0+cXVlcmllZFR5cGUoKSwgbV9ub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCksIHByb3Zl
blR5cGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwor
ICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2VsbFJlc3VsdCwgY2VsbFJl
c3VsdCkpOworICAgIH0KICAgICB2b2lkIGNvbXBpbGVJc0NlbGxXaXRoVHlwZSgpCiAgICAgewog
ICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpA
QCAtMTQyMTQsOSArMTQ0ODEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVtaXRCaW5hcnlTbmlw
cGV0KEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFu
ZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAgICAgICAg
IFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDI4Miw4ICsxNDU1MSwxMSBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBBU1NFUlQobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAg
U25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkucmVzdWx0VHlwZSgpKTsKQEAgLTE0ODk1LDcgKzE1MTY3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wg
ZmxvdyBzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
ICAgICAgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQor
ICAgICAgICAgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJp
Z0ludCkKICAgICAgICAgICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAg
ICAgICAgICAgICAvLyAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgICAgIGRvIGV2aWwg
dGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTE0OTA1LDYgKzE1MTc3LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFs
dWUpCiAgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgICAg
ICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgICAgICAgICAv
LyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgICAgICAgICAvLyAgICAgcmVz
dWx0ID0gKHZhbHVlICE9IEJpZ0ludDMyVGFnKQogICAgICAgICAgICAgLy8gfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAgICAgICAgIC8v
IH0KQEAgLTE0OTEyLDEzICsxNTE4NiwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90U3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBzdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIGJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90U3RyaW5nT3JCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3REb3VibGVDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnQz
MkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Qmln
SW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrPiByZXN1bHRzOwpAQCAtMTQ5MzIsMjAgKzE1
MjEwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdFN0cmluZ0Nhc2UsIHN0cmluZ0Nhc2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNw
ZWNDZWxsIC0gU3BlY1N0cmluZykpLAotICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNl
KSwgdW5zdXJlKG5vdFN0cmluZ09yQmlnSW50Q2FzZSkpOworICAgICAgICAgICAgICAgIGlzSGVh
cEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcp
KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoaGVhcEJpZ0ludENhc2UpLCB1bnN1cmUobm90U3Ry
aW5nTm9ySGVhcEJpZ0ludENhc2UpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3Ry
aW5nQ2FzZSwgYmlnSW50Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdD
YXNlLCBoZWFwQmlnSW50Q2FzZSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5h
bmNob3IobV9vdXQubm90RXF1YWwodmFsdWUsIHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmcobV9n
cmFwaC5tX3ZtKSkpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAK
LSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIG5vdFN0cmluZ09yQmlnSW50
Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhoZWFwQmlnSW50Q2FzZSwgbm90U3Ry
aW5nTm9ySGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIG5vblplcm9CaWdJbnQg
PSBtX291dC5ub3RaZXJvMzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRp
dmUodmFsdWUsIG1faGVhcHMuSlNCaWdJbnRfbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChtX291dC5hbmNob3Iobm9uWmVyb0JpZ0ludCkpOwogICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RTdHJpbmdPckJpZ0ludENhc2UsIG5vdENlbGxDYXNlKTsKKyAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CiAg
ICAgICAgICAgICBMVmFsdWUgaXNUcnV0aHlPYmplY3Q7CiAgICAgICAgICAgICBpZiAobWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAg
ICBpc1RydXRoeU9iamVjdCA9IG1fb3V0LmJvb2xlYW5UcnVlOwpAQCAtMTQ5ODgsOCArMTUyNjYs
MjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1bmJveERvdWJsZSh2YWx1ZSksIG1fb3V0
LmNvbnN0RG91YmxlKDApKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hv
cihkb3VibGVJc1RydXRoeSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91
YmxlQ2FzZSwgYmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgICAgICBpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgflNwZWNDZWxs
KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoYmlnSW50MzJDYXNlKSwgdW5zdXJlKG5vdEJpZ0lu
dDMyQ2FzZSkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnQzMkNhc2UsIG5v
dEJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBMVmFsdWUgYmlnSW50MzJOb3RaZXJvID0gbV9v
dXQubm90RXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcp
KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihiaWdJbnQzMk5vdFpl
cm8pKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzJDYXNlLCBjb250aW51YXRp
b24pOworI2Vsc2UKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGNv
bnRpbnVhdGlvbik7CisjZW5kaWYKICAgICAgICAgICAgIExWYWx1ZSBtaXNjSXNUcnV0aHkgPSBt
X291dC5lcXVhbCgKICAgICAgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKG1pc2NJc1RydXRoeSkpOwpAQCAtMTU1OTQsMTMgKzE1ODg2LDE1IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vICAgICAgICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlm
IChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAg
IC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2ludCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlm
IChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAg
ICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCiAg
ICAgICAgIC8vICAgICB9CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVtYmVyKSB7CiAgICAg
ICAgIC8vICAgICByZXR1cm4gbnVtYmVyCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50
MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIGlm
IChpcyBudWxsKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0g
ZWxzZSBpZiAoaXMgYm9vbGVhbikgewpAQCAtMTU2MjgsNiArMTU5MjIsOSBAQCBwcml2YXRlOgog
ICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIG51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBM
QmFzaWNCbG9jayBub3ROdW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisjZW5kaWYKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBib29sZWFuQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHVuZGVmaW5lZENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwpAQCAtMTU2ODAsNyArMTU5NzcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKG5vdFN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOwogICAgICAgICBtX291dC5icmFuY2go
Ci0gICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0Nl
bGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAorICAgICAgICAgICAgaXNIZWFwQmlnSW50
KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNwZWNPYmplY3QgLSBTcGVj
U3RyaW5nKSksCiAgICAgICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShzeW1ib2xD
YXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgc3ltYm9sQ2FzZSk7
CkBAIC0xNTY5Niw4ICsxNTk5MywxNSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgbm90TnVtYmVyQ2FzZSk7CiAgICAgICAgIGZ1bmN0b3Io
VHlwZW9mVHlwZTo6TnVtYmVyKTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIH5T
cGVjQ2VsbCksIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgbm90TnVsbENhc2UpOwor
I2Vsc2UKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwgbm90TnVsbENhc2Up
OworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpc051bGw7CiAgICAgICAgIGlmIChwcm92ZW5UeXBl
KGNoaWxkKSAmIFNwZWNPdGhlcikKICAgICAgICAgICAgIGlzTnVsbCA9IG1fb3V0LmVxdWFsKHZh
bHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwpAQCAtMTYzODgsMTUg
KzE2NjkyLDMzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgTFZhbHVlIGxvd0JpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SGVhcEJpZ0lu
dChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJh
bmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9
PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50VXNl
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKTsKIAogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdlLCBtb2RlKTsKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KGVkZ2UsIHJlc3VsdCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgcmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgTFZhbHVlIGxvd0JpZ0ludDMyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSk7CisKKyAgICAgICAgTG93ZXJlZE5vZGVW
YWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBp
ZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2YWx1ZS52
YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHJlc3VsdCks
IGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMihyZXN1bHQpKTsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVj
ayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwor
ICAgICAgICByZXR1cm4gbV9vdXQuYmlnSW50MzJaZXJvOworICAgIH0KKyNlbmRpZgorCiAgICAg
TFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NF
UlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2Uu
dXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBAIC0xNjU4Miw3ICsxNjkwNCw3MiBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBJ
bnQ2NCksIG1fbnVtYmVyVGFnKTsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgTFZhbHVlIGlzQmlnSW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
KyAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpz
VmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAg
ICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAg
IExWYWx1ZSBpc05vdEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVu
OworICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRB
bmQoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9
CisgICAgTFZhbHVlIHVuYm94QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihqc1ZhbHVlLCBtX291dC5jb25z
dEludDY0KDE2KSkpOworICAgIH0KKyAgICBMVmFsdWUgYm94QmlnSW50MzIoTFZhbHVlIGludDMy
VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQuYml0T3IoCisgICAgICAgICAgICBt
X291dC5zaGwobV9vdXQuemVyb0V4dChpbnQzMlZhbHVlLCBCMzo6SW50NjQpLCBtX291dC5jb25z
dEludDY0KDE2KSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSBpc05vdEFueUJpZ0ludChMVmFsdWUganNWYWx1
ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50KSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgLy8gaWYgKGlzQmlnSW50MzIpCisgICAg
ICAgIC8vICAgcmV0dXJuIGZhbHNlCisgICAgICAgIC8vIGlmICghaXNDZWxsKQorICAgICAgICAv
LyAgIHJldHVybiB0cnVlOworICAgICAgICAvLyByZXR1cm4gIWlzSGVhcEJpZ0ludAorICAgICAg
ICBMQmFzaWNCbG9jayBpc0JpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGlzTm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0
LmJyYW5jaChpc0JpZ0ludDMyKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNCaWdJbnQzMkNhc2Up
LCB1bnN1cmUoaXNOb3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhp
c0JpZ0ludDMyQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybkZhbHNlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc05vdEJpZ0ludDMyQ2FzZSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwoanNWYWx1ZSwgdHlwZSksIHVuc3VyZShpc0NlbGxD
YXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhp
c05vdENlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuVHJ1ZSA9IG1fb3V0
LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgcmV0dXJuSXNOb3RIZWFwQmlnSW50ID0gbV9vdXQuYW5jaG9yKGlzTm90SGVh
cEJpZ0ludChqc1ZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAgICByZXR1cm4gbV9v
dXQucGhpKEludDMyLCByZXR1cm5GYWxzZSwgcmV0dXJuVHJ1ZSwgcmV0dXJuSXNOb3RIZWFwQmln
SW50KTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAgICAgTFZhbHVlIGlzQ2Vs
bE9yTWlzYyhMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9w
KQogICAgIHsKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUs
IFNwZWNDZWxsQ2hlY2sgfCBTcGVjTWlzYykpCkBAIC0xNjg5NCw4ICsxNzI4MSwxNiBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29s
ZWFuKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgot
ICAgICAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVk
Z2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAg
ICAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAg
ICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTm90U3RyaW5nVmFyVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlTm90U3Ry
aW5nVmFyKGVkZ2UpOwpAQCAtMTcwODEsMTggKzE3NDc2LDM4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3ltYm9sU3RydWN0dXJlLT5pZCgpKSk7CiAgICAg
fQogCi0gICAgTFZhbHVlIGlzTm90QmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0
aGVyQ2VsbChMVmFsdWUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
ICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYg
U3BlY0NlbGwsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUsIH5TcGVjSGVhcEJpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJv
dmVuOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGRlZmF1bHRUb0ZhbHNlID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHR5
cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGNvbnRp
bnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybkZvckNlbGwgPSBtX291dC5h
bmNob3IoaXNIZWFwQmlnSW50KHZhbHVlLCB0eXBlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQzMiwgZGVmYXVsdFRv
RmFsc2UsIHJldHVybkZvckNlbGwpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQ
cm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIH5TcGVjSGVhcEJpZ0ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCiAgICAgICAg
ICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLmJpZ0ludFN0cnVjdHVyZS0+aWQoKSkpOwog
ICAgIH0KIAotICAgIExWYWx1ZSBpc0JpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUg
dHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc0hlYXBCaWdJbnQoTFZhbHVlIGNlbGws
IFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChM
VmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNCaWdJbnQp
KQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWND
ZWxsLCBTcGVjSGVhcEJpZ0ludCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAg
ICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9o
ZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLApAQCAtMTc1NTAsMTYgKzE3OTY1LDM1IEBAIHByaXZh
dGU6CiAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9
CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAg
IHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsK
KyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjSGVh
cEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50KGNlbGwpKTsKKyAgICB9CisgICAgdm9pZCBzcGVjdWxh
dGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIEZUTF9UWVBFX0NIRUNLKGpz
VmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RCaWdJbnQoY2VsbCkpOwor
ICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0K
IAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSkKKyAgICB2b2lkIHNwZWN1bGF0
ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
IEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNIZWFwQmlnSW50
LCBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwodmFsdWUpKTsKICAgICB9CiAKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCisg
ICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1
ZSksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMih2YWx1ZSkpOworICAgIH0KKwor
ICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0Jp
Z0ludCwgaXNOb3RBbnlCaWdJbnQodmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQg
c3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjT2JqZWN0
LCBpc05vdE9iamVjdChjZWxsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggMjE3MTVkM2RkMjIuLjliYmE3NDM5YmNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBA
IC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25l
ZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUpCi0gICAgICAgICAg
ICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwg
SlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgIGV4aXQubV9kZXNjcmlw
dG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJ
bmZvOjpyZWdUMCksIEdQUkluZm86OnJlZ1QxKTsKICAgICB9CiAKICAgICAvLyBNYXRlcmlhbGl6
ZSBhbGwgb2JqZWN0cy4gRG9uJ3QgbWF0ZXJpYWxpemUgYW4gb2JqZWN0IHVudGlsIGFsbApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApp
bmRleCBkNWI5YWQyMmY5NS4uN2FkMDY1ZGNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAg
U3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVh
cFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KIAogICAgICAgICB2b2lkKiB3cmFwcGVkQWRkcmVzcyA9
IDA7CiAgICAgICAgIHVuc2lnbmVkIGxhYmVsSW5kZXggPSAwOwotICAgICAgICBpZiAoIW5vZGUu
Y2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0JpZ0ludCgpKSB7CisgICAgICAgIGlm
ICghbm9kZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7
CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2VsbC0+c3RydWN0dXJl
KHZtKTsKICAgICAgICAgICAgIGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpKQogICAgICAgICAgICAgICAgIGZsYWdzIHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihO
b2RlRmxhZ3M6OkludGVybmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKaW5kZXggOTlmYTQwZWJiNDQuLmYyN2VlZjRiNDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5j
bHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJW
TS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5jcHAKaW5kZXggNmNiYWVjMTY0NDMuLjAzMjQ2OWZlNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJT
Y3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDgxMzMyZDIxMDkxLi42MWYyZTc2NWYy
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0xODcsOCArMTg3LDggQEAgdm9pZCBJ
bnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgaGVhcE9iamVjdElkLAogICAgIH0KIAogICAgIC8vIEJpZ0ludCBwcmV2aWV3LgotICAgIGlm
IChjZWxsLT5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50Ojp0
cnlHZXRTdHJpbmcodm0sIGFzQmlnSW50KGNlbGwpLCAxMCk7CisgICAgaWYgKGNlbGwtPmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50Ojp0cnlHZXRTdHJp
bmcodm0sIGFzSGVhcEJpZ0ludChjZWxsKSwgMTApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAppbmRleCBiZjI5ODRhMTI4OS4uZGYxMDMyNDM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBA
IHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5n
VHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgorICAgIGNh
c2UgSGVhcEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAgYXJndW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBlYjgwODJlOWI3
Yi4uNDhlYWE0MDNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUK
IHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVy
ZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAodmFsdWUgaXMg
c3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmlu
ZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1
ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGlu
Z3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNjk4LDYgKzY5OCw4IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1
ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8vICAgICByZXN1
bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmln
SW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZhbHVlKQogICAg
IC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgIC8v
IH0KQEAgLTcwNiw3ICs3MDgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRW
YWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogCiAgICAgYXV0
byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlzU3RyaW5nID0g
YnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlzQmlnSW50ID0g
YnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlzSGVhcEJpZ0lu
dCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAgICAgaWYgKHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NFUlQoc2NyYXRj
aElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwpA
QCAtNzI5LDcgKzczMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVl
VG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgY29tcGFyZVB0
cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIHJlc3VsdCwg
cmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0
aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICBsb2FkMzIoQWRkcmVzcyh2
YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0KTsK
ICAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVk
SW1tMzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKQEAgLTc1Miw2ICs3
NTQsMTUgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4o
Vk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICBkb25lLmFwcGVuZChqdW1wKCkp
OwogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGF1
dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1
ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQpOworICAgIHVy
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgIGNvbXBhcmUzMihpbnZlcnQg
PyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKKyAg
ICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRoaXMpOwor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGNvbXBhcmU2
NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQpAQCAtNzY3LDcgKzc3OCw3IEBAIEFz
c2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZN
JiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5n
IGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAg
ICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8g
ICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAg
ICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAv
LyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAg
LTc3Nyw2ICs3ODgsOCBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVy
czo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIC8vICAgICByZXN1
bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1i
ZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9
IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5i
b3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2
YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03ODYsNyArNzk5LDcgQEAgQXNzZW1ibHlIZWxw
ZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1Zh
bHVlUmVncyB2YWwKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7
CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7
Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7
CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9h
ZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsK
ICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgxNyw3ICs4MzAsNyBAQCBBc3NlbWJseUhlbHBlcnM6
Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVS
ZWdzIHZhbAogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoUHRyKGludmVydCA/IEVxdWFsIDogTm90
RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbVB0cihqc0VtcHR5U3RyaW5nKHZt
KSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0gICAgaXNCaWdJbnQubGluayh0aGlz
KTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5j
aFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BS
KCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAo
KSk7CiAKQEAgLTg0Miw2ICs4NTUsMTUgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB9
CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0
byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVl
LmdwcigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICB1
cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaCk7CisgICAgdHJ1dGh5LmFwcGVuZChi
cmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHNjcmF0Y2gpKTsKKyAgICBkb25l
LmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlm
IC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHRydXRoeS5hcHBlbmQo
YnJhbmNoNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA2NjhmMGU1YWMxNS4u
ZGI2NDhhYmJiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTkyOSw3ICs5MjksMzcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogI2VuZGlmCiAgICAgfQotICAg
IAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQzMihHUFJSZWcg
Z3ByLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lz
dGVycykKKyAgICB7CisgICAgICAgIEp1bXAgbnVtYmVyID0gYnJhbmNoSWZOdW1iZXIoZ3ByLCBt
b2RlKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51
bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICBudW1iZXIubGluayh0aGlzKTsKKyAgICAgICAg
cmV0dXJuIGJpZ0ludDMyOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQzMktub3du
Tm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BS
KTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgdGVt
cEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihy
ZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAg
ICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRl
bXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcp
LCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0ZW1wR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisjZW5kaWYgLy8gVVNF
KEJJR0lOVDMyKQorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFy
IHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJy
YW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5j
aDgoCkBAIC05NTEsMTMgKzk4MSwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
YnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBGSVhN
RTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIg
aW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNoSWZTdHJpbmcoR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1
bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90
VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZTeW1ib2woR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsg
fQogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJy
YW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZC
aWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBCaWdJ
bnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsg
cmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQorICAgIEp1bXAg
YnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUo
Y2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdEhlYXBCaWdJ
bnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBIZWFw
QmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICBK
dW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICAKQEAgLTEzMzgsNiArMTM2
OSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAg
fQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9p
ZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICB1cnNoaWZ0NjQodHJ1
c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICB9CisKKyAgICB2b2lkIGJv
eEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBsc2hpZnQ2NCh0cnVzdGVkSW1t
MzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAgICBvcjY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQogI2VuZGlmCiAKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQpAQCAtMTcxOCw3ICsxNzYyLDcgQEAgcHVibGljOgogICAgICAgICAvLyAgICAg
ICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdp
bnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAg
ICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcyOSw2ICsxNzczLDggQEAgcHVibGlj
OgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlz
IGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisgICAgICAgIC8vIH0g
ZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdpbnQKICAg
ICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRlZmluZWQKICAgICAg
ICAgLy8gfQpAQCAtMTc2MCwxMCArMTgwNiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgbm90U3Ry
aW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBicmFuY2hJZk5vdEJp
Z0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0gYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwg
ZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAgICAgICBub3RIZWFw
QmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6U3ltYm9sLCBm
YWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7CkBAIC0xNzc5LDYg
KzE4MjUsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4gPSBicmFuY2hJZk5v
dEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6Qm9v
bGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7CisKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIEp1bXAgbm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlw
ZTo6QmlnSW50LCBmYWxzZSk7CisgICAgICAgIG5vdEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5k
aWYKICAgICAgICAgCiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6VW5kZWZpbmVkLCB0cnVl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYzZlNjFiODliZjkuLmQ1
ZWE5OWYzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zNzAsNiArMzcwLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfaXNfdW5kZWZpbmVkX29yX251bGwpCiAgICAgICAgIERFRklORV9PUChvcF9pc19ib29sZWFu
KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfbnVtYmVyKQorICAgICAgICBERUZJTkVfT1Aob3Bf
aXNfYmlnX2ludCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX29iamVjdCkKICAgICAgICAgREVG
SU5FX09QKG9wX2lzX2NlbGxfd2l0aF90eXBlKQogICAgICAgICBERUZJTkVfT1Aob3BfamVxX251
bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2NzE2NjYxZGY0Zi4uNDFmNmJmODQ4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI3LDYgKzUyNyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDNhMzJjMzI2
MTg5Li5mNTBjMzAzMDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMuY3BwCkBAIC00NzYsNiArNDc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVROZWdJQyogbmVnYXRl
SUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3Ry
dWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgbmVnYXRlSUMpOworICAgIC8v
IEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5l
Z2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAgZW1pdE1hdGhJQ0Zh
c3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIH0KIApAQCAtNDg0LDYgKzQ4
NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IGJpdHdpc2VfY2FzdDxKSVROZWdJQyo+KG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5nZXQoY3VycmVudEluc3RydWN0aW9uKSk7CisgICAgLy8gRklYTUU6
IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBz
aW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDU2xvdzxPcE5l
Z2F0ZT4obmVnSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZE9wdGltaXplLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0
aE5lZ2F0ZU9wdGltaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggZmRlMDBiY2M4YzkuLmJjYjNlYjhjZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTI4Myw2ICsyODMsMzQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
bnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCaWdJ
bnQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZp
cnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKKworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICBKdW1wIGlzQ2VsbCA9IGJyYW5jaElm
Q2VsbChyZWdUMCk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1h
c2spLCByZWdUMSk7CisgICAgYW5kNjQocmVnVDEsIHJlZ1QwKTsKKyAgICBjb21wYXJlNjQoRXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZWdUMCk7Cisg
ICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKKyAgICBKdW1wIGRv
bmUgPSBqdW1wKCk7CisKKyAgICBpc0NlbGwubGluayh0aGlzKTsKKyAgICBjb21wYXJlOChFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihIZWFwQmlnSW50VHlwZSksIHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyB7IHJlZ1QwIH0pOworCisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyNlbHNlCisgICAgLy8gSWYgd2Ugb25seSBoYXZlIEhlYXBC
aWdJbnRzLCB0aGVuIHdlIGVtaXQgaXNDZWxsV2l0aFR5cGUgaW5zdGVhZCBvZiBpc0JpZ0ludC4K
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKIHZvaWQgSklU
OjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BJc0NlbGxXaXRoVHlwZT4oKTsKQEAgLTU3MCwyOCArNTk4LDUxIEBAIHZvaWQgSklUOjpjb21w
aWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21w
aWxlT3BTdHJpCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7Ci0g
ICAgCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdz
KS4KKworICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5cGUnIHRvIGJl
IFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQor
ICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIHJlc3VsdCA9IChsZWZ0ID09IHJpZ2h0KTsKKyAg
ICBpZiAocmVzdWx0KQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8
fCByaWdodCBpcyBDZWxsKQorICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGRvbmU6CisgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRz
IChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5j
aCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1
c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhh
dCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwg
bWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBp
dCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGln
aCBiaXQgc2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8
NTAuCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAg
ICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOwor
ICAgIGFkZDY0KHJlZ1Q1LCByZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBs
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsK
KworICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUNSk7CisgICAgSnVtcCBk
b25lID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1Q1KTsKKwogICAgIG1vdmUocmVnVDAsIHJl
Z1QyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgLy8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9u
ZSBpcyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgorICAgIGFuZDY0KHJl
Z1QxLCByZWdUMik7CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHBy
ZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhl
IHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCisjZWxzZQorICAgIC8vIEp1bXAgc2xvdyBp
ZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgb3I2NChyZWdUMSwgcmVn
VDIpOworI2VuZGlmCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7Ci0gICAg
Ci0gICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4gRmlyc3QgdGVzdCBpZiBp
dCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRlc3QKLSAgICAvLyBpZiBp
dCdzIGEgZG91YmxlLgotICAgIEp1bXAgbGVmdE9LID0gYnJhbmNoSWZJbnQzMihyZWdUMCk7Ci0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDApKTsKLSAgICBsZWZ0T0subGluayh0
aGlzKTsKLSAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwotICAgIHJpZ2h0T0subGluayh0aGlzKTsK
IAotICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCi0gICAg
ICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgZWxzZQotICAg
ICAgICBjb21wYXJlNjQoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGJveEJv
b2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7Ci0KLSAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7CisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGlmICh0eXBlID09IENv
bXBpbGVPcFN0cmljdEVxVHlwZTo6TlN0cmljdEVxKQorICAgICAgICB4b3I2NChUcnVzdGVkSW1t
NjQoMSksIHJlZ1Q1KTsKKyAgICBib3hCb29sZWFuKHJlZ1Q1LCBKU1ZhbHVlUmVncyB7IHJlZ1Q1
IH0pOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUNSk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX3N0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC02MTQsMjQgKzY2NSw0OCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1w
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcAogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAsIHNyYzIsIHJlZ1QxKTsKIAotICAg
IC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCisgICAg
LyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWluZyAndHlwZScgdG8gYmUgU3RyaWN0RXEp
OgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgZ290
byBzbG93UGF0aDsKKyAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICBnb3RvIHRha2VuOwor
ICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICBnb3RvIHNsb3dQ
YXRoOworICAgIGdvdG8gbm90VGFrZW47CisgICAgKi8KKworICAgIC8vIFRoaXMgZnJhZ21lbnQg
aW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNp
bmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWly
ZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRy
aWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0
byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisg
ICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0
cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9y
IGVxdWFsIDE8PDUwLgorICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlKHJlZ1QxLCBy
ZWdUMyk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyks
IHJlZ1Q1KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDIpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdU
Myk7CisgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCByZWdUNSk7CisgICAgb3I2NChyZWdU
MiwgcmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVnVDMs
IHJlZ1Q1KSk7CisKKyAgICBKdW1wIGFyZUVxdWFsID0gYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCBy
ZWdUMSk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkK
KyAgICAgICAgYWRkSnVtcChhcmVFcXVhbCwgdGFyZ2V0KTsKKwogICAgIG1vdmUocmVnVDAsIHJl
Z1QyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgLy8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9u
ZSBpcyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgorICAgIGFuZDY0KHJl
Z1QxLCByZWdUMik7CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHBy
ZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhl
IHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCisjZWxzZQorICAgIC8vIEp1bXAgc2xvdyBp
ZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgb3I2NChyZWdUMSwgcmVn
VDIpOworI2VuZGlmCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CiAKLSAg
ICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3Mg
YW4gaW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdAotICAgIC8vIGlmIGl0J3Mg
YSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QwKTsKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMCkpOwotICAgIGxlZnRPSy5saW5rKHRoaXMp
OwotICAgIEp1bXAgcmlnaHRPSyA9IGJyYW5jaElmSW50MzIocmVnVDEpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmTnVtYmVyKHJlZ1QxKSk7Ci0gICAgcmlnaHRPSy5saW5rKHRoaXMpOwotCi0g
ICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKLSAgICAgICAg
YWRkSnVtcChicmFuY2g2NChFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKLSAgICBlbHNl
Ci0gICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdl
dCk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpIHsK
KyAgICAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CisgICAgICAgIGFyZUVxdWFsLmxpbmso
dGhpcyk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY4Niw3ICs3NjEsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAKICAgICBK
dW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhl
YXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNO
b3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKaW5kZXggYjExZjY1NWZjYjYuLjU2ZWJmYjA4NzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0yODgsNiArMjg4LDEy
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICAvLyBXZSBlbWl0IGlzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQsIHNpbmNl
IEJpZ0ludDMyIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IHBsYXRmb3Jtcy4KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxs
X3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+
KCk7CkBAIC04NjYsNyArODcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKHNyYywgcmVn
VDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1Qx
KTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAgaXNCaWdJbnQg
PSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIyYjlhMWQxZTljLi44MDA4MTQ4MTAy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
Mjk2LDYgKzEyOTYsMTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY28KICAgICByZXR1cm4gSlNW
YWx1ZTo6c3RyaWN0RXF1YWwoZ2xvYmFsT2JqZWN0LCBzcmMxLCBzcmMyKTsKIH0KIAorI2lmIFVT
RShCSUdJTlQzMikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBC
aWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogaGVhcEJp
Z0ludCwgaW50MzJfdCBzbWFsbEludCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKworICAgIEFTU0VSVChoZWFwQmlnSW50LT5pc0hlYXBCaWdJbnQoKSk7CisKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPihoZWFwQmlnSW50KS0+ZXF1YWxzVG9JbnQzMihz
bWFsbEludCk7Cit9CisjZW5kaWYKKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgaW50
IHNpemUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjgxNSw2ICsy
ODI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gcHJvZmlsZWRNdWwo
Z2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0K
IAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZh
bHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjgyNyw4ICsyODQxLDE2IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBh
c0JpZ0ludChwcmltVmFsdWUpKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmln
SW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12
YWx1ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFs
dWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHBy
aW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1
ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjgzNiw2ICsyODU4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogCiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9z
ZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmls
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
ZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZSk7CkBAIC0yODUwLDEwICsyODczLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAg
ICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAg
aWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgYXJpdGhQcm9maWxl
LT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlz
SGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5h
cnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJpdGhQcm9m
aWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg2NCw2ICsyODk3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKKy8v
IEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5l
Z2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklU
TmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4
ODQsOSArMjkxOCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMy
X3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1
ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2
ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJ
bnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXMo
dm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiAgICAgfQpAQCAtMjg5OCw2ICsyOTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3
b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2Ug
dGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTE3LDkgKzI5NjMsMTggQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwg
YXNCaWdJbnQocHJpbVZhbHVlKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1F
OiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBub3QgdGhl
IHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFs
dWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgcHJpbVZhbHVlID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJp
bVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
QmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpKTsKIAogICAg
IGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjAwZmNhMjlkYzIuLjIwOWIzYzNm
OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjA1
LDYgKzIwNSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKICNpZiBVU0UoSlNWQUxVRTY0KQogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKK3Np
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyKEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50KSBXVEZf
SU5URVJOQUw7CiAjZWxzZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0
cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZf
SU5URVJOQUw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZmxpbmVBc21Db25maWcuaAppbmRleCA1MjQzNWE2NjEyMC4uMmEyYmI5OWY5NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fSlNWQUxVRTY0
IDAKICNlbmRpZgogCisjaWYgVVNFKEJJR0lOVDMyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJ
TlQzMiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCisjZW5kaWYKKwog
I2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IDEwMjk1NTQyMTg5Li5mMmFmYjBiYzI3MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTk2LDYg
KzE5NiwxMiBAQCBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBWYWx1ZU51bGwgICAgICAgPSBjb25z
dGV4cHIgSlNWYWx1ZTo6VmFsdWVOdWxsCiAgICAgY29uc3QgVGFnTnVtYmVyICAgICAgID0gY29u
c3RleHByIEpTVmFsdWU6Ok51bWJlclRhZwogICAgIGNvbnN0IE5vdENlbGxNYXNrICAgICA9IGNv
bnN0ZXhwciBKU1ZhbHVlOjpOb3RDZWxsTWFzaworICAgIGlmIEJJR0lOVDMyCisgICAgICAgIGNv
bnN0IFRhZ0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFsdWU6OkJpZ0ludDMyVGFnCisgICAgICAg
IGNvbnN0IE1hc2tCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMk1hc2sKKyAg
ICBlbmQKKyAgICBjb25zdCBMb3dlc3RPZkhpZ2hCaXRzID0gY29uc3RleHByIEpTVmFsdWU6Okxv
d2VzdE9mSGlnaEJpdHMKKyAgICBjb25zdCBDb25zdGFudE9uZSA9IDEKIGVsc2UKICAgICBjb25z
dCBJbnQzMlRhZyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpJbnQzMlRhZwogICAgIGNvbnN0IEJvb2xl
YW5UYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Qm9vbGVhblRhZwpAQCAtNTIxLDYgKzUyNyw3IEBA
IGNvbnN0IEpTRnVuY3Rpb25UeXBlID0gY29uc3RleHByIEpTRnVuY3Rpb25UeXBlCiBjb25zdCBB
cnJheVR5cGUgPSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0g
Y29uc3RleHByIERlcml2ZWRBcnJheVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0
ZXhwciBQcm94eU9iamVjdFR5cGUKK2NvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhl
YXBCaWdJbnRUeXBlCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVy
ZWQgaW4gYSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4K
ICMgc3dpdGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQppbmRleCAzNDE2ODBhYmVlOC4uMTJhNGU1NjY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQ0LDI0ICs4NDQsNDgg
QEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfdW5kZWZpbmVkX29yX251bGwsIE9wSXNVbmRlZmlu
ZWRPck51bGwsIG1hY3JvIChzaXplLCBnZXQKIGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcU9wKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RF
cU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgY3JlYXRlQm9vbGVhbikKICAgICBsbGludE9w
V2l0aFJldHVybihvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKICAgICAgICAgZ2V0
KG1fbGhzLCB0MikKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEp
CiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQorCisgICAgICAg
ICMgQXQgYSBoaWdoIGxldmVsIHdlIGRvCisgICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8
IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAg
IyByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgICAgICMgaWYgKHJlc3VsdCkKKyAgICAg
ICAgIyAgICAgZ290byBkb25lOworICAgICAgICAjIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyBkb25lOgor
ICAgICAgICAjIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgIyBUaGlzIGZyYWdtZW50IGltcGxl
bWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUg
YnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlm
IHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgICAgICAjIFRoZSB0cmlj
ayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8g
aXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAg
ICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBp
dHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92
ZSBvciBlcXVhbCAxPDw1MC4KICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0
MgorICAgICAgICBtb3ZlIHQxLCB0MworICAgICAgICBtb3ZlIExvd2VzdE9mSGlnaEJpdHMsIHQ1
CisgICAgICAgIGFkZHEgdDUsIHQyCisgICAgICAgIGFkZHEgdDUsIHQzCisgICAgICAgIG9ycSB0
MiwgdDMKKyAgICAgICAgbHNoaWZ0cSBDb25zdGFudE9uZSwgdDUsIHQ1CisgICAgICAgIGJxYWVx
IHQzLCB0NSwgLnNsb3cKKworICAgICAgICBjcWVxIHQwLCB0MSwgdDUKKyAgICAgICAgYnRxbnog
dDUsIHQ1LCAuZG9uZSAjaXMgdGhlcmUgYSBiZXR0ZXIgd2F5IG9mIGNoZWNraW5nIHQ1ICE9IDAg
PworCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFu
ICdvcicgaWYgbm90IGZvciBCaWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9y
IGEgQ2VsbCB0byBiZSBzdHJpY3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQx
LCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEg
dDAsIG51bWJlclRhZywgLmxlZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xv
dwotICAgIC5sZWZ0T0s6Ci0gICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0g
ICAgICAgIGJ0cW56IHQxLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAg
IGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCi0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0
MAotICAgICAgICByZXR1cm4odDApCisKKyAgICAuZG9uZToKKyAgICAgICAgY3JlYXRlQm9vbGVh
bih0NSkKKyAgICAgICAgcmV0dXJuKHQ1KQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93
UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTg3MSwzMyArODk1LDUzIEBAIGVuZAog
CiAKIHN0cmljdEVxT3Aoc3RyaWN0ZXEsIE9wU3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCByZXN1bHQpIGNxZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9w
ZXJhbmQpIHhvcnEgVmFsdWVGYWxzZSwgb3BlcmFuZCBlbmQpCiAKIAogc3RyaWN0RXFPcChuc3Ry
aWN0ZXEsIE9wTnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcW5l
cSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKKyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1
ZVRydWUsIG9wZXJhbmQgZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcXVh
bGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGp1bXBJZkVxdWFsLCBqdW1wSWZO
b3RFcXVhbCkKICAgICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9saHMs
IHQyKQogICAgICAgICBnZXQobV9yaHMsIHQzKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQyLCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MywgdDEpCisKKyAgICAgICAgIyBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAo
bGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNs
b3dQYXRoOworICAgICAgICAjIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAjICAgICBnb3Rv
IGp1bXBUYXJnZXQ7CisgICAgICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxs
KQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGdvdG8gb3RoZXJKdW1w
VGFyZ2V0CisKKyAgICAgICAgIyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91
YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2Yg
dGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJ
bnQzMi9icmFuY2hJZk51bWJlcgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNW
YWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92
ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElmIGl0IGlzIG5v
dCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBz
ZXQKKyAgICAgICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4K
ICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBtb3ZlIHQx
LCB0MworICAgICAgICBtb3ZlIExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUs
IHQyCisgICAgICAgIGFkZHEgdDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNo
aWZ0cSBDb25zdGFudE9uZSwgdDUsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKwor
ICAgICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAg
ICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5j
ZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEg
bm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxN
YXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAg
IGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEg
dDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNs
b3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVt
cFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAg
IGp1bXAobV90YXJnZXRMYWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90YXJn
ZXRMYWJlbCwgZGlzcGF0Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1
bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywzMyArOTUxLDM2
IEBAIGVuZAogCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEs
Ci0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQpCi0KKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRh
cmdldExhYmVsKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
ZGlzcGF0Y2goKSBlbmQpCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5z
dHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQpCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
ZGlzcGF0Y2goKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
anVtcCh0YXJnZXRMYWJlbCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAg
ICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQKIAotICAgICAgICBnZXQobV9zcmNEc3QsIHQw
KQotICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0
MikKLSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0
MywgbnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykK
LSAgICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwg
OF0KLSAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKLSAgICAgICAg
ZGlzcGF0Y2goKQorICAgIGdldChtX3NyY0RzdCwgdDApCisgICAgbG9hZHEgW2NmciwgdDAsIDhd
LCB0MQorICAgIG1ldGFkYXRhKHQyLCB0MykKKyAgICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRhdGEg
aW4gdDIKKyAgICAjIEZJWE1FOiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGgg
Zm9yIEJpZ0ludDMyLiBXZSBjb3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBo
ZXJlIGZvciB0aGVtLgorICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgIGludGVnZXJP
cGVyYXRpb24odDEsIC5zbG93KQorICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgc3RvcmVxIHQx
LCBbY2ZyLCB0MCwgOF0KKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQor
ICAgIGRpc3BhdGNoKCkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCisKIGVuZAog
CiBsbGludE9wV2l0aFByb2ZpbGUob3BfdG9fbnVtYmVyLCBPcFRvTnVtYmVyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQpAQCAtMTI3OSw2ICsxMzI2LDE5IEBAIGxsaW50T3BX
aXRoUmV0dXJuKG9wX2lzX251bWJlciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIHJldHVybikKICAgICByZXR1cm4odDEpCiBlbmQpCiAKK2xsaW50T3BXaXRoUmV0dXJu
KG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKKyAgICBnZXQobV9vcGVyYW5kLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCkKKyAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQor
ICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBIZWFwQmlnSW50VHlwZSwgdDEKKyAgICBvcnEg
VmFsdWVGYWxzZSwgdDEKKyAgICByZXR1cm4odDEpCisubm90Q2VsbENhc2U6CisgICAgYW5kcSBN
YXNrQmlnSW50MzIsIHQwCisgICAgY3FlcSB0MCwgVGFnQmlnSW50MzIsIHQwCisgICAgb3JxIFZh
bHVlRmFsc2UsIHQwCisgICAgcmV0dXJuKHQwKQorZW5kKQogCiBsbGludE9wV2l0aFJldHVybihv
cF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fdHlw
ZSwgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmlu
ZGV4IDg0ZmUzOTljZDhjLi40Yjk0NDUwNWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKQEAgLTgzLDYgKzgzLDEwIEBAIGNvbnN0IElkZW50aWZp
ZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwg
Y29uc3QgSWRlCiAgICAgaWYgKHJhZGl4ID09IDEwKQogICAgICAgICByZXR1cm4gaWRlbnRpZmll
cjsKIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU1Zh
bHVlIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5z
dHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25z
LCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7CisgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKKwogICAgIC8vIEZJWE1FOiBXZSBhcmUgYWxsb2NhdGluZyBhIEpTQmlnSW50
IGp1c3QgdG8gYmUgYWJsZSB0byB1c2UKICAgICAvLyBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nIHdo
ZW4gcmFkaXggaXMgbm90IDEwLgogICAgIC8vIFRoaXMgY3JlYXRlcyBzb21lIEdDIHByZXNzdXJl
LCBidXQgc2luY2UgdGhlc2UgaWRlbnRpZmllcnMKQEAgLTkwLDExICs5NCwxNSBAQCBjb25zdCBJ
ZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihW
TSYgdm0sIGNvbnN0IElkZQogICAgIC8vIGl0IHdvbnQgYmUgbXVjaCBwcm9ibGVtYXRpYywgZ2l2
ZW4gc3VjaCBjYXNlcyBhcmUgdmVyeSByYXJlLgogICAgIC8vIFRoZXJlIGlzIGEgbG90IG9mIG9w
dGltaXphdGlvbnMgd2UgY2FuIGFwcGx5IGhlcmUgd2hlbiBuZWNlc3NhcnkuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYyNwotCi0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBK
U0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4
LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBh
cnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0g
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJ
bnQ6OnRyeUdldFN0cmluZyh2bSwgYmlnSW50LCAxMCkpKTsKKyAgICBKU0JpZ0ludCogaGVhcEJp
Z0ludDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIGhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYmlnSW50LmJpZ0lu
dDMyQXNJbnQzMigpKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgaGVhcEJpZ0ludCA9IGJp
Z0ludC5hc0hlYXBCaWdJbnQoKTsKKworICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGhlYXBCaWdJbnQs
IDEwKSkpOwogICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDdhNjQy
YzAyNmZkLi4xZTRkOWZiMGUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJv
dG90eXBlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENv
bnN0cnVjdG9yLmNwcAppbmRleCAyZmYzZjc5NzIwYi4uNWYwZDU0ODQ4MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlv
bGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NSwx
OCArNzUsNiBAQCB2b2lkIEJpZ0ludENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1z
dGF0aWMgYm9vbCBpc1NhZmVJbnRlZ2VyKEpTVmFsdWUgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFy
Z3VtZW50LmlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWFyZ3Vt
ZW50LmlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRvdWJsZSBudW1i
ZXIgPSBhcmd1bWVudC5hc0RvdWJsZSgpOwotICAgIHJldHVybiB0cnVuYyhudW1iZXIpID09IG51
bWJlciAmJiBzdGQ6OmFicyhudW1iZXIpIDw9IG1heFNhZmVJbnRlZ2VyKCk7Ci19Ci0KIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGFyZ3VtZW50KQogewogICAgIEFTU0VSVChhcmd1bWVudC5pc1ByaW1pdGl2ZSgpKTsK
QEAgLTk0LDIwICs4MiwyNCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICAKICAgICBpZiAo
YXJndW1lbnQuaXNCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1
bWVudCk7Ci0gICAgCisKKyAgICBpZiAoYXJndW1lbnQuaXNCb29sZWFuKCkpIHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNC
b29sZWFuKCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChhcmd1bWVudC5pc1N0cmluZygp
KSB7CisgICAgICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCwg
WyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBBU1NFUlQoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1
bWVudC5pc051bWJlcigpIHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAoYXJndW1lbnQuaXNCb29s
ZWFuKCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpKTsKLSAgICAK
LSAgICBpZiAoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1bWVudC5pc051bWJl
cigpIHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJ
bnQgb3BlcmF0aW9uIl9zKTsKLSAgICAKLSAgICBBU1NFUlQoYXJndW1lbnQuaXNTdHJpbmcoKSk7
Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1N0cmluZ1ZpZXcoZ2xvYmFs
T2JqZWN0LCBhcmd1bWVudCwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7
Ci0gICAgfSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9zKTsKIH0K
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpA
QCAtMTE5LDIwICsxMTEsMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVl
IHByaW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbWl0
aXZlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgaWYgKCFpc1NhZmVJbnRlZ2VyKHByaW1pdGl2ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IHNhZmUgaW50ZWdlciJfcykpOwotICAg
ICAgICAKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBpZiAocHJpbWl0aXZlLmlz
SW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlz
SW50MzIoKSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsK
KyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKKyNlbmRpZgorICAgIH0KIAotICAgICAgICBp
ZiAocHJpbWl0aXZlLmlzVUludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNVSW50MzIoKSkpOworICAg
IGlmIChwcmltaXRpdmUuaXNEb3VibGUoKSkgeworICAgICAgICBkb3VibGUgbnVtYmVyID0gcHJp
bWl0aXZlLmFzRG91YmxlKCk7CisgICAgICAgIGlmICh0cnVuYyhudW1iZXIpICE9IG51bWJlciB8
fCBzdGQ6OmFicyhudW1iZXIpID4gbWF4U2FmZUludGVnZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsICJOb3QgYSBzYWZlIGludGVnZXIiX3MpKTsKIAotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzJPckhlYXAsIHZtLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsKICAgICB9Ci0gICAgCisKICAgICBFbmNvZGVk
SlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0ludChnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3Qu
Y3BwCmluZGV4IGVlMDA0NWRhYzk2Li5lNjE5ODJiOTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEJpZ0ludE9iamVjdCk7CiBjb25zdCBDbGFz
c0luZm8gQmlnSW50T2JqZWN0OjpzX2luZm8gPSB7ICJCaWdJbnQiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJpZ0ludE9iamVjdCkgfTsKIAog
Ci1CaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGJpZ0ludCkKK0JpZ0ludE9iamVjdCogQmlnSW50
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGJpZ0ludCkKIHsKICAgICBCaWdJbnRPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0uaGVhcCkpIEJpZ0ludE9iamVjdCh2bSwgZ2xv
YmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSwgYmlnSW50KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgQmlnSW50T2JqZWN0OjpCaWdJ
bnRPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBCaWdJ
bnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNCaWdJbnQqIGJpZ0ludCkKK3ZvaWQg
QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgYmlnSW50KQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApp
bmRleCA0NGZjNzZmYmRmOS4uYTYzNTRhMTZlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTV3JhcHBlck9iamVjdC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTQxLDExICs0MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2bS5iaWdJbnRPYmplY3RTcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIHN0YXRpYyBCaWdJ
bnRPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNCaWdJbnQqKTsKKyAgICBz
dGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIEpTQmlnSW50KiBpbnRlcm5hbFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gYXNCaWdJbnQoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZh
bHVlKCkpOyB9CisgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gSlNX
cmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCk7IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTU3LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KTsKIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0JpZ0ludCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU1ZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBCaWdJbnRPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCmluZGV4IGRiNGE2MTg4OTlkLi5mYjViOWZhYjEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzksMTIgKzc5LDI0IEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNC
aWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1FOiBoZWFwLWFsbG9jYXRpbmcgYWxsIGJpZyBp
bnRzIGlzIGlubmVmaWNpZW50LCBidXQgcmUtaW1wbGVtZW50aW5nIHRvU3RyaW5nIGZvciBzbWFs
bCBCaWdJbnRzIGlzIGVub3VnaCB3b3JrIHRoYXQgSSdtIGRlZmVycmluZyBpdCB0byBhIGxhdGVy
IHBhdGNoLgorICAgIGlmICh0aGlzVmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHRoaXNWYWx1ZS5iaWdJbnQzMkFzSW50MzIoKSk7Cisj
ZW5kaWYKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKEpTQmln
SW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5hc0Nl
bGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAgICAgaWYg
KEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3Qq
Pih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRPYmpl
Y3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJbnRP
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxs
KCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+aW50ZXJu
YWxWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChiaWdJbnQuaXNC
aWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtOTksOCArMTExLDYgQEAgc3RhdGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5j
VG9TdHJpbmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7
CiAKLSAgICBBU1NFUlQodmFsdWUpOwotCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBz
Y29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTE4LDYg
KzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUp
KTsKIH0KIAorLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmln
aHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNhbmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRiNDIyLi4yNGU4ODM3ZDM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjksNyArNjksNiBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUg
IlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NzAsMTMg
KzQ2OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbmMpCiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5jPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQg
PSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJ
bnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzSW5jKGdsb2JhbE9iamVjdCwgYXJndW1lbnQp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAg
IHJlc3VsdCA9IEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdU
Rjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgKyAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9G
SUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTQ4
NSwxMyArNDc5LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYykKICAgICBCRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1
bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxK
U0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEZWMoZ2xvYmFsT2JqZWN0LCBhcmd1
bWVudCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAg
ICAgICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1i
ZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSAtIDEpOwogICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApA
QCAtNTA4LDcgKzQ5NywxNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFy
eUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYQogICAgIFVuYXJ5QXJp
dGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CiAgICAgcHJvZmls
ZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8fCBy
ZXN1bHQuaXNCaWdJbnQoKSk7Ci0gICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CisKKyAgICBp
ZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSGVh
cEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChyZXN1bHQuaXNCaWdJ
bnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsKKyNlbmRpZgor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSW50MzIo
KSkKICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpOwpA
QCAtNTI4LDEwICs1MjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFy
eUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYQogICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQoKSkKLSAgICAgICAg
cHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludCgpOwotICAgIGVsc2UKLSAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKKyAgICB9CiB9CiAjZWxzZQogc3RhdGljIHZvaWQgdXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYsIEpTVmFs
dWUsIEpTVmFsdWUpIHsgfQpAQCAtNTQ2LDggKzU0MCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmVnYXRlKQogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2
ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAK
LSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYg
KHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HKHJlc3VsdCwgeworICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVu
YXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlN
aW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgUkVUVVJOX1dJVEhf
UFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5h
cnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9wZXJhbmQpOwogICAgICAgICB9KTsKQEAgLTU4
NSw4ICs1OTIsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJp
dGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUIKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKKyAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJv
ZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYKICAgICBlbHNlIAogICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygpOwogfQpAQCAtNjA4LDEzICs2MTksOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVtZXJpYykKICAgICBCRUdJTigpOwogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUb051bWVyaWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVu
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNC
aWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0g
ICAgICAgIHJlc3VsdCA9IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCk7Ci0gICAg
ZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZh
cmlhbnQpKTsKICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIApAQCAtNjUwLDcgKzY1
Niw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiB9CiAKIC8vIFRoZSBmb2xsb3dp
bmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIG5lZWQgdG8gYmUgc3VyZSB0byBy
dW4KLS8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3BlcmFuZHMgaW4gb3JkZXIuICAoQSBjYWxsIHRv
IHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAorLy8gdG9OdW1lcmljL3RvQmlnSW50T3JJbnQzMigp
IG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0aGVzZSBpcyBpZGVtcG90
ZW50CiAvLyBpZiBhbiBleGNlcHRpb24gaXMgYWxyZWFkeSBzZXQgb24gdGhlIENhbGxGcmFtZS4p
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tdWwpCkBAIC02NzIsMjQgKzY3OCw4IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cFN1Yj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lU
SF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxl
Rm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVm
dCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpIC0gV1RGOjpnZXQ8ZG91
YmxlPihyaWdodE51bWVyaWMpKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7
CiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKICAgICB9KTsKQEAgLTcwMSwy
NiArNjkxLDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RpdikKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wRGl2PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1f
cmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAg
ICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKLSAgICAgICAgICAgICAgICB1
cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24uIikpOwotICAgIH0KLQotICAg
IGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIg
PSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihhIC8gYik7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAg
ICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MzIsMjQgKzcw
NCw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tb2QpCiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcE1vZD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xo
cykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3Jocyku
anNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1Jl
bWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpyZW1haW5kZXIo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJP
VyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAg
ICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBi
ID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIFJFVFVSTihqc051bWJlcihq
c01vZChhLCBiKSkpOworICAgIFJFVFVSTihyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcG93KQpAQCAtNzU4LDI1ICs3MTUsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcG93KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQb3c+KCk7CiAgICAgSlNWYWx1
ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJp
Z2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1l
cmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNQb3coZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAg
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJh
dGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihs
ZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
Yyk7Ci0KLSAgICBSRVRVUk4oanNOdW1iZXIob3BlcmF0aW9uTWF0aFBvdyhhLCBiKSkpOworICAg
IFJFVFVSTihyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQpA
QCAtNzg1LDIyICs3MjYsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTHNoaWZ0PigpOwogICAgIEpTVmFsdWUgbGVmdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxl
ZnQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVz
dWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlm
dCBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihX
VEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPDwgKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0
TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTFNoaWZ0KGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQpA
QCAtODA5LDIyICs3MzgsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUnNoaWZ0PigpOwogICAgIEpTVmFsdWUgbGVmdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxl
ZnQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNp
Z25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKSk7Ci0gICAgfQotCi0gICAgUkVUVVJOX1BS
T0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSA+PiAoV1RGOjpn
ZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSAmIDMxKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF91cnNoaWZ0KQpAQCAtODUwLDc5ICs3NjcsNDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2JpdG5vdCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BCaXRub3Q+KCk7Ci0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fb3BlcmFuZCkuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAg
IENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihvcGVyYW5kTnVtZXJpYykpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpOwotICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgfQorICAgIGF1dG8gb3BlcmFuZCA9IEdFVF9DKGJ5dGVj
b2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOwogCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVy
KH5XVEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmQpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfYml0YW5kKQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEJpdGFuZD4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1f
cmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lz
ZUFuZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIikp
OwotICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgp
OworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0g
ICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmlj
KSAmIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQml0d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19F
WENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdG9yKQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcEJpdG9yPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpi
aXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAg
IH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOworICAg
IGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgICAg
IFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQot
Ci0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1l
cmljKSB8IFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEJpdHhvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5
dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVy
YXRpb24uIikpOwotICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocyku
anNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpOwogCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxl
ZnROdW1lcmljKSBeIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzQml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVvZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcAppbmRleCA5YzM0NTQ0MmY1NC4uMDJhNWI3MWRiMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUgaW5pdFR5cGUp
CiAKIFN0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJp
Z0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhIZWFwQmlnSW50
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6
OmNyZWF0ZVplcm8oVk0mIHZtKQpAQCAtMTg4LDM0ICsxODgsMjEgQEAgSlNWYWx1ZSBKU0JpZ0lu
dDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CiB9CiAKLU9wdGlv
bmFsPHVpbnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkKLXsKLSAg
ICBpZiAoaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChsZW5ndGgo
KSA9PSAxICYmICFzaWduKCkpIHsKLSAgICAgICAgRGlnaXQgckRpZ2l0ID0gZGlnaXQoMCk7Ci0g
ICAgICAgIGlmIChyRGlnaXQgPD0gOSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50OF90PihyRGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1KU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1Zp
ZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJz
ZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJu
IHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBwYXJz
ZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnMx
NigpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50Ojpw
YXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcg
cywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWdu
IHNpZ24pCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1v
ZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkp
CiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnM4
KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJzZUludE1vZGU6
OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwg
c2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKIH0KIAotSlNCaWdJbnQq
IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJpbmdWaWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCiB7CiAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgcywgRXJyb3JQYXJzZU1vZGU6Oklnbm9yZUV4Y2VwdGlvbnMpOwogfQpA
QCAtNDU0LDE2ICs0NDEsMjMgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW4KIAogSlNCaWdJbnQq
IEpTQmlnSW50OjppbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgp
CiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJp
dCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIHJldHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQo
KSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShn
bG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlVuc2lnbmVkKTsKKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAg
cmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEpTQmlnSW50
KiBKU0JpZ0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4
KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBi
aXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
LSAgICByZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0
KCkpOworICAgIGlmICh4LT5pc1plcm8oKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAgICAgICByZXN1bHQtPnNldFNp
Z24odHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmICgheC0+c2ln
bigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2ln
bk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQpAQCAtNTMyLDcg
KzUyNiw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAgaWYgKHgtPnNpZ24oKSkKICAg
ICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHggJiAoLXkpID09IHggJiB+KHkt
MSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkKICAgICBKU0Jp
Z0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHksIHktPmxlbmd0aCgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICByZXR1cm4gYWJz
b2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTYzOCw3IEBAIFN0cmluZyBKU0Jp
Z0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkK
IHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0Jp
Z0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7CiAKICAgICBBU1NFUlQo
cmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcgKzE3OTYsNyBAQCBib29sIEpT
QmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VN
b2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVy
cm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAt
MTgxMCw3ICsxODA0LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKICAgICB3aGlsZSAocCA8
IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsKIAotICAg
IC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgIC8vIENoZWNrIFJhZGl4
IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkg
KyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsK
ICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdiJykp
CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVu
Z3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5zaWduZWQsIFBh
cnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0xODI0LDI0ICsxODE4LDE4IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUludFNpZ24gc2lnbiA9IFBhcnNl
SW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGRh
dGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlIGlmIChkYXRhW3Bd
ID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScpIHsKICAgICAgICAgICAgIHNp
Z24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAgKytwOwogICAg
IH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBk
YXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7Ci0KLSAgICBpZiAocmVz
dWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9
PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBh
cnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50
U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwg
RXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUlu
dE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAgdW5zaWdu
ZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4NDAsNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5
cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGVycm9y
UGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAgICAgICAgICAg
ICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xv
YmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAg
IC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjYsNDQgKzE4NTQsODYgQEAgSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIENoYXJUeXBlKiBkYXQKIAogICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsKIAotICAgIGlm
IChwID09IGxlbmd0aCkKKyAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDApOworI2Vsc2UK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotCi0gICAgdW5zaWduZWQgbGltaXQwID0g
JzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBsaW1pdGEgPSAn
YScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0g
MTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwg
dm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2
ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFu
IGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6
V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBw
KyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRhW2ldID49ICcw
JyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAn
OwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRhKQot
ICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAgIGVsc2UgaWYg
KGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAgICBkaWdpdCA9
IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KHJh
ZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisjZW5kaWYKICAgICB9CiAKLSAgICBy
ZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRydWUgOiBmYWxz
ZSk7Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRy
aW0odm0pOworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgbnVtYmVyIHN1
Y2ggdGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMyX01BWAorICAg
IHVuc2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChyYWRpeCkgewor
ICAgIGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMwOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAx
MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JC
aWdJbnQzMiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAgIGxlbmd0
aExpbWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwogCi0gICAgQVNTRVJUKGdsb2Jh
bE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJv
d0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRv
IEJpZ0ludCIpKTsKKyAgICB1bnNpZ25lZCBsaW1pdDAgPSAnMCcgKyAocmFkaXggPCAxMCA/IHJh
ZGl4IDogMTApOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNfY2FzdDxpbnQz
Ml90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHN0YXRpY19j
YXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0g
bGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBpbnQzMl90IGRp
Z2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZsb3c+IG11bHRp
cGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoTGltaXRG
b3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAgICAgIGRpZ2l0
ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAgICAgICAgICAg
IGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAgICAgICAgICAg
IGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49
ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFb
cF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ0EnICYmIGRh
dGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdBJyAr
IDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yUGFyc2VN
b2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3Qs
ICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdldCgpKTsKKwor
ICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChwID09IGxlbmd0aCkg
eworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKQorICAg
ICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgZGlnaXQpOworI2Vs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZGlnaXQpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgaGVhcFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwg
dm0sIHJhZGl4LCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIC8vIHJlc3VsdCBjYW4g
c3RpbGwgYmUgbnVsbCBpZiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBnbG9iYWwgb2JqZWN0LCBh
cyBhbGxvY2F0ZUZvciBjYW5ub3QgdGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoYXQgY2FzZS4KKyAg
ICAgICAgICAgICAgICBpZiAoIWhlYXBSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgaGVhcFJlc3VsdC0+aW5pdGlhbGl6ZShJbml0
aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBoZWFwUmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KG11
bHRpcGxpZXIudW5zYWZlR2V0KCkpLCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKKyAgICB9
CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBoZWFwUmVzdWx0LT5zZXRTaWduKHNpZ24gPT0g
UGFyc2VJbnRTaWduOjpTaWduZWQpOworICAgIHJldHVybiBoZWFwUmVzdWx0LT5yaWdodFRyaW0o
dm0pOwogfQogCiBpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdCh1bnNpZ25l
ZCBuKQpAQCAtMTkyNywxOCArMTk1NywyMCBAQCBib29sIEpTQmlnSW50OjplcXVhbHNUb051bWJl
cihKU1ZhbHVlIG51bVZhbHVlKQogewogICAgIEFTU0VSVChudW1WYWx1ZS5pc051bWJlcigpKTsK
ICAgICAKLSAgICBpZiAobnVtVmFsdWUuaXNJbnQzMigpKSB7Ci0gICAgICAgIGludCB2YWx1ZSA9
IG51bVZhbHVlLmFzSW50MzIoKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLT5pc1plcm8oKTsKLQotICAgICAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09
IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUp
KSkpOwotICAgIH0KKyAgICBpZiAobnVtVmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4g
ZXF1YWxzVG9JbnQzMihudW1WYWx1ZS5hc0ludDMyKCkpOwogICAgIAogICAgIGRvdWJsZSB2YWx1
ZSA9IG51bVZhbHVlLmFzRG91YmxlKCk7CiAgICAgcmV0dXJuIGNvbXBhcmVUb0RvdWJsZSh0aGlz
LCB2YWx1ZSkgPT0gQ29tcGFyaXNvblJlc3VsdDo6RXF1YWw7CiB9CiAKK2Jvb2wgSlNCaWdJbnQ6
OmVxdWFsc1RvSW50MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAg
ICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7CisgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAx
KSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0g
c3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkp
KTsKK30KKwogSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJbnQ6OmNvbXBhcmVUb0Rv
dWJsZShKU0JpZ0ludCogeCwgZG91YmxlIHkpCiB7CiAgICAgLy8gVGhpcyBhbGdvcml0aG0gZXhw
ZWN0IHRoYXQgdGhlIGRvdWJsZSBmb3JtYXQgaXMgSUVFRSA3NTQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDhhNGU2MDk5ZjQ3Li45N2ZjOTE2NTM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTAsMTMgKzkwLDEyIEBAIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERpc2FsbG93RW1wdHlTdHJpbmcs
IEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50U2lnbiB7IFVuc2ln
bmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlID0g
RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRT
aWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9i
amVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93
RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJpbmdUb0JpZ0ludChKU0dsb2Jh
bE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9k
ZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNl
SW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFs
T2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhy
b3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJpbmdUb0JpZ0ludChKU0dsb2Jh
bE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0cmluZyB0cnlHZXRTdHJpbmco
Vk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+
IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAgZW51bSBjbGFzcyBDb21wYXJp
c29uTW9kZSB7CkBAIC0xMTMsNiArMTEyLDcgQEAgcHVibGljOgogICAgIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmlnSW50Kik7CiAgICAg
Ym9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENvbXBhcmlzb25SZXN1bHQgY29t
cGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBj
b25zdDsKQEAgLTIyMiwxMCArMjIyLDEwIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNH
bG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJz
ZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNl
SW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUludE1v
ZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2ln
biA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUludE1vZGU6OkFs
bG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihKU0ds
b2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2lnbmVkIGNoYXJjb3VudCk7CiAK
QEAgLTI1OCw5ICsyNTgsOSBAQCBwcml2YXRlOgogICAgIENhZ2VkVW5pcXVlUHRyPEdpZ2FjYWdl
OjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxpbmUgSlNCaWdJbnQqIGFzQmln
SW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludChKU1ZhbHVl
IHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7CisgICAg
QVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7CiAgICAgcmV0dXJuIGpzQ2Fz
dDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1NDgwMTBlYjFjMC4uNWM1YTMyYWNlN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAorI2luY2x1
ZGUgIkJpZ0ludE9iamVjdC5oIgogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIu
aCIKQEAgLTcxLDYgKzcyLDE0IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc0ludDMyKCkg
JiYgIWlzRG91YmxlKCkpOwogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2Vs
bCgpLT50b051bWJlcihnbG9iYWxPYmplY3QpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
aXNCaWdJbnQzMigpKSB7CisgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJbnQn
IHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfcyk7CisgICAgICAgIHJldHVybiAwLjA7Cisg
ICAgfQorI2VuZGlmCiAgICAgaWYgKGlzVHJ1ZSgpKQogICAgICAgICByZXR1cm4gMS4wOwogICAg
IHJldHVybiBpc1VuZGVmaW5lZCgpID8gUE5hTiA6IDA7IC8vIG51bGwgYW5kIGZhbHNlIGJvdGgg
Y29udmVydCB0byAwLgpAQCAtMTAxLDYgKzExMCwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9P
YmplY3RTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAg
ICByZXR1cm4gY29uc3RydWN0TnVtYmVyKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKICAgICBp
ZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVh
bkZyb21JbW1lZGlhdGVCb29sZWFuKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEJpZ0ludE9i
amVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICp0aGlzKTsKKyNlbmRpZgogCiAgICAgQVNT
RVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpA
QCAtMTE4LDYgKzEzMSwxNCBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgICAgICByZXR1
cm4gY29uc3RydWN0TnVtYmVyKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKICAgICBpZiAoaXNU
cnVlKCkgfHwgaXNGYWxzZSgpKQogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21J
bW1lZGlhdGVCb29sZWFuKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBKU0NlbGwqIGhlYXBCaWdJbnQg
PSBzdGF0aWNfY2FzdDxKU0NlbGwqPihKU0JpZ0ludDo6Y3JlYXRlRnJvbShnbG9iYWxPYmplY3Qt
PnZtKCksIGJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgICAgIC8vIEZJWE1FOiB0aGVyZSBtdXN0
IGJlIGEgc2ltcGxlciB3YXkgdG8gZmluZCB0b1RoaXMgZm9yIEpTQmlnSW50LCBidXQgSSBjYW4n
dCBldmVuIGZpbmQgd2hlcmUgaXQgaXMgZGVmaW5lZC4KKyAgICAgICAgcmV0dXJuIGhlYXBCaWdJ
bnQtPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoaGVhcEJpZ0ludCwg
Z2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7CisgICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQoaXNV
bmRlZmluZWRPck51bGwoKSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygp
OwogfQpAQCAtMTMwLDcgKzE1MSw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJv
dG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgaWYgKGlzQ2Vs
bCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7Ci0gICAgICAgIGlmIChpc0JpZ0ludCgpKQorICAg
ICAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5iaWdJbnRQcm90b3R5cGUoKTsKICAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsKQEAgLTE0MCw2ICsxNjEs
MTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bnVt
YmVyUHJvdG90eXBlKCk7CiAgICAgaWYgKGlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5ib29sZWFuUHJvdG90eXBlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
IChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3Rv
dHlwZSgpOworI2VuZGlmCiAKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJv
cihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0yODYsNiArMzExLDggQEAgdm9pZCBKU1ZhbHVl
OjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBvdXQucHJpbnQo
IlN5bWJvbDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoU3RydWN0dXJlOjppbmZvKCkpKQogICAg
ICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmU6ICIsIGluQ29udGV4dCgqanNDYXN0PFN0cnVj
dHVyZSo+KGFzQ2VsbCgpKSwgY29udGV4dCkpOworICAgICAgICBlbHNlIGlmIChpc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiQmlnSW50W2hlYXAtYWxsb2NhdGVkXTogYWRk
cj0iLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihKU09iamVjdDo6aW5mbygpKSkgewogICAgICAgICAg
ICAgb3V0LnByaW50KCJPYmplY3Q6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAg
ICAgIG91dC5wcmludCgiIHdpdGggYnV0dGVyZmx5ICIsIFJhd1BvaW50ZXIoYXNPYmplY3QoYXND
ZWxsKCkpLT5idXR0ZXJmbHkoKSkpOwpAQCAtMzA1LDYgKzMzMiwxMCBAQCB2b2lkIEpTVmFsdWU6
OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgb3V0LnByaW50KCJOdWxs
Iik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0LnByaW50KCJVbmRl
ZmluZWQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAoaXNCaWdJbnQzMigpKQor
ICAgICAgICBvdXQucHJpbnRmKCJCaWdJbnRbaW5saW5lXTogJWQiLCBiaWdJbnQzMkFzSW50MzIo
KSk7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpA
QCAtMzQ3LDYgKzM3OCwxMCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBp
ZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBvdXQucHJp
bnRmKCJCaWdJbnRbaW5saW5lXTogJWQiLCBiaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKICAg
ICBlbHNlCiAgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAtMzg0LDE4ICs0MTks
MjUgQEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgYm9vbCByZXR1cm5FbXAKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5udWxsU3RyaW5nKCk7CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVy
biB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7Ci0gICAgaWYgKGlzU3ltYm9sKCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBj
b252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9zKTsKLSAgICAgICAgcmV0dXJuIGVycm9yVmFs
dWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAg
ICBhdXRvIGludGVnZXIgPSBiaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbnRlZ2VyKSA8PSA5KQorICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxs
U3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoaW50ZWdlciArICcwJyk7CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLm51bWVyaWNTdHJpbmdzLmFkZChpbnRlZ2Vy
KSk7CiAgICAgfQotICAgIGlmIChpc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBhc0JpZ0ludCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdXRvIGRpZ2l0ID0gYmlnSW50LT5z
aW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0uc21hbGxT
dHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygqZGlnaXQgKyAnMCcpOwotICAgICAgICBKU1N0
cmluZyogcmV0dXJuU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCBiaWdJbnQtPnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgMTApKTsKKyNlbmRpZgorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkg
eworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNIZWFwQmlnSW50KCk7CisgICAgICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgcmF0aGVyIGhhdmUgdHdvIGNhc2VzIGhlcmU6IG9uZS1jaGFyYWN0
ZXIgc3RyaW5nIHZzIGpzTm9uVHJpdmlhbFN0cmluZyBmb3IgZXZlcnl0aGluZyBlbHNlLgorICAg
ICAgICBKU1N0cmluZyogcmV0dXJuU3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgYmlnSW50
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKS5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlcnJvclZhbHVlKCkpOwog
ICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwogICAgIH0KKyAgICBpZiAoaXNTeW1ib2woKSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNv
bnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOworICAgICAgICByZXR1cm4gZXJyb3JWYWx1
ZSgpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlclN0cmluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNTg2YWYzZmFiMzcu
LmE5MTE0MzBlNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTc2
LDYgKzE3NiwxMCBAQCBwdWJsaWM6CiAgICAgZW51bSBKU1RydWVUYWcgeyBKU1RydWUgfTsKICAg
ICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNlIH07CiAgICAgZW51bSBKU0NlbGxUYWcgeyBKU0Nl
bGxUeXBlIH07CisgICAgZW51bSBKU0JpZ0ludFRhZyB7IEpTQmlnSW50MzJPckhlYXAgfTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgZW51bSBKU0JpZ0ludDMyVGFnIHsgSlNCaWdJbnQzMiB9Owor
I2VuZGlmCiAgICAgZW51bSBFbmNvZGVBc0RvdWJsZVRhZyB7IEVuY29kZUFzRG91YmxlIH07CiAK
ICAgICBKU1ZhbHVlKCk7CkBAIC0xODUsNiArMTg5LDExIEBAIHB1YmxpYzoKICAgICBKU1ZhbHVl
KEpTRmFsc2VUYWcpOwogICAgIEpTVmFsdWUoSlNDZWxsKiBwdHIpOwogICAgIEpTVmFsdWUoY29u
c3QgSlNDZWxsKiBwdHIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKU1ZhbHVlKEpTQmlnSW50
MzJUYWcsIGludDMyX3QpOworI2VuZGlmCisgICAgLy8gUmV0dXJucyBlaXRoZXIgYSBCaWdJbnQz
MiBvciBhIEhlYXBCaWdJbnQuCisgICAgSlNWYWx1ZShKU0JpZ0ludFRhZywgVk0mLCBpbnQ2NF90
KTsKIAogICAgIC8vIE51bWJlcnMKICAgICBKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3Vi
bGUpOwpAQCAtMjE4LDYgKzIyNyw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgYXNEb3VibGUoKSBj
b25zdDsKICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigp
IGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpbnQzMl90IGJpZ0ludDMyQXNJbnQzMigp
IGNvbnN0OyAvLyBtdXN0IG9ubHkgYmUgY2FsbGVkIG9uIGEgQmlnSW50MzIKKyNlbmRpZgogICAg
IAogICAgIGludDMyX3QgYXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdDsgLy8gQm9vbGVhbiBi
ZWNvbWVzIGFuIGludCwgYnV0IG90aGVyd2lzZSBsaWtlIGFzSW50MzIoKS4KIApAQCAtMjM3LDYg
KzI0OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1N0cmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlz
SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQzMigpIGNvbnN0OwogICAgIGJv
b2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpAQCAtMjQ1LDcgKzI1OSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGluaGVyaXRzKFZNJiwgY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVGFyZ2V0PiBib29sIGluaGVyaXRzKFZNJikgY29uc3Q7CiAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Pck51bGwoVk0mKSBjb25zdDsKLSAgICAgICAgCisKICAg
ICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KICAgICBib29sIGdldFN0cmluZyhKU0dsb2JhbE9i
amVjdCosIFdURjo6U3RyaW5nJikgY29uc3Q7CiAgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwpAQCAt
MjY0LDkgKzI3OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpcyBl
eHBlY3RlZCB0byBiZSBzaWRlIGVmZmVjdCBmcmVlIGlmIGFuIGV4Y2VwdGlvbiBoYXMKICAgICAv
LyBiZWVuIHNldCBpbiB0aGUgQ2FsbEZyYW1lIGFscmVhZHkuCiAgICAgZG91YmxlIHRvTnVtYmVy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRv
dWJsZT4gdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgVmFyaWFudDxKU0Jp
Z0ludCosIGludDMyX3Q+IHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0Owor
CisgICAgSlNWYWx1ZSB0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU1Zh
bHVlIHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTQmlnSW50
KiBhc0hlYXBCaWdJbnQoKSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaWYg
aXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCiAgICAgT3B0aW9uYWw8ZG91Ymxl
PiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKQEAgLTMxNSw4ICszMzAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2VJbmxpbmUo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9v
bCBzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwot
ICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNl
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CisgICAgc3Rh
dGljIGJvb2wgc3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogdjEs
IEpTQ2VsbCogdjIpOwogICAgIHN0YXRpYyBUcmlTdGF0ZSBwdXJlU3RyaWN0RXF1YWwoSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2Mik7CiAKICAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwpAQCAtNDE0LDEx
ICs0MjgsMjAgQEAgcHVibGljOgogICAgICAqIFRoZXNlIHZhbHVlcyBoYXZlIHRoZSBmb2xsb3dp
bmcgcHJvcGVydGllczoKICAgICAgKiAtIEJpdCAxIChPdGhlclRhZykgaXMgc2V0IGZvciBhbGwg
Zm91ciB2YWx1ZXMsIGFsbG93aW5nIHJlYWwgcG9pbnRlcnMgdG8gYmUKICAgICAgKiAgIHF1aWNr
bHkgZGlzdGluZ3Vpc2hlZCBmcm9tIGFsbCBpbW1lZGlhdGUgdmFsdWVzLCBpbmNsdWRpbmcgdGhl
c2UgaW52YWxpZCBwb2ludGVycy4KLSAgICAgKiAtIFdpdGggYml0IDMgaXMgbWFza2VkIG91dCAo
VW5kZWZpbmVkVGFnKSBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCisgICAgICogLSBXaXRo
IGJpdCAzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZyksIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFy
ZSB0aGUKICAgICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8g
YmUgcXVpY2tseSBkZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2ls
bCBoYXZlIHRoZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJy
YXkKICAgICAgKiBob2xlcywgYW5kIGFzIGEgQysrICdubyB2YWx1ZScgcmVzdWx0IChlLmcuIEpT
VmFsdWUoKSBoYXMgYW4gaW50ZXJuYWwgdmFsdWUgb2YgMCkuCisgICAgICoKKyAgICAgKiBXaGVu
IFVTRShCSUdJTlQzMiksIHdlIGhhdmUgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uIGZvciBCaWdJ
bnRzIHRoYXQgYXJlIHNtYWxsICgzMi1iaXQgYXQgbW9zdCk6CisgICAgICogICAgICAwMDAwOlhY
WFg6WFhYWDowMDEyCisgICAgICogVGhpcyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdp
dGggYSBEb3VibGUgb3IgSW50ZWdlciB0aGFua3MgdG8gdGhlIHRvcCBiaXRzCisgICAgICogLSBJ
dCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gYSBDZWxsLCB0aGFua3MgdG8g
Yml0IDEgd2hpY2ggaXMgc2V0IHRvIHRydWUKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNl
ZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQgdG8g
ZmFsc2UKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIHRydWUvZmFsc2UgYmVj
YXVzZSBiaXQgMiBpcyBzZXQgdG8gZmFsc2UKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNl
ZCBmb3IgbnVsbC91bmRlZmluZWQgYmVjYXVzZSBiaXQgNCBpcyBzZXQgdG8gdHJ1ZQogICAgICAq
LwogCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyAyXjQ5LCB1c2VkIHRvIGVuY29kZSBkb3VibGVzIHN1
Y2ggdGhhdCB0aGUgZW5jb2RlZCB2YWx1ZSB3aWxsIGJlZ2luCkBAIC00MjgsMTEgKzQ1MSwxOSBA
QCBwdWJsaWM6CiAgICAgLy8gSWYgYWxsIGJpdHMgaW4gdGhlIG1hc2sgYXJlIHNldCwgdGhpcyBp
bmRpY2F0ZXMgYW4gaW50ZWdlciBudW1iZXIsCiAgICAgLy8gaWYgYW55IGJ1dCBub3QgYWxsIGFy
ZSBzZXQgdGhpcyB2YWx1ZSBpcyBhIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyLgogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50NjRfdCBOdW1iZXJUYWcgPSAweGZmZmUwMDAwMDAwMDAwMDBsbDsKKyAg
ICAvLyBUaGUgZm9sbG93aW5nIGNvbnN0YW50IGlzIHVzZWQgZm9yIGEgdHJpY2sgaW4gdGhlIGlt
cGxlbWVudGF0aW9uIG9mIHN0cmljdEVxLCB0byBkZXRlY3QgaWYgZWl0aGVyIG9mIHRoZSBhcmd1
bWVudHMgaXMgYSBkb3VibGUKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgTG93ZXN0T2ZI
aWdoQml0cyA9IDFVTEwgPDwgNDk7CisgICAgc3RhdGljX2Fzc2VydChMb3dlc3RPZkhpZ2hCaXRz
ICYgTnVtYmVyVGFnKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCEoKExvd2VzdE9mSGlnaEJpdHM+PjEp
ICYgTnVtYmVyVGFnKSk7CiAKICAgICAvLyBBbGwgbm9uLW51bWVyaWMgKGJvb2wsIG51bGwsIHVu
ZGVmaW5lZCkgaW1tZWRpYXRlcyBoYXZlIGJpdCAyIHNldC4KICAgICBzdGF0aWMgY29uc3RleHBy
IGludDMyX3QgT3RoZXJUYWcgICAgICAgPSAweDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQz
Ml90IEJvb2xUYWcgICAgICAgID0gMHg0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBV
bmRlZmluZWRUYWcgICA9IDB4ODsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQzMl90IEJpZ0ludDMyVGFnICAgID0gMHgxMjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludDY0X3QgQmlnSW50MzJNYXNrICAgPSBOdW1iZXJUYWcgfCBCaWdJbnQzMlRhZzsKKyNlbmRp
ZgogICAgIC8vIENvbWJpbmVkIGludGVnZXIgdmFsdWUgZm9yIG5vbi1udW1lcmljIGltbWVkaWF0
ZXMuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlRmFsc2UgICAgID0gT3RoZXJU
YWcgfCBCb29sVGFnIHwgZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVl
VHJ1ZSAgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwgdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDViM2ZmOGFjNDRl
Li5hYTBlMzdmYWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTUHJveHku
aCIKICNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgi
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjQwLDYgKzIzOSwxMyBAQCBpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cikKICAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVp
bnRlcnByZXRfY2FzdDxpbnQzMl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOwogfQogCitp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludFRhZywgVk0mIHZtLCBpbnQ2NF90IHZhbCkK
K3sKKyAgICB1LmFzQml0cy50YWcgPSBDZWxsVGFnOworICAgIGF1dG8gcHRyID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHZhbCk7CisgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5lIEpT
VmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxl
dGVkVmFsdWVUYWcpOwpAQCAtMzI5LDYgKzMzNSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCog
SlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0Nl
bGwqPih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNW
YWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9h
ZCk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRh
ZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQsNiAr
NDc2LDE5IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5hc0lu
dDY0ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRU
YWcsIFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KHZhbHVlIDw9IElOVF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikgeworICAgICAgICB1LmFzSW50
NjQgPSAodmFsdWUgPDwgMTYpIHwgQmlnSW50MzJUYWc7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKworICAgIEpTQ2VsbCogcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZh
bHVlKTsKKyAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsK
K30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewog
ICAgIC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAn
dW5kZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KQEAgLTUyMiw4ICs1NDcsMjIgQEAg
QUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJu
IHUucHRyOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJ
bnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEpTQmlnSW50Kj4odS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKIAorI2lmIFVTRShCSUdJTlQzMikKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50
MzJUYWcsIGludDMyX3QgdmFsdWUpCit7CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlz
IGZvciBuZWdhdGl2ZSBudW1iZXJzLCBvdGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4K
KyAgICB1LmFzSW50NjQgPSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+
TnVtYmVyVGFnKSB8IEJpZ0ludDMyVGFnOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwog
aW5saW5lIGludDY0X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBp
ZiAobnVtYmVyICE9IG51bWJlcikKQEAgLTYxMCw4ICs2NDksMzAgQEAgaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOwor
ICAgIHJldHVybiBpc0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgp
ICYmIGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5h
c0ludDY0ICYgQmlnSW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBK
U1ZhbHVlOjpiaWdJbnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMy
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOwog
fQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1i
b2woKSBjb25zdAogewpAQCAtNjIwLDcgKzY4MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6Omlz
U3ltYm9sKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBjb25z
dAogewotICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXND
ZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuICFp
c0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8
fCBhc0NlbGwoKS0+aXNIZWFwQmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6Omlz
R2V0dGVyU2V0dGVyKCkgY29uc3QKQEAgLTc2MCw4ICs4MjEsMTcgQEAgaW5saW5lIGJvb2wgSlNW
YWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsZSYgbnUKICAgICAgICAgdmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotICAgIEFTU0VSVChpc1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQTmFOOworICAg
IGlmIChpc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG51bWJlciA9IFBOYU47CisgICAgICAgIHZh
bHVlID0gKnRoaXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVChp
c0JpZ0ludDMyKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBp
cyBub3QgYWxsb3dlZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlz
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4NDUsNDUgQEAgQUxXQVlTX0lOTElO
RSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1B
TFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAg
aWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlmIChpc0ludDMy
KCkgfHwgaXNEb3VibGUoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAK
ICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9Q
cmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAg
cmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9
IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxXQVlT
X0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRPcklu
dDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIo
KTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhp
czsKICAgICBpZiAoaXNEb3VibGUoKSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlzQmln
SW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHJldHVybiBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CiAKICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmln
SW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmIChwcmltVmFsdWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAg
ICAgICByZXR1cm4gcHJpbVZhbHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS50
b0ludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7
Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU1Zh
bHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTAz
MiwzNyArMTEwMywxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2Fz
ZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGRvIHsKLSAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIo
KSkKLSAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0K
LSAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2Mi5p
c1N0cmluZygpOwotICAgICAgICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmlu
Zyh2MikpKTsKLQotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewotICAgICAgICAg
ICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2
MlN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5p
c051bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFz
TnVtYmVyKCk7CisgICAgICAgICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3ZSBoYXZlIGEg
bnVtYmVyIGl0IGlzIHYyIG1ha2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNpbXBsZXIuCisg
ICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChz
MSAmJiB2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJpbmcgPSBhc1N0
cmluZyh2MSktPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50
OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYx
ID0gSlNWYWx1ZShuKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAg
IC8vIFRoaXMgZGVhbHMgd2l0aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMsIGFuZCBpcyBh
IHNob3J0Y3V0IGZvciBhIGZldyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBoYXMgdG8gY29t
ZSBoZXJlIGFuZCBub3QgYmVmb3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRoYXQgTmFOID09
IE5hTgorICAgICAgICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYgKHYy
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCkBAIC0xMDgwLDcgKzExMzEsNyBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKUwogCiAgICAgICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBp
ZiAodjIuaXNPYmplY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdp
dGggcHJldmlvdXNseQogICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgICAgICAgICB2MSA9IHAxOwpAQCAtMTEwMiw1NiArMTE1Myw4NCBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKUwogICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAg
ICAgICBpZiAoc3ltMSB8fCBzeW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQot
ICAgICAgICAgICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3
aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisg
ICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMyID0gdjIuaXNT
dHJpbmcoKTsKKyAgICAgICAgaWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIpCisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGds
b2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYy
KTsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRoZSBuZXh0IGNh
c2UsIHNvIGxvc2luZyB0aGUgaW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBudW1iZXIgaXMg
ZmluZQorICAgICAgICB9CiAgICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAgICAgICAgZG91
YmxlIGQxID0gdjEudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICAv
LyBXZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5rcyB0byB0aGUg
c3dhcCBhYm92ZSkKKyAgICAgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAg
ICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICB2MiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3Qs
IHYyU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAgICAgIC8vIFdl
IGZhbGx0aHJvdWdoIHRvIHRoZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBCaWdJbnRzICh3
aGljaCBpcyBvbmx5IG1pc3NpbmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2UsIGhlbmNlIHRo
ZSBjaGVjayBhYm92ZSkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHYxLmlzTnVtYmVyKCkgfHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAgICAgICAgIGRv
dWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvdWJsZSBk
MiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBkMSA9PSBk
MjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4o
KSkgewogICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAg
djEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8g
dGhlIEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAgLy8gV2UganVz
dCBuZWVkIG9uZSBtb3JlIHN3YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25seSB2MiBpcyBh
bGxvd2VkIHRvIGJlIGEgbnVtYmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAgICAgICAgICBz
dGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewot
ICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYx
LmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjIgPSBK
U1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJp
Z0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAK
LSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAg
IHJldHVybiBhc0JpZ0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAgICAgICBpZiAo
djIuaXNCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmln
SW50KHYyKS0+ZXF1YWxzVG9OdW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
aWYgKHYxLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigp
OworICAgICAgICAgICAgaWYgKHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYyLmFzRG91Ymxl
KCk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQorI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0lu
dDMyQXNJbnQzMigpKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAo
djIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCkt
PmVxdWFsc1RvTnVtYmVyKHYyKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB2MSA9PSB2
MjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwogfQogCiAvLyBF
Q01BIDExLjkuMwotQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nh
c2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpCiB7Ci0g
ICAgQVNTRVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5hc0Nl
bGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICBpZiAodjEt
PmlzU3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2
MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAodjEuaXNCaWdJ
bnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhh
c0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBCaWdJbnQoKSAm
JiB2Mi0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHN0
YXRpY19jYXN0PEpTQmlnSW50Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYyKSk7CiAg
ICAgcmV0dXJuIHYxID09IHYyOwogfQogCkBAIC0xMTYzLDEwICsxMjQyLDE3IEBAIGlubGluZSBi
b29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkK
ICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAotICAgIGlm
ICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0Jp
Z0ludDMyKCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQz
Mih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNU
b0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxLmlzQ2Vs
bCgpICYmIHYyLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxGb3JDZWxscyhn
bG9iYWxPYmplY3QsIHYxLmFzQ2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICByZXR1cm4gc3Ry
aWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgcmV0dXJu
IHYxID09IHYyOwogfQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGht
ZXRpYygpIGNvbnN0CkBAIC0xMTg0LDE1ICsxMjcwLDIzIEBAIGlubGluZSBUcmlTdGF0ZSBKU1Zh
bHVlOjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEu
aXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEu
YXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwg
IXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAot
ICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmco
KSkgewotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+
dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0g
YXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8
fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0lu
dDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2
Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFzSGVhcEJpZ0lu
dCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKworICAg
IGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxs
KCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IFN0cmluZ0ltcGwqIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUlt
cGwoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmco
djIpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYy
U3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAg
ICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFz
Q2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0Jp
Z0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAg
IH0KICAgICAKICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMzAw
LDEwIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGlzTm90WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBUcnVlVHJpU3Rh
dGUgOiBGYWxzZVRyaVN0YXRlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQog
ICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQz
MigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAgIHJldHVybiBp
c1RydWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI0ZWQ2NTIzMzc5Li45MGM1YTdmYzEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlm
aWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNl
bGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKQor
ICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNI
ZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTE4LDcgKzEx
OCw3IEBAIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50
aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlz
U3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmluZygp
IHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b20odm0sIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3
IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJl
ZFR5cGUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVk
VHlwZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9QcmltaXRp
dmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJy
ZWRUeXBlKTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0aXZl
TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLCBKUwog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0UHJp
bWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlzU3lt
Ym9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+
Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYg
KGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2Jh
bE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
T2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwg
dmFsdWUpOwogfQpAQCAtMTgwLDcgKzE4MCw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisg
ICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNCaWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
IH0KQEAgLTE5MCw3ICsxOTAsNyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzT2JqZWN0KCkp
OwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNCaWdJ
bnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEFT
U0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4o
dGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCmluZGV4IDEwNjc0OWRlM2NlLi43ZjkyNTA0ZmVmYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiBw
dWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNv
bnN0OwotICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgp
IGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDJkYWY3YmMwZGRiLi5jMjgz
ODM2ODM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaApAQCAtMjA1LDkgKzIwNSw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5saW5lIGJvb2wg
SlNDZWxsOjppc0JpZ0ludCgpIGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzSGVhcEJpZ0lu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworICAgIHJldHVy
biBtX3R5cGUgPT0gSGVhcEJpZ0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNT
eW1ib2woKSBjb25zdApAQCAtMzQxLDcgKzM0MSw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9C
b29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKGlz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRo
aXMpLT50b0Jvb2xlYW4oKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmln
SW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMp
LT50b0Jvb2xlYW4oKTsKICAgICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmplY3Qp
KS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAtMzUwLDcgKzM1
MCw3IEBAIGlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewog
ICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRl
OwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpID8g
VHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAg
ICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCmluZGV4IDIyYzAxMjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgaW5saW5lIGJv
b2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8v
IGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwo
KS0+dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChp
c0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlm
CiAgICAgcmV0dXJuIGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwg
Y29udmVydCB0byBmYWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKaW5kZXggYTEzMzdjNmE0ZWYuLjBkYzViNzRjMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxsVHlw
ZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENBU0Uo
QmlnSW50VHlwZSkKKyAgICBDQVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoU3RydWN0dXJl
UmFyZURhdGFUeXBlKQogICAgIENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSkKICAgICBDQVNF
KEFQSVZhbHVlV3JhcHBlclR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CmluZGV4IDBmODY4YTZhZTA3Li5kMTQ2NDMzZDQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmgKQEAgLTI2LDggKzI2LDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsK
ICAgICAvLyBUaGUgQ2VsbFR5cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRo
YXQgaXMgYSBKU0NlbGwuCiAgICAgQ2VsbFR5cGUsCiAgICAgU3RyaW5nVHlwZSwKLSAgICBCaWdJ
bnRUeXBlLAotICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEJpZ0ludFR5cGUsCisg
ICAgSGVhcEJpZ0ludFR5cGUsCisgICAgTGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gSGVh
cEJpZ0ludFR5cGUsCiAgICAgU3ltYm9sVHlwZSwKIAogICAgIFN0cnVjdHVyZVJhcmVEYXRhVHlw
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAzY2Q3
MTNkODRmMy4uODhlMzBmMjA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVJbmZvLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXRP
bkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsg
cmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVk
IGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIg
JiAoZmxhZyA+PiA4KTsgfQogCi0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNUeXBlIG1fdHlw
ZTsKICAgICB1aW50OF90IG1fZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmNwcAppbmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUuY3BwCkBAIC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgor
I2luY2x1ZGUgIlNjcmliYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJhZjA3Li41M2Vk
MTI0ZTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MzYsMTEgKzM2LDYgQEAgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxT
bG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6
c3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQotewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5l
KGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRT
bG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQogewogICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1
bHRWYWx1ZSgpCkBAIC03MywyMSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRT
bG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAx
U3RyaW5nLCBhc1N0cmluZyhwMikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0g
cDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdU
Rjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVy
aWMpKTsKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBh
dXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1Zh
bHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3Jk
T3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAg
ICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisjZW5kaWYKKyAgICB9OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRp
Y0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6YWRkLCBkb3VibGVPcCwg
YmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRp
dGlvbi4iX3MpKTsKIH0KIAogSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKQEAgLTEyOCw3ICsxMjUsNyBA
QCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlw
ZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5
cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCisgICAgaWYgKHR5cGUgPT0g
U3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBIZWFwQmlnSW50VHlw
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsK
ICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKGdsb2JhbE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmgKaW5kZXggNGJiZTIzYzA3MjUuLjY5MzhlMjY2YTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTIzOSw2ICsyMzgsMzUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5n
RnJvbVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmUKICAgICBy
ZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2MSwgSlNWYWx1ZSBwcmltVmFsdWUpCit7
CisgICAgQVNTRVJUKHByaW1WYWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1W
YWx1ZS5pc0JpZ0ludCgpKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAocHJpbVZh
bHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50
OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVl
KGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICAgICAgaWYgKCFiaWdJbnRW
YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5k
ZWZpbmVkOworCisgICAgICAgIGlmIChiaWdJbnRWYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZSh2MSwgYmlnSW50VmFsdWUuYXNIZWFwQmln
SW50KCkpOworCisgICAgICAgIEFTU0VSVChiaWdJbnRWYWx1ZS5pc0JpZ0ludDMyKCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgLy8gRklYTUU6IHVzZSBzb21ldGhpbmcgbGVzcyBoYWNr
eSwgZS5nLiBzb21lIGtpbmQgb2YgSlNCaWdJbnQ6OmNvbXBhcmVUb0ludDMyCisgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBzdGF0aWNfY2FzdDxkb3VibGU+KGJp
Z0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBkb3Vi
bGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5k
ZWZpbmVkKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVy
VmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFy
aXNvbk1vZGUgY29tcGFyaXNvbk1vZGUpCiB7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpT
QmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCkBAIC0yNTUsNTEgKzI4Myw1MCBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBp
ZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYy
KSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSkgewotICAg
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYyOwotICAgICAgICBpZiAocHJpbVZhbHVlLmlzU3Ry
aW5nKCkpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50Ojpz
dHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGds
b2JhbE9iamVjdCkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwotICAgICAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmln
SW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYmlnSW50VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAg
ICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0lu
dCh2MSksIGFzQmlnSW50KHByaW1WYWx1ZSkpLCBjb21wYXJpc29uTW9kZSk7CiAKLSAgICAgICAg
ZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
IGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2
MSksIG51bWJlclZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAo
Y29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAg
ICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQz
MigpOworICAgICAgICBBU1NFUlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlz
b25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0lu
dDMyKCkgPD0gdjIuYmlnSW50MzJBc0ludDMyKCk7CiAgICAgfQotICAgIAotICAgIEpTVmFsdWUg
cHJpbVZhbHVlID0gdjE7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
IEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxP
YmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworI2VuZGlm
CisKKyAgICBKU0JpZ0ludCogdjFIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICBKU0JpZ0ludCog
djJIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTogaGF2ZSBzb21lIGZhc3QtaXNo
IHBhdGggZm9yIGEgY29tcGFyaXNvbiBiZXR3ZWVuIGEgc21hbGwgYW5kIGEgbGFyZ2UgYmlnLWlu
dAorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEu
YXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHYxLmlzQmln
SW50MzIoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYyLmlzSGVhcEJpZ0lu
dCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBC
aWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOwor
I2VuZGlmCisKKyAgICBpZiAodjFIZWFwQmlnSW50ICYmIHYySGVhcEJpZ0ludCkKKyAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUodjFIZWFwQmlnSW50
LCB2MkhlYXBCaWdJbnQpLCBjb21wYXJpc29uTW9kZSk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50
KSB7CisgICAgICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVy
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjFIZWFwQmlnSW50LCB2Mik7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29t
cGFyaXNvbk1vZGUpOworICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChjb21wYXJp
c29uUmVzdWx0LCBjb21wYXJpc29uTW9kZSk7CiAgICAgfQotICAgIAotICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJ
bnQ6OmNvbXBhcmUoYXNCaWdJbnQocHJpbVZhbHVlKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNv
bk1vZGUpOwotICAgIAotICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJl
cihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
IAorICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0
aXZlKGdsb2JhbE9iamVjdCwgdjJIZWFwQmlnSW50LCB2MSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVjYXVz
ZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFy
aXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBudW1i
ZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmln
SW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVybiBjb21wYXJp
c29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8fCBj
b21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKKwor
CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCB0b1ByaW1pdGl2ZU51bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2LCBKU1ZhbHVlJiBwLCBkb3VibGUmIG4pCkBAIC0z
NTcsNyArMzg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdh
c05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7
CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBw
MSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3LDcg
KzQzNCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90
U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsKICAg
ICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAxLCBw
MiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAtNDUy
LDcxICs0NzksMzQ4IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpzQWRk
Tm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94ZWQsIGFuZCBy
ZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFw
QmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0lu
dDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRP
cGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJ
bnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1
dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVl
IGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc051
bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1i
ZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFzTnVtYmVy
KCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQz
MigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
ICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMy
QXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkp
OworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0
SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAgICBpZiAocmln
aHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhl
YXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJB
c0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmln
SW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVhcEJp
Z0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAg
ICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChy
aWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJp
Z0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CisjZWxzZQorICAg
ICh2b2lkKSBiaWdJbnQzMk9wOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSAm
JiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmln
SW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlmCisKKyAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKK30K
IAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdU
Rjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNT
dWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikK
K3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+
IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRv
IGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVl
IHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3Zl
cmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdodDsKKyAgICAgICAg
aWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
cmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAg
ICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnN1YiwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsKIH0KIAog
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAq
IHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwg
aW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBD
aGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICBy
ZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lk
KSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5h
cnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRpcGx5LCBkb3VibGVPcCwg
YmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0
aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEaXYoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBh
dXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7
CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMy
T3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmICghcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBsZWZ0
IC8gcmlnaHQpOworI2Vsc2UKKyAgICAgICAgKHZvaWQpIGxlZnQ7CisgICAgICAgICh2b2lkKSBy
aWdodDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAg
IH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYy
LCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBs
ZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0
LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50
MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBj
bGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0
dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJl
bWFpbmRlciwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdo
dCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmln
aHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3Qp
IC0+IEpTVmFsdWUgeworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBi
b3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92
ZXJmbG93LgorICAgICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVh
cCBhbGxvY2F0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2
MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30K
KworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5k
TnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQor
ICAgICAgICByZXR1cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOwor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkp
IHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJh
bmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUg
Zm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGlu
dG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAg
ICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQz
Ml90PihuZXdWYWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1l
cmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmln
SW50OjppbmMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOwor
fQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgVmFyaWFudDxKU0JpZ0lu
dCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisK
KyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVt
YmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgLSAxKTsKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3Qg
bmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFz
SW50MzIoKSkgLSAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBs
aW5lcyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9u
CisgICAgICAgIGlmIChuZXdWYWx1ZSA8IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAg
ICB9CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVj
dCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2
LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlm
IChvcGVyYW5kTnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcih+b3Bl
cmFuZE51bWVyaWMuYXNJbnQzMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3Bl
cmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlm
CisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBv
cGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgc2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MiwgYm9vbCBpc0xlZnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gbGVm
dE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmlj
LmlzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFz
SW50MzIoKTsKKyAgICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50
MzIoKSAmIDMxOworICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIg
PDwgcmlnaHRJbnQzMikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1
cm4ganNOdW1iZXIocmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7
CisgICAgICAgIGludDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFz
SW50MzIoKTsKKyAgICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xl
ZnQgPSAhaXNMZWZ0OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAg
ICAgICB9CiAKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3Mp
OwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0
IGhhY2t5LCBidXQgcmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2
aW9yIHRvIGRvIGEgc2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBl
cXVhbCB0byB0aGUgYml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICgh
aXNMZWZ0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
bGVmdEludDMyID4+IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4g
dGhlIGNhc2Ugb2YgYSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhp
cyBieSBhbGxvY2F0aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQg
YmUgcG9zc2libGUgdG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVm
dCBzaGlmdCBhbmQgZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAg
SlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJ
bnQzMik7CisgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgcmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0
LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAg
ICBpZiAoIShsZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgp
KSkgeworICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9w
ZXJhdGlvbi4iOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNC
aWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxlZnRO
dW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBy
aWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7
CisjZWxzZQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmFzSGVh
cEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMu
YXNIZWFwQmlnSW50KCk7CisjZW5kaWYKKworICAgIGlmIChpc0xlZnQpCisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxl
ZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBC
aWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNM
U2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKK3sKKyAgICBib29sIGlzTGVmdCA9IHRydWU7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9i
amVjdCwgdjEsIHYyLCBpc0xlZnQpOworfQogCi0gICAgZG91YmxlIGxlZnRWYWx1ZSA9ICBXVEY6
OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgcmlnaHRWYWx1ZSA9ICBXVEY6
OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGxlZnRWYWx1
ZSAqIHJpZ2h0VmFsdWUpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYm9v
bCBpc0xlZnQgPSBmYWxzZTsKKyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IGlzTGVmdCk7CiB9CiAKLWlubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3RlbXBsYXRl
PHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYg
YmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNz
YWdlKQogewotICAgIHJldHVybiBBU1NFUlRfRU5BQkxFRCB8fCBPcHRpb25zOjpzY3JpYmJsZUZy
ZWVDZWxscygpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnROdW1lcmljID0g
djEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkp
CisgICAgICAgIHJldHVybiBqc051bWJlcihpbnQzMk9wKGxlZnROdW1lcmljLmFzSW50MzIoKSwg
cmlnaHROdW1lcmljLmFzSW50MzIoKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChs
ZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgaW50MzJPcChsZWZ0TnVt
ZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSk7
CisgICAgLy8gRklYTUU6IGFkZCBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIC8gSGVhcEJpZ0ludCwg
YW5kIGZvciBIZWFwQmlnSW50IC8gQmlnSW50MzIKKyAgICAvLyBJbiBtYW55IGNhc2VzIHRoZXNl
IGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgdGhhbiBoZWFwLWFsbG9jYXRpbmcgdGhlIHNt
YWxsIGJpZy1pbnQgYW5kIGdvaW5nIHRocm91Z2ggdGhlIGdlbmVyaWMgcGF0aC4KKyAgICAvLyBC
dXQgaXQgaXMgcXVpdGUgdHJpY2t5LCBub3QgbGVhc3QgYmVjYXVzZSBIZWFwQmlnSW50IHVzZSBh
IHNpZ24gYml0IHdoZXJlYXMgQmlnSW50MzIgdXNlIDItY29tcGxlbWVudCByZXByZXNlbnRhdGlv
bi4KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51
bWVyaWMuaXNCaWdJbnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpT
QmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0g
cmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkp
OwogfQogCi0jZGVmaW5lIFNDUklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFk
YmVlZjApCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBpbnQz
Mk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50
bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJhbmQiIGFu
ZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNW
YWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBK
U0JpZ0ludDo6Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworfQogCi1pbmxpbmUg
Ym9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNCaXR3aXNlT3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSA9PSBKU1Zh
bHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKKyAgICBh
dXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90
IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6
IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUg
Im9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24g
dGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYx
LCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VPciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKLWlu
bGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgewotICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWdu
ZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgotICAgICAg
ICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAgfQorICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewor
ICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3Vy
cmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAieG9y
IiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhl
IEpTVmFsdWUsIGFuZCBqdXN0IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGggMHgxMiBhdCB0aGUg
ZW5kIHRvIHJlc3RvcmUgdGhlIHRhZworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFs
T2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9wLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJf
cyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRl
eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YmRlZjFjY2RhZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAgICByZXR1cm4gQVNT
RVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKK30KKworI2RlZmlu
ZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorCitpbmxp
bmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0Nl
bGwqPihTQ1JJQkJMRV9XT1JEKSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJh
c2UsIHNpemVfdCBzaXplKQoreworICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKTsgaS0tOykgeworICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQg
dmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgorICAgICAgICBz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJp
dHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQorfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXgg
M2RjMTdiNzMzNTkuLjQwMmRhYTcxNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0zMjEsNyArMzIxLDcgQEAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamUKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBT
dHJpbmdUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUo
KTsKICAgICAKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRU
eXBlKQorICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRU
eXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKIAog
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCBhYzVhMWQxMmNmYS4uZjJjNzllYjliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAt
MDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBT
dXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJ
bnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFnLgorCisgICAgICAgICogd3RmL1BsYXRm
b3JtVXNlLmg6CisKIDIwMjAtMDMtMDIgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+
CiAKICAgICAgICAgRml4IEpTQyAzMmJpdCBhbGlnbm1lbnQgaW5jcmVhc2UgZ2NjIHdhcm5pbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDFhZDYxNTA3NmM5Li4xNmM5YmQxMjViMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5LDEwIEBACiAjZW5kaWYKICNlbmRpZiAvKiAhZGVmaW5l
ZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxVRTMyXzY0KSAqLwogCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgVVNFX0JJR0lOVDMyIDEKKyNlbmRpZgorCiAvKiBGSVhN
RTogVGhpcyBuYW1lIHNob3VsZCBiZSBtb3JlIHNwZWNpZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVz
ZSB3aXRoIENhbGxGcmFtZSogKi8KIC8qIFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0
byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BV
KEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392218</attachid>
            <date>2020-03-02 17:03:14 -0800</date>
            <delta_ts>2020-03-02 18:30:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>398530</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CmluZGV4IGFmMjI4M2Y4ZWU0Li43ZjVjYjEwNGUzMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCkBAIC04Myw3ICs4Myw4
IEBAIGZ1bmN0aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAiLCBSaWdodCA9ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRDYXNlc1tyaWdo
dENhc2VJbmRleF0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmVzdWx0ID0gIiArCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1dDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIg
KGNhc2U6ICIgKyBsZWZ0Q2FzZUluZGV4ICsgIiwgIiArIHJpZ2h0Q2FzZUluZGV4ICsgIikiOwog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGxldCBzdHJpY3ROb3RFcXVhbE91
dHB1dCA9IG9wYXF1ZVN0cmljdE5vdEVxdWFsQWxsVHlwZXMobGVmdENhc2VzW2xlZnRDYXNlSW5k
ZXhdLCByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSk7CkBAIC05Myw3ICs5NCw4IEBAIGZ1bmN0
aW9uIHRlc3RBbGxUeXBlc0NhbGwoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSaWdo
dCA9ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRDYXNlc1tyaWdodENhc2VJbmRl
eF0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmVzdWx0ID0gIiArCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91dHB1dDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmljdEVxdWFsT3V0cHV0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgKGNhc2U6ICIg
KyBsZWZ0Q2FzZUluZGV4ICsgIiwgIiArIHJpZ2h0Q2FzZUluZGV4ICsgIikiOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9mdGwt
c3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwppbmRleCAwNDNhNzYwN2E0Zi4uOGU5NmNmNDQyODkg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5Lmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCkBAIC0z
MCw2ICszMCw2IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKICAgICB2YXIg
cmVzdWx0ID0gZm9vKGFycmF5LCBhcnJheTJbaW5kZXhdKTsKICAgICB2YXIgZXhwZWN0ZWQgPSBp
bmRleCA+PSBhcnJheS5sZW5ndGggPyBudWxsIDogaW5kZXgKICAgICBpZiAocmVzdWx0ICE9PSBl
eHBlY3RlZCkKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQgKyAiIGJ1dCBleHBl
Y3RlZCAiICsgZXhwZWN0ZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21pc3Np
bmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
bWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKaW5kZXggOTY1YTdk
NzNiNzEuLmRkODVhODM4N2ZiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4
Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9t
aXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwpAQCAtMSw2ICsxLDgg
QEAKIGNvbnN0IHMxID0gKC0xKS50b0xvY2FsZVN0cmluZygpLnBhZEVuZCgyKiozMS0xLCAnYWEn
KTsKK2NvbnN0IHMyID0gKC0xKS50b0xvY2FsZVN0cmluZygpLnBhZEVuZCgyKiozMS0xLCAnYWEn
KTsKIHRyeSB7Ci0gICAgczEgPT0gczE7CisgICAgLy8gRm9yY2UgZXZhbHVhdGlvbiBvZiBSb3Bl
CisgICAgczEgPT0gczI7CiB9IGNhdGNoIChlKSB7CiAgICAgZXhjZXB0aW9uID0gZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2NGRhMGI2MTU4Li5iMTA3N2RjYWZmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzg3IEBACisyMDIwLTAzLTAyICBSb2JpbiBN
b3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxp
bmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMy
IikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYXR0ZW1wdHMgdG8gb3B0aW1pemUgdGhlIHBlcmZvcm1hbmNlIG9mIEJpZ0ludHMsIHdo
ZW4gdGhleSBhcmUgc21hbGwgKDMyIGJpdCBvciBsZXNzKS4KKyAgICAgICAgSXQgd29ya3MgYnkg
aW5saW5pbmcgdGhlbSBpbnRvIEpTVmFsdWUgb24gNjQtYml0IHBsYXRmb3JtcywgYXZvaWRpbmcg
dGhlIGFsbG9jYXRpb24gb2YgYSBKU0JpZ0ludC4KKyAgICAgICAgVGhlIGJpdCBwYXR0ZXJuIHdl
IHVzZSBpcyAwMDAwOlhYWFg6WFhYWDowMDEyCisgICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24g
d29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAgICAgLSBJdCBjYW5u
b3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9w
IGJpdHMKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8g
YSBDZWxsLCB0aGFua3MgdG8gYml0IDEgd2hpY2ggaXMgc2V0IHRvIHRydWUKKyAgICAgICAgLSBJ
dCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8gYml0
IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2Vk
IHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCBmb3IgbnVsbC91bmRlZmluZWQgYmVjYXVzZSBiaXQgNCBp
cyBzZXQgdG8gdHJ1ZQorCisgICAgICAgIFRoaXMgZW50aXJlIGNoYW5nZSBpcyBnYXRlZCBieSBV
U0UoQklHSU5UMzIpLCB0byBtYWtlIGl0IGVhc2llciB0byBkaXNhYmxlIGlmIGl0IHR1cm5zIG91
dCB0byBoYXZlIGJ1Z3MuCisgICAgICAgIEl0IHNob3VsZCBhbHNvIG1ha2UgaXQgbXVjaCBlYXNp
ZXIgdG8gdmVyaWZ5IGlmIGEgZ2l2ZW4gYnVnIGNvbWVzIGZyb20gaXQgb3IgZnJvbSBzb21ldGhp
bmcgZWxzZS4KKworICAgICAgICBOb3RlIHRoYXQgaW4gdGhpcyBwYXRjaCB3ZSBjcmVhdGUgc3Vj
aCBzbWFsbCBCaWdJbnRzIHdoZW4gcGFyc2luZyBCaWdJbnQgY29uc3RhbnRzLCBhbmQgbW9zdCBv
cGVyYXRpb25zIChlLmcuIEFkZCBvciBCaXRPcikgcHJvZHVjZSBhIEJpZ0ludDMyIGlmIGJvdGgg
b2YgdGhlaXIgb3BlcmFuZHMgYXJlIEJpZ0ludDMyLAorICAgICAgICBidXQgd2UgZG9uJ3QgcHJv
ZHVjZSBhIEJpZ0ludDMyIGZyb20gZm9yIGV4YW1wbGUgdGhlIHN1YnN0cmFjdGlvbi9kaXZpc2lv
biBvZiB0d28gbGFyZ2UgaGVhcC1hbGxvY2F0ZWQgSlNCaWdJbnRzLCBldmVuIGlmIHRoZSByZXN1
bHQgZml0cyBpbiAzMi1iaXRzLgorICAgICAgICBBcyBhIHJlc3VsdCwgc21hbGwgQmlnSW50cyBj
YW4gbm93IGVpdGhlciBiZSBoZWFwLWFsbG9jYXRlZCBvciBpbmxpbmVkIGluIHRoZSBKU1ZhbHVl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgYSBzaWduaWZpY2FudCByZWZhY3RvciBv
ZiB2YXJpb3VzIHNsb3cgcGF0aHMsIHdoaWNoIGFyZSBub3cgZ3JvdXBlZCB0b2dldGhlciBpbiBP
cGVyYXRpb25zLmgKKyAgICAgICAgQmVjYXVzZSB0aGlzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiBP
cGVyYXRpb25zLmggc2lnbmlmaWNhbnRseSwgSSBzcGxpdCB0aGUgcGFydHMgb2YgT3BlcmF0aW9u
cy5oIHdoaWNoIGFyZSBvbmx5IHVzZWQgYnkgdGhlIEdDIGludG8gU2NyaWJibGUuaCwgdG8gYXZv
aWQgYmxvYXRpbmcgY29tcGlsZSB0aW1lcy4KKworICAgICAgICBJbiB0aGUgREZHIGFuZCBGVEwg
d2Ugbm93IGhhdmUgMyBVc2VLaW5kcyBmb3IgQmlnSW50czogSGVhcEJpZ0ludFVzZSwgQmlnSW50
MzJVc2UgYW5kIEFueUJpZ0ludFVzZS4KKyAgICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgd2hl
biB3ZSBub3cgdGhhdCB3ZSBhcmUgcmVjZWl2aW5nIEJpZ0ludHMsIGJ1dCBzcGVjdWxhdGlvbiBp
bmRpY2F0ZXMgYSBtaXggb2YgaGVhcC1hbGxvY2F0ZWQgYW5kIHNtYWxsIChpbmxpbmVkKSBiaWct
aW50cy4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5LCBhIG5haXZlIGltcGxlbWVudGF0aW9uIG9m
IHRoaXMgcGF0Y2ggc2lnbmlmaWNhbnRseSByZWdyZXNzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIFN0
cmljdEVxIChhbmQgaXRzIHZhcmlhbnRzKSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHRydWUgdGhhdCBh
IGNlbGwgYW5kIGEgbm9uLWNlbGwgY2Fubm90IGJlIGVxdWFsLgorICAgICAgICBCZWZvcmUgdGhp
cyBwYXRjaCwgdGhlIGNvZGUgd2FzIGp1bXBpbmcgdG8gYSBzbG93IHBhdGggaWYgZWl0aGVyOgor
ICAgICAgICAtIGF0IGxlYXN0IG9uZSBvcGVyYW5kIGlzIGEgZG91YmxlCisgICAgICAgIC0gb3Ig
Ym90aCBvcGVyYW5kcyBhcmUgY2VsbHMKKyAgICAgICAgTm93LCBpdCBhbHNvIG5lZWRzIHRvIGp1
bXAgdG8gdGhlIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLgorICAgICAgICBU
byByZWNvdmVyIHRoaXMgcGVyZm9ybWFuY2UgY29zdCwgSSBzaWduaWZpY2FudGx5IHJld3JvdGUg
dGhpcyBjb2RlLCBmcm9tCisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgIH0KKyAgICAg
ICAgICBpZiAoISBsZWZ0IGlzIEludDMyKSB7CisgICAgICAgICAgICBpZiAobGVmdCBpcyBOdW1i
ZXIpCisgICAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAg
aWYgKCEgcmlnaHQgaXMgSW50MzIpIHsKKyAgICAgICAgICAgIGlmIChyaWdodCBpcyBOdW1iZXIp
CisgICAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0
dXJuIGxlZnQgPT0gcmlnaHQKKyAgICAgICAgVG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICBp
ZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aAorICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAg
ICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IEkgYmVsaWV2ZSB0aGlzIHRvIGJlIGZhc3RlciB0aGFuIGp1c3QgcmVwbGFjaW5nIChsZWZ0IGlz
IENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgYnkgYW4gfHwsIGJlY2F1c2UgSSBmb3VuZCBhIGJpdC10
cmljayB0byBjaGVjayAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSB3aGljaCBz
aG91bGQgaGVscCByZWR1Y2UgdGhlIHByZXNzdXJlIG9uIHRoZSBicmFuY2ggcHJlZGljdG9yLgor
ICAgICAgICBFYXJseSBKZXRTdHJlYW0yIHRlc3RzIGFwcGVhciB0byBjb25maXJtIHRoYXQgdGhp
cyBwYXRjaCBpcyByb3VnaGx5IG5ldXRyYWwgd2hpbGUgaXQgd2FzIGEgMC41JSByZWdyZXNzaW9u
IGJlZm9yZSBJIHVzZWQgdGhpcyB0cmljaywgYnV0IHRoZSBudW1iZXJzIGFyZSBzdGlsbCB0b28g
bm9pc3ksIEkgcGxhbiB0byBkbyBtb3JlIG1lYXN1cmVtZW50cyBiZWZvcmUgbGFuZGluZyB0aGlz
IHBhdGNoLgorCisgICAgICAgIEkgZG9uJ3QgeWV0IGhhdmUgcGVyZm9ybWFuY2UgbnVtYmVycyBm
b3IgdGhpcyBwYXRjaCBvbiBhIEJpZ0ludCBiZW5jaG1hcmssIEkgd2lsbCBnZXQgc3VjaCBudW1i
ZXJzIGJlZm9yZSB0cnlpbmcgdG8gbGFuZCBpdCwgYnV0IEknZCBsaWtlIHNvbWUgcmV2aWV3IGlu
IHRoZSBtZWFudGltZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJ
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1p
dFNldEJpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVz
dWx0czo6ZGlkT2JzZXJ2ZU5vbkludDMyKToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRz
OjpkaWRPYnNlcnZlQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRP
YnNlcnZlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2Jz
ZXJ2ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJp
Z0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEhl
YXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9y
bWF0Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBv
cnRWYWx1ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21KU1R5cGUpOgorICAgICAgICAoSlNDOjpsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5
RXF1aXZhbGVudFNwZWN1bGF0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuaDoKKyAgICAgICAgKEpTQzo6aXNCaWdJbnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNIZWFwQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0JpZ0ludFNwZWN1
bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhp
c0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhh
c2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpv
YnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91
bGRTcGVjdWxhdGVIZWFwQmlnSW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlNhZmVUb0V4ZWN1dGVF
ZGdlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3ApOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXR3aXNlT3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TFNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVCaXRSU2hpZnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
U2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1
Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6U3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6On5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6ZWRnZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpub2RlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Omdwcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp1c2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhv
bGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQzMkludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjppc0NlbGwp
OgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkNvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyk6CisgICAgICAg
ICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVE
aXYpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVN
b2QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVQ
b3cpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVC
aXROb3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFs
dWVCaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVCaXRPcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZUJpdFhvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVBcml0aEJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aEJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaXRVUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeVNuaXBwZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5Qml0T3BTbmlwcGV0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym9vbGlmeSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJ1aWxkVHlwZU9mKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SGVhcEJpZ0ludCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjp1bmJveEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjppc05vdEFueUJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmlzSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVB
bnlCaWdJbnQpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOgorICAgICAgICAqIGhlYXAvUHJlY2lz
ZUFsbG9jYXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQ
cmV2aWV3KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xl
YW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OnVuYm94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJveEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0VHlw
ZU9mKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9uZWdhdGUpOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjpj
b21waWxlT3BTdHJpY3RFcUp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVt
ZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rv
X251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVj
aW1hbElkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp0
b0JpZ0ludCk6CisgICAgICAgIChKU0M6OmNhbGxCaWdJbnRDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9CaWdJbnRPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9CaWdJ
bnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0b1RoaXNCaWdJbnRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmluYyk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkZWMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMpOgor
ICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6ZXF1YWxzVG9JbnQzMik6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOgor
ICAgICAgICAoSlNDOjphc0hlYXBCaWdJbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6ZHVtcEZvckJhY2t0cmFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
U3RyaW5nU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFzSGVhcEJpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
aXNCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmJpZ0ludDMyQXNJbnQz
MiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzUHJpbWl0aXZlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9CaWdJ
bnRPckludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlu
bGluZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnB1cmVTdHJpY3RFcXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4g
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpn
ZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvTnVtYmVy
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1
cmVUb0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICog
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc0FkZFNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6anNJc09iamVjdFR5cGVPck51bGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9u
cy5oOgorICAgICAgICAoSlNDOjpjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZSk6CisgICAg
ICAgIChKU0M6OmJpZ0ludENvbXBhcmUpOgorICAgICAgICAoSlNDOjpqc0xlc3MpOgorICAgICAg
ICAoSlNDOjpqc0xlc3NFcSk6CisgICAgICAgIChKU0M6OmFyaXRobWV0aWNCaW5hcnlPcCk6Cisg
ICAgICAgIChKU0M6OmpzU3ViKToKKyAgICAgICAgKEpTQzo6anNNdWwpOgorICAgICAgICAoSlND
Ojpqc0Rpdik6CisgICAgICAgIChKU0M6OmpzUmVtYWluZGVyKToKKyAgICAgICAgKEpTQzo6anNQ
b3cpOgorICAgICAgICAoSlNDOjpqc0luYyk6CisgICAgICAgIChKU0M6OmpzRGVjKToKKyAgICAg
ICAgKEpTQzo6anNCaXR3aXNlTm90KToKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAo
SlNDOjpqc0xTaGlmdCk6CisgICAgICAgIChKU0M6OmpzUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6
Yml0d2lzZUJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNCaXR3aXNlQW5kKToKKyAgICAgICAg
KEpTQzo6anNCaXR3aXNlT3IpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VYb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvU2NyaWJibGUuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50T2JqZWN0LmguCisgICAgICAgIChKU0M6OnNjcmliYmxlRnJlZUNlbGxz
KToKKyAgICAgICAgKEpTQzo6aXNTY3JpYmJsZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OnNjcmli
YmxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbCk6CisKIDIwMjAtMDMtMDIgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIERlbGV0ZSBi
eSB2YWwgY2FjaGluZyBkb2VzIG5vdCBrZWVwIHRoZSBzdWJzY3JpcHQgYWxpdmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI3NDU2NTE3ZjguLmJhNjUxYjBlNDA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY2LDYgKzg2Niw3IEBACiAJCTJBRDg5MzJCMTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBI
ZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJG
MzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNv
dXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEz
NENFIC8qIFNjcmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVD
NzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTMz
QTkyMEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZE
MDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAv
KiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87
IH07CkBAIC0zNTA3LDYgKzM1MDgsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1
Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFB
RDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMw
QTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzM3NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4
cHJlc3Npb25UcmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhw
cmVzc2lvblRyZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NEEy
MjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsg
cGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGlt
aW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU0Myw2ICs3NTQ1LDcgQEAKIAkJCQkw
RkUwNTAyMDFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywKIAkJ
CQkwRkUwNTAyMTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJCTBG
RTA1MDIyMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTExQjhB
MjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYw
MEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5
MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQyMzg5
QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTA3LDYgKzg5MTAsNyBAQAogCQkJ
CTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0
aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAv
KiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAx
IC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMy
MDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENC
NUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXgg
YzEwMDI0MDRlZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1tZWRh
aXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMg
YmVlbiBlbWl0dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVuZGVk
IHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAgICAg
IC8vIFRoZSB3cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRlcnMg
YWJvdmUgd2lsbCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlhdGU4
KGludCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2Zp
bGUuY3BwCmluZGV4IGZlYTY2NzQ1YjYyLi5mMmMwNTg0ZDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVs
ZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3Vs
dChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBt
b2RlKQordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQo
Q0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdS
ZWdpc3RlcnNNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYg
IXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKKyAg
ICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSAmJiAhc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludDMy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsK
QEAgLTQ4LDkgKzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRP
YnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3REb3Vi
bGUubGluaygmaml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm90QmlnSW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJl
Z3MsIHRlbXBHUFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBwZW5k
KGppdC5qdW1wKCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAgICh2
b2lkKSB0ZW1wR1BSOworI2VuZGlmCisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RDZWxsKHJlZ3MsIG1vZGUpKTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNo
SWZOb3RCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGppdCk7
CisgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdzLnBh
eWxvYWRHUFIoKSkpOworICAgIGVtaXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5hcHBl
bmQoaml0Lmp1bXAoKSk7CiAKICAgICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwxOSAr
OTcsMzkgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KLWJvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRC
aWdJbnQoKSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1p
dFNldEJpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0ZmllbGRU
eXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRz
ICYgbWFzaykgIT0gbWFzazsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OnNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRmaWVs
ZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlwZSBt
YXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYg
bWFzaykgIT0gbWFzazsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMm
IGppdCkgY29uc3QKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRIZWFw
QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0
QmlnSW50KCkpCi0gICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1
bHRzOjpCaWdJbnQpOworICAgIGlmIChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAgICAg
ICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7
CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+
Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0NhbGxI
ZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigpKQor
ICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50
MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVs
cGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgsMTIg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmls
ZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1Mk92
ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQucHJp
bnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVI
ZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFwQmln
SW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmlu
dChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwyNCBA
QCBwdWJsaWM6CiAgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAgIElu
dDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8
IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBCaWdJ
bnQgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYsCiAg
ICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAgICBP
YnNlcnZlZFJlc3VsdHMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1bHRz
KHVpbnQ4X3QgYml0cykKICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAgIGJv
b2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3Vi
bGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CiAg
ICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9vbCBk
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3VibGU7
IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYgTm9u
TnVtZXJpYzsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IChIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0lu
dCgpIHsgcmV0dXJuIG1fYml0cyAmIEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVC
aWdJbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRPYnNl
cnZlSW50MzJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0KICAg
ICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50NTJP
dmVyZmxvdzsgfQogCkBAIC0xMDksMTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmlj
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVyaWMo
KTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBC
aWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVhcEJp
Z0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVybiBv
YnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlSW50MzJPdmVyZmxvdygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93KCk7IH0KIAogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2Jz
ZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJvRG91
YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2JzZXJ2
ZWRSZXN1bHRzOjpOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7
IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVk
SGVhcEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0KKyAg
ICB2b2lkIHNldE9ic2VydmVkQmlnSW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJp
Z0ludDMyKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQo
T2JzZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJ
bnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93KTsg
fQogCkBAIC0xMjcsOCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8PSBP
YnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUyT3Zl
cmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJlc3Vs
dHM6Ok5lZ1plcm9Eb3VibGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVl
LmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRz
OjpIZWFwQmlnSW50OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1f
Yml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwyMiBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwg
SW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBz
ZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51
bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVl
UmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQgZW1p
dE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BS
LCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRzIChJ
bnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJv
RG91YmxlKS4KICAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2b2lk
IGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5vbk51
bWVyaWMKICAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNldHMg
QmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNl
dEhlYXBCaWdJbnQoKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdDsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJz
JikgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxI
ZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAt
MTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90Owog
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRU
eXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0aWNf
YXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVk
IDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0
aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNp
emVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUg
b2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFVu
YXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNf
Y2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1
YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0
aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRz
TmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAx
KSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0
aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBh
dGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxk
IG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQg
JiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNl
Y3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lhbEZh
c3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlBcml0
aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBiaXRz
IHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEg
aGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCmluZGV4IDM0ODM0N2M2YjRjLi40OGI3ODcwZWNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMjcsNiArMzI3LDcg
QEAgb3BfZ3JvdXAgOlVuYXJ5T3AsCiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwKICAg
ICAgICAgOmlzX2Jvb2xlYW4sCiAgICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19iaWdf
aW50LAogICAgICAgICA6aXNfb2JqZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGwsCiAg
ICAgICAgIDppc19mdW5jdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4
IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXgg
NjdmMmNlYzBhODAuLmVlYTVmYTRjM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lz
dGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJhbmQp
CiAgICAgVVNFUyhPcElzQm9vbGVhbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIsIG9w
ZXJhbmQpCisgICAgVVNFUyhPcElzQmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVj
dCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAgVVNF
UyhPcElzQ2VsbFdpdGhUeXBlLCBvcGVyYW5kKQpAQCAtNDIzLDkgKzQyNCwxMCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3Qp
CiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRzdCkK
LSAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRlZmlu
ZWRPck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhPcElz
TnVtYmVyLCBkc3QpCisgICAgREVGUyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElzT2Jq
ZWN0LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElz
Q2VsbFdpdGhUeXBlLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDkxZWVmYTAwOThlLi4zYzBlY2ZjZjJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVE1hdGhJQy5oIgotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1ODhk
YmZmNi4uMjA3NWRhNzA1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EYXRhRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Rh
dGFGb3JtYXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NCwxMiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWludDhf
dCB7CiAgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0gNiwK
ICAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAgICBE
YXRhRm9ybWF0QmlnSW50MzIgPSA4LAorICAgIERhdGFGb3JtYXRKUyA9IDE2LAogICAgIERhdGFG
b3JtYXRKU0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLAogICAgIERhdGFG
b3JtYXRKU0RvdWJsZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsCiAgICAgRGF0
YUZvcm1hdEpTQ2VsbCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLAogICAgIERhdGFG
b3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwKLSAgICAK
KyAgICBEYXRhRm9ybWF0SlNCaWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCaWdJ
bnQzMiwKKwogICAgIC8vIE1hcmtlciBkZWxpbWluYXRpbmcgb3JkaW5hcnkgZGF0YSBmb3JtYXRz
IGFuZCBPU1Itb25seSBkYXRhIGZvcm1hdHMuCiAgICAgRGF0YUZvcm1hdE9TUk1hcmtlciA9IDMy
LCAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODliOS4u
ODMwZjZkNjc1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0
Niw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAordm9pZCBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdz
IHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICBjYXNlIE5vbmU6CkBAIC02NywxMiArNjcsMTIgQEAg
dm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVW5hcnlB
cml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2Jz
ZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUu
dW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwg
bW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIEJpbmFyeUFyaXRoUHJv
ZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJl
c3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUuYmluYXJ5
QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
CmluZGV4IGU4YjY1ZWFkNDZlLi4zYWJhMWEzMmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVJbmRleC5oIgogI2luY2x1
ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlRhZ1JlZ2lz
dGVyc01vZGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgzLDcgKzg0LDggQEAgcHVibGlj
OgogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2tp
bmQgIT0gTm9uZTsgfQogCi0gICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiwg
SlNWYWx1ZVJlZ3MpIGNvbnN0OworICAgIC8vIFRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgaXMgb25s
eSBuZWVkZWQgb24gNjQtYml0cyBidWlsZHMgKGZvciB0ZXN0aW5nIEJpZ0ludDMyKS4KKyAgICB2
b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRl
bXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKSBjb25zdDsKICAgICB2
b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggMTA1M2JhNTJiNTQu
Ljc3MWM3OWI4NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzksMTEgKzIzOSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0
aW9uKFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAg
ICAgICAgc3RyT3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
aXNUb3AgPSBmYWxzZTsKLQotICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50KQotICAgICAg
ICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
aXNUb3AgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVlID09IFNwZWNJbnQzMk9u
bHkpCkBAIC0yNzgsNyArMjczLDIzIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFt
JiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KLSAgICAKKworICAgIGlmICgodmFsdWUgJiBTcGVj
QmlnSW50KSA9PSBTcGVjQmlnSW50KQorICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0Jp
Z0ludDMyKQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlmICh2YWx1ZSAmIFNw
ZWNIZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmlnSW50Iik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQogICAgICAgICBzdHJPdXQucHJp
bnQoIkRvdWJsZUltcHVyZU5hTiIpOwogICAgIApAQCAtNDMxLDcgKzQ0Miw3IEBAIFNwZWN1bGF0
ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5m
bykKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU0JpZ0ludDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAgICAg
cmV0dXJuIFNwZWNIZWFwQmlnSW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2Jq
ZWN0OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC00OTksOCAr
NTEwLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBpZiAoc3RydWN0
dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4gU3Bl
Y1N5bWJvbDsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRU
eXBlKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBpZiAoc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFw
QmlnSW50OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2ZWRB
cnJheVR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVybiBz
cGVjdWxhdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01MzYs
NiArNTQ3LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAgIHJl
dHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgp
KQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAg
ICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQpAQCAtNTk1LDggKzYwOCw4IEBAIE9wdGlvbmFsPFNw
ZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAgICAg
IHJldHVybiBTcGVjU3RyaW5nOwogICAgIGNhc2UgU3ltYm9sVHlwZToKICAgICAgICAgcmV0dXJu
IFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgotICAgICAgICByZXR1cm4gU3BlY0Jp
Z0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBC
aWdJbnQ7CiAgICAgY2FzZSBBcnJheVR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjQXJyYXk7CiAg
ICAgY2FzZSBEZXJpdmVkQXJyYXlUeXBlOgpAQCAtNjMyLDYgKzY0NSwxMCBAQCBTcGVjdWxhdGVk
VHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVj
dWxhdGVkVHlwZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0eXBl
IHw9IFNwZWNTdHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAgIHR5
cGUgfD0gU3BlY0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJk
Li5kZjBiOTFhNzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05OCwxMiArOTgsMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PAogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBO
dWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY01p
c2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVy
OyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVk
Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5
IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0lu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFW
aWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNI
ZWFwQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAKK3N0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludDMyICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHNtYWxsIEJpZ0ludCB0aGF0
IGlzIGlubGluZSB0aGUgSlNWYWx1ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JpZ0ludDMyIHwgU3Bl
Y0hlYXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmll
d09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdzIGRlZmluaXRl
bHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjUHJp
bWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wg
fCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgYW55
IG5vbi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3Bl
Y09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNw
ZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RB
cmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNS
ZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3BlY01h
cE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0
T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RP
dGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZv
ciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmpl
Y3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmlnSW50
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0
ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8
IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBh
Ym92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgor
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3Bl
Y0NlbGxPdGhlciB8IFNwZWNIZWFwQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwu
CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZv
ciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAgID0g
U3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBl
eGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3Bv
bmRzIHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNCeXRlY29kZVRvcCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJdCBjYW4gYmUgYW55
dGhpbmcgdGhhdCBieXRlY29kZSBjb3VsZCBzZWUgcGx1cyBleG90aWMgZW5jb2RpbmdzIG9mIG51
bWJlcnMuCiAKQEAgLTE4NSw5ICsxODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1N5bWJv
bDsKIH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisKK2lubGlu
ZSBib29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQorewor
ICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSGVhcEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wgaXNC
aWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFs
dWUgPT0gU3BlY0JpZ0ludDsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjQmln
SW50KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBmYTNhYmJkMTFhZC4uZGQ0MjYw
MzUxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwuCiAgKgpAQCAtMTY2OCw3ICsxNjY4
LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIpIHsKICAgICAg
ICAgICAgICAgICByZXdpbmQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAg
T3BJc0JpZ0ludDo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUpOworI2Vsc2UKICAgICAgICAg
ICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgQmln
SW50VHlwZSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewpAQCAtMjg3Niw3ICsy
ODgwLDcgQEAgSlNWYWx1ZSBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQoY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDgKICAgICByZXR1cm4gbV9iaWdJbnRNYXAu
ZW5zdXJlKEJpZ0ludE1hcEVudHJ5KGlkZW50aWZpZXIuaW1wbCgpLCByYWRpeCwgc2lnbiksIFsm
XSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKCkpOwogICAg
ICAgICBhdXRvIHBhcnNlSW50U2lnbiA9IHNpZ24gPyBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpT
aWduZWQgOiBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZDsKLSAgICAgICAgSlNCaWdJ
bnQqIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlkZW50
aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhj
ZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRJbk1hcCA9IEpT
QmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRp
eCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2ln
bik7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIGFkZENvbnN0
YW50VmFsdWUoYmlnSW50SW5NYXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODUuLjBh
MDAzYjhmNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMDg5LDcgKzEwODksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB1c2luZyBOdW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1
ZT47CiAgICAgICAgIHVzaW5nIElkZW50aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRT
dHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD47Ci0gICAgICAgIHVzaW5n
IElkZW50aWZpZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCo+
OworICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBF
bnRyeSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNl
dCA9IEhhc2hTZXQ8UmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4+OwogICAgICAgICB1c2lu
ZyBUZW1wbGF0ZURlc2NyaXB0b3JNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBKU1RlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvciosIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGU5
NTgwMGFmZjI2Li5lODgyMjUwMDY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1
LDYgQEAKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hdGhD
b21tb24uaCIKICNpbmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKQEAgLTIxNCw3ICsyMTMsNyBAQCBp
bmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJp
Y3RNb2RlLCBBYnN0cmFjdFZhbHVlJgogICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9IGZh
bHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCk7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgp
IHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlw
ZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBl
LmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9
PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKTsKICAgICAgICAg
ICAgIGlmICghaXNTdHJpY3RNb2RlKQogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2Jq
ZWN0KCkpOwogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJp
bmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBlaXRoZXI6CkBAIC01MDIsNyArNTAxLDEyIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOworICAgICAgICAgICAgQVNTRVJU
KFVTRV9CSUdJTlQzMik7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBT
cGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAg
LTUzMiw3ICs1MzYsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgaWYgKGhh
bmRsZUNvbnN0YW50QmluYXJ5Qml0d2lzZU9wKG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAg
IC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBiaW5hcnlVc2VLaW5kIG1lYW5zIHRoYXQgd2UgY2Fubm90
IHNwZWNpYWxpemUgdG8gKGZvciBleGFtcGxlKSBhIEhlYXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFu
ZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCaWdJbnQzMik7CisgICAgICAgICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAg
ICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNzIyLDExICs3MzIsMTQgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgVmFsdWVTdWI6CiAgICAgY2FzZSBWYWx1ZUFkZDog
ewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwot
ICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAg
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5l
ZWQgU3BlY1N0cmluZyBoZXJlIGZvciBWYWx1ZVN1Yj8gSXQgc2VlbXMgbGlrZSB3ZSBvbmx5IG5l
ZWQgaXQgZm9yIFZhbHVlQWRkLgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y1N0cmluZyB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwpAQCAtODg2LDYgKzg5OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFZhbHVlTmVnYXRlOiB7CisgICAgICAgIC8vIEZJ
WE1FOiB3ZSBjb3VsZCBkbyBtdWNoIHNtYXJ0ZXIgdGhpbmdzIGZvciBCaWdJbnRzLCBzZWUgVmFs
dWVBZGQvVmFsdWVTdWIuCiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAg
YnJlYWs7CkBAIC05NTgsNyArOTcyLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2Rl
KG5vZGUsIHR5cGVPZkRvdWJsZUluY09yRGVjKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlw
ZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBT
cGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbnlCaWdJ
bnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgICAgICBzZXRUeXBlRm9y
Tm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgpAQCAtOTc0LDcgKzk5Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IEpTVmFsdWUgY2hpbGRZID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKICAgICAg
ICAgaWYgKGNoaWxkWCAmJiBjaGlsZFkgJiYgY2hpbGRYLmlzTnVtYmVyKCkgJiYgY2hpbGRZLmlz
TnVtYmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBgZGlkRm9sZENsb2Ji
ZXJXb3JsZGAgaGVyZSBiZWNhdXNlIHRoaXMgcGF0aCBpcyBvbmx5IHBvc3NpYmxlCi0gICAgICAg
ICAgICAvLyB3aGVuIG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2Yg
QmlnSW50VXNlLCBjaGlsZHJlbiB3aWxsIGJlCisgICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVz
ZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQW55QmlnSW50VXNlIG9yIGZyaWVu
ZHMsIGNoaWxkcmVuIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkgYEFic3RyYWN0
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVFZmZlY3RzYC4KICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVy
V29ybGQoKTsKICAgICAgICAgICAgIC8vIE91ciBib3hpbmcgc2NoZW1lIGhlcmUgbWF0Y2hlcyB3
aGF0IHdlIGRvIGluIG9wZXJhdGlvblZhbHVlUG93LgpAQCAtOTgyLDcgKzEwMDAsOSBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNC
aWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAt
OTkyLDcgKzEwMTIsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAKICAgICBj
YXNlIFZhbHVlTXVsOiB7Ci0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50VXNlKQorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgY29kZSBub3Qgc2hhcmVkIHdp
dGggVmFsdWVTdWI/CisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJp
Z0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50
KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEwNTYsNyArMTA3OSw5IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudERpdk9wKG5vZGUpKQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAg
ICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBj
bG9iYmVyV29ybGQoKTsKQEAgLTEzODAsNiArMTQwNSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAg
ICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0lu
dGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAt
MTQwOCw2ICsxNDM0LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGNh
c2UgSXNOdW1iZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFu
KGNoaWxkLnZhbHVlKCkuaXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0JpZ0ludCgpKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdl
ckltcGwoY2hpbGQudmFsdWUoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE1NjIs
NyArMTU5MSwyMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAg
ICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjQmlnSW50KSkgeworICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAg
ICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVjQmlnSW50KSkg
eworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwor
ICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IGlmIHRoZSBTcGVj
dWxhdGVkVHlwZSBpbmZvcm1zIHVzIHRoYXQgd2Ugd29uJ3QgaGF2ZSBhIEJpZ0ludDMyIChvciB0
aGF0IHdlIHdvbid0IGhhdmUgYSBIZWFwQmlnSW50KSwgdGhlbiB3ZSBjYW4gdHJhbnNmb3JtIHRo
aXMgbm9kZSBpbnRvIGEgSXNDZWxsV2l0aFR5cGUoQmlnSW50VHlwZSkgKG9yIGEgaHlwb3RoZXRp
Y2FsIElzQmlnSW50MzIgbm9kZSkuCiAKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVj
SW50MzJPbmx5KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVh
bih0cnVlKSk7CkBAIC0xOTM2LDEzICsxOTgwLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRo
aXMgY2hlY2sgaGVyZSwgYW5kIG5vdCBsYXRlciAoYWZ0ZXIgdGhlIHR5cGUtYmFzZWQgcmVwbGFj
ZW1lbnQgYnkgZmFsc2UpLgorICAgICAgICAvLyBTYWFtIHNlZW1zIHRvIGFncmVlIHRoYXQgdGhl
IHR3byBjaGVja3MgY291bGQgYmUgc3dpdGNoZWQsIEknbGwgdHJ5IHRoYXQgaW4gYSBzZXBhcmF0
ZSBwYXRjaAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJv
ZHVjaW5nIEJpZ0ludCB0byBKU0MuCi0gICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nQ2VsbENv
bnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCk7CisgICAgICAgICAgICBh
dXRvIGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkg
eworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFs
dWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25T
dHJpbmdDZWxsQ29uc3RhbnQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdP
ckJpZ0ludENlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0
YW50KHJpZ2h0KSkgewogICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3Rh
bnRGb2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShu
b2RlLCBTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTU3LDE5ICsy
MDAzLDI0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBub2RlLT5jaGlsZDIoKSkgewotICAgICAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAotICAgICAgICAgICAg
ICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkgfHwKLSAgICAgICAgICAgICAgICBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5
VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fAotICAgICAgICAgICAgICAgIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFyVXNlKSB8fAot
ICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0
cmluZ0lkZW50VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdVc2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJ
cyB0aGVyZSBhbnkgY2FzZSBub3QgaW52b2x2aW5nIE5hTiB3aGVyZSB4ID09PSB4IGlzIG5vdCBn
dWFyYW50ZWVkIHRvIHJldHVybiB0cnVlPworICAgICAgICAgICAgLy8gSWYgbm90IEkgbWlnaHQg
c2xpZ2h0bHkgc2ltcGxpZnkgdGhhdCBjaGVjay4KKyAgICAgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDUyUmVwVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0
cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
eW1ib2xVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVj
dFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwg
VW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50
eXBlZFVzZSwgTWlzY1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVk
VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNl
LCBTdHJpbmdVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludDMyVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlC
aWdJbnRVc2UpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFu
KHRydWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZDFmYTBi
MzE3ODcuLmM4YzI1YzMwZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTU2Miw2ICs1NTYyLDE0IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9pc19udW1iZXIpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9pc19iaWdfaW50
OiB7CisgICAgICAgICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAgICAgICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7CisgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOworICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQmlnSW50LCB2YWx1ZSkpOworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfaXNfYmlnX2ludCk7CisgICAgICAgIH0KKwogICAgICAgICBj
YXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Yy4uMDNlODli
MjZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTE0OSw2ICsxNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ug
b3BfaXNfdW5kZWZpbmVkX29yX251bGw6CiAgICAgY2FzZSBvcF9pc19ib29sZWFuOgogICAgIGNh
c2Ugb3BfaXNfbnVtYmVyOgorICAgIGNhc2Ugb3BfaXNfYmlnX2ludDoKICAgICBjYXNlIG9wX2lz
X29iamVjdDoKICAgICBjYXNlIG9wX2lzX29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNf
Y2VsbF93aXRoX3R5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IGIyMzE4ZmUwM2FlLi5lYzFlZjlmMDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzUsNiArMTc1LDcgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFu
OgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJl
cklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNUeXBlZEFycmF5Vmll
dzoKQEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBy
ZXR1cm47CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC02ODUsNyArNjg2LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAg
ICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBj
YXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNh
c2UgQW55QmlnSW50VXNlOgogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKQEAgLTcwNyw3ICs3MTAs
OCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgVmFsdWVQb3c6CiAgICAgY2Fz
ZSBWYWx1ZUJpdExTaGlmdDoKICAgICBjYXNlIFZhbHVlQml0UlNoaWZ0OgotICAgICAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRo
aXMgdXNlIG9mIHNpbmdsZS1hcmd1bWVudCBpc0JpbmFyeVVzZUtpbmQgd291bGQgcHJldmVudCB1
cyBmcm9tIHNwZWNpYWxpemluZyAoZm9yIGV4YW1wbGUpIGZvciBhIEhlYXBCaWdJbnQgbGVmdC1v
cGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAg
ICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKaW5kZXggYjQzZjdjZjU0ZTEuLmFjNjgzNDMzMGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cApAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8g
SlNDLgogICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29u
c3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1
ZS5pc0JpZ0ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZh
bHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQo
KTsKICAgICAgICAgICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoaXNO
b25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChjaGlsZDFDb25zdGFudCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQzYzhmZDVkYy4uZWFhNWIyNDEw
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIK
ICNpbmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0Nyw2ICsxNDYsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoK
ICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJ
bnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBj
YXNlIElzT2JqZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggZTk3ZGUxMGY2ZjQuLjkyNDg2ZmJhZmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDEsMTQgKzIwMSwzNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQzMik7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFw
cGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBp
dCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiB3ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2Fs
bCBpbnN0ZWFkIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9
PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3Rh
bnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjSGVh
cEJpZ0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUo
dm0oKS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5j
aGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICAvLyBIZWFwQmlnSW50cyBhcmUgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRK
UyBpcyBnb29kIGhlcmUKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICB9IGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7CisgICAg
ICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSht
X2luZGV4SW5CbG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDEpKSkpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFu
dE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdv
b2QgZW5vdWdoIGZvciBub3cuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGhh
dmluZyBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIHNtYWxsIEJpZ0ludHMgaW5zdGVhZC4K
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5v
dCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBi
dXQgaXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9u
IGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Ao
b3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7Ci0gICAgICAgICAgICAgICAgbm9kZUNv
bnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3Bl
Y0JpZ0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUo
dm0oKS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlQ29u
c3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVj
QmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXpl
KEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIC8v
IEJpZ0ludHMgYXJlIGN1cnJlbnRseSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3Vs
dEpTIGlzIGdvb2QgaGVyZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVz
dWx0SlMgaXMgZ29vZCBoZXJlCisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAg
fSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewogICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IEFyaXRoQWRkIDogQXJpdGhTdWIp
OwogICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxv
dyk7CkBAIC0yMzQsMTIgKzI1NCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgY2hp
bGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDIgPSBub2RlLT5j
aGlsZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJ
bnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgewotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNl
PihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihjaGlsZDIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAor
I2VuZGlmCisKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9y
QXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtMjY3LDggKzI5NSwyMSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVC
aXRBbmQ6IHsKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNlbmRp
ZgogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTIsNyArMzUzLDE3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4ob3BlcmFu
ZEVkZ2UpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5k
RWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJp
Z0ludFVzZT4ob3BlcmFuZEVkZ2UpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIGlm
IChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JCaXRPcHMoKSkK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG9wZXJhbmRFZGdlKTsKICAgICAg
ICAgICAgIGVsc2UgewpAQCAtNDU3LDkgKzUwOCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgewotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUhlYXBCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoY2hpbGQxLm5vZGUo
KSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNl
PihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMik7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChjaGls
ZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNl
PihjaGlsZDIpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVu
dHlwZWRVc2U+KGNoaWxkMik7CkBAIC01NDUsOCArNjA0LDIxIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGls
ZC5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVh
cEJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyNlbmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC01ODcsMTIgKzY1
OSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hp
bGQxKCk7CiAgICAgICAgICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAK
KyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3Mo
Tm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obGVmdENoaWxkKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxB
bnlCaWdJbnRVc2U+KGxlZnRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJ
bnRVc2U+KHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICAgfQor
I2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9y
QXJpdGhtZXRpYyhsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGxlZnRDaGlsZCk7CkBAIC02NTYsMTIgKzcz
NiwyMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBWYWx1ZVBvdzogewor
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAg
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTQwLDYgKzI2
MjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgICAg
ICBjYXNlIElzQm9vbGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAgY2FzZSBJ
c0JpZ0ludDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1
bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTI4ODAsNyAr
Mjk2OSwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50
aXR5KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjk1Myw3
ICszMDUxLDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICAvLyBJZiB0aGUgcHJlZGljdGlv
biBvZiB0aGUgY2hpbGQgaXMgQmlnSW50LCB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgVG9OdW1lcmlj
IHRvIElkZW50aXR5LCBzaW5jZSBpdCBjYW4gb25seSByZXR1cm4gYSBCaWdJbnQgd2hlbiBmZWQg
YSBCaWdJbnQuCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmln
SW50KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxI
ZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbHNlCisg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbmRp
ZgogICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMzQzMywxMyArMzU0MCwxNSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICAgICAg
Y2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEhl
YXBCaWdJbnRVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNl
IFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgaWYgKGFsd2F5c1VuYm94U2lt
cGxlUHJpbWl0aXZlcygpCiAgICAgICAgICAgICAgICAgfHwgaXNDZWxsU3BlY3VsYXRpb24odmFy
aWFibGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hh
bmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiB3aGF0IHNob3VsZCB3ZSBkbyBhYm91dCBC
aWdJbnQzMlVzZSBhbmQgQW55QmlnSW50VXNlID8KKyAgICAgICAgLy8gQWxzbyBtb3JlIGJyb2Fk
bHksIHdoYXQgYWJvdXQgYWxsIG9mIHRoZSBVc2VLaW5kcyB3aGljaCBhcmUgbm90IGxpc3RlZCBp
biB0aGF0IHN3aXRjaD8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0zOTQ5LDEyICs0MDU4LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmln
SW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNo
aWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJp
Y3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAppbmRleCBiOTI4ODEwZTEwMS4uZjgxNzBkOTJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR051bGxBYnN0cmFjdFN0YXRl
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTM0NTViNWMyOWYu
Ljk3ZjE3YTA4OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1NDEs
NiArMjU0MSwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaXNTeW1ib2xTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Jp
Z0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CisjZW5kaWYKKworICAgIGJv
b2wgc2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNI
ZWFwQmlnSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CiAgICAgCiAgICAgYm9v
bCBzaG91bGRTcGVjdWxhdGVCaWdJbnQoKQogICAgIHsKQEAgLTI3NDEsNyArMjc1MywxOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpOwogICAgIH0KLSAgICAKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihOb2Rl
KiBvcDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpOworICAgIH0K
KyNlbmRpZgorCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChOb2Rl
KiBvcDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1
bGF0ZUhlYXBCaWdJbnQoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKTsKKyAg
ICB9CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlKiBv
cDEsIE5vZGUqIG9wMikKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0
ZUZpbmFsT2JqZWN0KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyMTFlYTc3ZDg1Li5hZjBm
M2Y3NDA0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzk1
LDYgKzM5NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJ
c1VuZGVmaW5lZE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xl
YW4sIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNOdW1iZXIsIE5vZGVSZXN1bHRC
b29sZWFuKSBcCisgICAgLyogSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMy
LiBPdGhlcndpc2Ugd2UgZW1pdCBJc0NlbGxXaXRoVHlwZSAqL1wKKyAgICBtYWNybyhJc0JpZ0lu
dCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhOdW1iZXJJc0ludGVnZXIsIE5vZGVS
ZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNPYmplY3QsIE5vZGVSZXN1bHRCb29sZWFuKSBc
CiAgICAgbWFjcm8oSXNPYmplY3RPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAyM2ViZTBkN2JjNy4uYjIyMTE5
YjlkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMzgz
LDEwICszODMsMTMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIC8v
IFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0
aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBo
b3cgdG8gcmVzdG9yZSBpdC4KICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRW
YWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAg
ICAgICAgICAgICAgLy8gV2UgYWxzbyB1c2UgdGhlIG5vdENlbGxNYXNrUmVnaXN0ZXIgYXMgdGhl
IHNjcmF0Y2ggcmVnaXN0ZXIsIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGZpbmQgYSBsZXNzIGdyb3NzIHdheSBvZiBkb2luZyB0aGlzLCBtYXliZSB0aHJv
dWdoIGRlbGF5aW5nIHRoZXNlIG9wZXJhdGlvbnMgdW50aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21l
IHNwYXJlIHJlZ2lzdGVycyBhcm91bmQ/CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciksIEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1Zh
bHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuZ3ByKCkpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdp
c3RlcnMpOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsK
ICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKGV4aXQubV9qc1Zh
bHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lz
dGVyIHNvIHdlIGNhbiB1c2UgaXQuCkBAIC0zOTgsNyArNDAxLDcgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0
LCBjb25zdAogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywg
c2NyYXRjaFBheWxvYWQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5s
b2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAg
ICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoLCBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0
b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRj
aFBheWxvYWQpOwpAQCAtNDA3LDEwICs0MTAsMTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhp
dChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAog
ICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVl
U291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlLCBJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOworICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpLCBJbnZh
bGlkR1BSUmVnKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCA5ZTliY2VhNDgxYy4uZTBl
ODcyMWVlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZkYjljOWQ3Njcu
LmEyNjVjMGFhNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04Niw3ICs4Niw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMuaCIK
ICNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKERGR19K
SVQpCkBAIC0yMjEsNTYgKzIyMCw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0V2l0
aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgYmFz
ZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgTnVtYmVyT3Bl
cmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYmluYXJ5T3AoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRP
cCwgTnVtYmVyT3BlcmF0aW9uJiYgbnVtYmVyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkK
LXsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1Zh
bHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBv
cDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2Up
OwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIobnVtYmVyT3AoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
QmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlv
biYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMy
KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9CaWdJbnRPckludDMyKGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAg
IH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoaW50MzJPcChXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJsZSBpbnB1dCkKIHsKICAgICBpbnQgYXNJ
bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGlucHV0KTsKQEAgLTQ3MCw3MSArNDE5LDM0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4g
SlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGpzTW9k
KGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVj
dCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotCi0g
ICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7
Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1lcmljKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlICsgMSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNJbmMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51
bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5k
TnVtZXJpYykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJh
bmROdW1lcmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlIC0g
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEZWMoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVl
IG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKIAotICAgIGF1dG8gb3BlcmFuZE51
bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmJpdHdpc2VOb3Qo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIofldURjo6Z2V0PGludDMyX3Q+KG9w
ZXJhbmROdW1lcmljKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlTm90
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKQpAQCAtNTQzLDE1ICs0NTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQp
OwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90
IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsKLSAgICB9
OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVk
T3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NjAsMTUgKzQ2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0Owot
ICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVu
Y29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTc3LDE1ICs0NzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQq
IHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVm
dCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0
LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdo
dDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3Mp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTk0LDE1ICs0ODIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+
IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50
MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxl
ZnQgPDwgKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGlu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlm
dCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTFNoaWZ0KGds
b2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjExLDE1ICs0
OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNo
aWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0g
W10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0lu
dCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVk
UmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0
byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7
Ci0gICAgICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikKQEAgLTY1NywxNSArNTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsK
LSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJp
Z2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OwotICAgIH07Ci0K
LSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGRpdmlzaW9uIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzRGl2KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjc0
LDE1ICs1MzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
UG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBh
dXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7
Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKLSAgICB9Owot
Ci0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzUG93KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogZG91YmxlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhBYnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKQEAgLTE0NzksNyArMTMzNSw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWdleHAtPnRlc3Qo
Z2xvYmFsT2JqZWN0LCBpbnB1dCkpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTQ5MSw3ICsxMzQ3LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmpl
Y3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MDIsNyArMTM1OCw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwg
b3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTE0LDcgKzEzNzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBsZWZ0
T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KICAgICAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTI2LDcgKzEzODIsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6cmVtYWluZGVy
KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0x
NTM4LDcgKzEzOTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0Jp
Z0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9
CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xNTUwLDcgKzE0MDYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAg
IHJldHVybiBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRB
bmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTYyLDcgKzE0MTgsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9i
YWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMTU3NCw3ICsxNDMwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1
cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9w
ZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwpAQCAtMTU4Niw3ICsxNDQyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU5OCw3ICsxNDU0LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJp
Z2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xNjEwLDcgKzE0NjYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogICAg
IHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJp
Z2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjI4LDcgKzE0ODQsNyBAQCBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxT
bG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKIH0KIAogc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGFyZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIpCkBAIC0x
NjczLDEwICsxNTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byB2
YXJpYW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
LSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHZhcmlhbnQpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdURjo6Z2V0PEpTQmlnSW50Kj4odmFyaWFudCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPih2
YXJpYW50KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZh
bHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDBmMWM4NzU0Y2Q2Li4zZjA0Zjg5Y2RiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODEsMTgg
KzE4MSwxOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSgogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUmVnRXhwVGVzdChKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
b3AxKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFu
ZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JI
ZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZf
SU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KFZN
KiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyhWTSos
IFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgbWluQ2FwYWNpdHkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4NThiMzhjMS4uZTNjZjc5NWM1ZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC01MzIsNyArNTMyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMDMsNiArMTAxNSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29s
ZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAg
ICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgY2FzZSBJc09iamVjdDoKICAgICAg
ICAgY2FzZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQuLmQ1NThhNzU3ODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNzksNyArNzksOSBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09y
T3RoZXJVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVz
ZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVz
ZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RV
c2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2Ug
Tm90U3RyaW5nVmFyVXNlOgpAQCAtMjYzLDYgKzI2NSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBp
Z25vCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAg
ICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0lu
dGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAt
Njc1LDEwICs2NzgsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFZhbHVl
RGl2OgogICAgIGNhc2UgVmFsdWVNb2Q6CiAgICAgY2FzZSBWYWx1ZVBvdzoKLSAgICAgICAgcmV0
dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpOworICAgICAgICByZXR1cm4gbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSk7CiAK
ICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IEJpZ0ludFVzZTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlOwogCiAg
ICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CmluZGV4IDAyZThkMDY4MDc5Li41ZTE5MjM0NDRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA2LDYgKzE3MDYsMTAgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKE5vZGUqIG5vZGUsIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmEKIAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKG5v
ZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBl
bHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpICYmIChjb25kaXRpb24g
PT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkpCisg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2Rl
LCBjb25kaXRpb24pOworI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBp
bGVQZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CkBAIC0z
NTMzLDI0ICszNTM3LDQ3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5v
dChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogCi0g
ICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CisKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxpZXMgb24gZGV0
YWlscyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxsIGhhdmUgdG8g
YmUgdXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICBzdGF0aWNfYXNzZXJ0
KEpTVmFsdWU6OkJpZ0ludDMyVGFnID09IDB4MTIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KEpT
VmFsdWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAwMTIpOworICAgICAgICBjb25z
dGV4cHIgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZmZmZmZmZmMDAwMDsK
KyAgICAgICAgc3RhdGljX2Fzc2VydCghKEpTVmFsdWU6OkJpZ0ludDMyTWFzayAmIG1hc2tGb3JC
aWdJbnQzMkJpdHMpKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQobWFza0ZvckJp
Z0ludDMyQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnhvcjY0KG9wZXJhbmQuZ3By
KCksIHJlc3VsdEdQUik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZv
ciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGNoaWxkMS51
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CiAgICAgICAgIEdQUlJlZyBvcGVyYW5kR1BSID0gb3Bl
cmFuZC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoY2hpbGQxLCBvcGVyYW5kR1BS
KTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEpOwor
ICAgIEFTU0VSVChjaGlsZDEudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgY2hpbGQxLnVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UpOworICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywg
Y2hpbGQxLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBj
aGlsZDEpOyAvLyBSZXF1aXJlZCBmb3IgdGhlIEFueUJpZ0ludFVzZSBjYXNlCiAgICAgSlNWYWx1
ZVJlZ3Mgb3BlcmFuZFJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJl
Z2lzdGVycygpOwpAQCAtMzU3OCwxNCArMzYwNSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQml0d2lzZU5vdChOb2RlKiBub2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlw
cGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc25pcHBldFNsb3dQYXRoRnVuY3Rpb24+
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkK
IHsKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdo
dENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlIHx8IGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8
IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5k
KCkgPT0gQW55QmlnSW50VXNlKTsKKwogICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGls
ZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVn
cyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0g
cmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzYzMCwxMSArMzY2MSwxMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAK
ICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0LmVtcGxhY2Uo
dGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRD
aGlsZCk7IC8vIFJlcXVpcmVkIGZvciBBbnlCaWdJbnRVc2UKICAgICAgICAgbGVmdFJlZ3MgPSBs
ZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0
KCkpIHsKLSAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAg
cmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7IC8vIFJlcXVpcmVkIGZvciBB
bnlCaWdJbnRVc2UKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAg
ICAgfQogCkBAIC0zNjcwLDUyICszNzAzLDg0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUt
PmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAg
IGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdENo
aWxkLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBC
aWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlz
LCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhp
cywgcmlnaHRDaGlsZCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQubW92
ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworCiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAg
ICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0
QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBl
ZEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6
IGJpdEFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIK
KyAgICAgICAgICAgIG1faml0LmFuZDY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGVtaXRV
bnR5cGVkQml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9i
b3g6IGJpdE9yIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQz
MgorICAgICAgICAgICAgbV9qaXQub3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgorICAgICAgICAgICAgLy8g
Qml0WG9yIHJlbW92ZXMgdGhlIHRhZywgc28gd2UgbXVzdCBhZGQgaXQgYmFjayBhZnRlciBkb2lu
ZyB0aGUgb3BlcmF0aW9uCisgICAgICAgICAgICBtX2ppdC54b3I2NChyaWdodC5ncHIoKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJp
Z0ludDMyVGFnKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQorCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAKLSAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVn
IGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdwcigp
OworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmln
SW50CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByaWdodEdQUiA9
IHJpZ2h0LmdwcigpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7
Ci0gICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVI
ZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNh
c2UgVmFsdWVCaXRBbmQ6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFu
ZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0
WG9yOgorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgorICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdEFuZEdlbmVyYXRv
ciwgb3BlcmF0aW9uVmFsdWVCaXRBbmQ+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBWYWx1ZUJpdFhvcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRP
cDxKSVRCaXRYb3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0WG9yPihub2RlKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXRPckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlw
ZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdE9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdE9y
Pihub2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKLSAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKQEAgLTM3NTUsNyArMzgyMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKICAgICBp
bnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogewog
ICAgIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiA9IG5vZGUtPm9w
KCkgPT0gVmFsdWVCaXRSU2hpZnQKICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCA6
IG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdDsKQEAgLTM3NjUsOSArMzgzMCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQg
PSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5u
b2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIo
bGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0Lmpz
VmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFs
dWVSZWdzKCk7CiAKQEAgLTM4NTksMjcgKzM5MjYsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlTFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBu
b2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAK
LSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJ
WE1FOiBzdXBwb3J0IEJpZ0ludDMyCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywg
bGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmln
aHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50
KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxk
LCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0
R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7
CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpOwotICAgIGVtaXRVbnR5cGVkQml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVy
YXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CisgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJp
dE9wPEpJVExlZnRTaGlmdEdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQ+KG5vZGUp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSog
bm9kZSkKQEAgLTM4ODcsMjcgKzM5NTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+
Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7CisgICAgLy8gRklYTUU6IHN1
cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRV
c2UpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxk
KTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7
CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJp
Z2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQ
Uik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAg
ICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwot
ICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgIGVtaXRVbnR5cGVkT3JC
aWdJbnRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCkBAIC0zOTE4LDcgKzM5ODUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlU2hpZnRPcChOb2RlKiBub2RlKQogCiAgICAgaWYgKGxlZnRDaGls
ZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wID09IEJpdFVSU2hpZnQpOwotICAg
ICAgICBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKKyAgICAgICAgZW1pdFVudHlw
ZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzk0OCwxOSArNDAxNSw2OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVBZGQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworCisgICAgICAgIC8v
IEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lzdGVyLCBvciBjYW4gd2Ug
bXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxzbywgbG9vayBpbnRvIFJl
dXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQgZ2VuZXJhdGVkIGNvZGUu
CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwor
ICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQubW92
ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJl
c3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCksIHRlbXBHUFIpOworICAg
ICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisgICAgICAgIC8vIEZJWE1FOiBh
ZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVy
OjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOworCisgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJlY292ZXJ5
PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBj
aGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRvIGZyZWUg
dGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOworICAgICAgICBKU1Zh
bHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAg
ICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbgorICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBv
cnQgZm9yIG1peGVkIEJpZ0ludDMyL0hlYXBCaWdJbnQKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIp
CisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQ
UlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmln
aHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7
Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkFkZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkFkZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00MDA2LDQ0ICs0MTIzLDkzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogICAgIEVk
Z2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBu
b2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BS
UmVnID0gdHJ1ZTsKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSBmYWxzZTsKLSNl
bHNlCi0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKLSAgICAgICAgYm9v
bCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOwotI2VuZGlmCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAg
U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworCisgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lz
dGVyLCBvciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxz
bywgbG9vayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQg
Z2VuZXJhdGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAg
ICAgICAgbV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51
bmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCks
IHRlbXBHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOwogCi0gICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5l
Q29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7
Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJ
Qyhhcml0aFByb2ZpbGUpOwotICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViT3B0aW1pemU7Ci0gICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgc29tZSB3YXkgdG8g
ZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBjaGVjayA9IG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVz
dWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOwogCi0gICAgICAgIGNvbXBpbGVNYXRoSUMobm9k
ZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNo
aW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgICAgIC8vIEZJWE1FOiBz
aG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJlY292ZXJ5PworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisK
KyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRvIGZyZWUgdGVtcEdQUj8K
KyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIC8vIEZJ
WE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAogCi0gICAgQVNT
RVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2lu
ZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21waWxlVmFsdWVBZGQv
Y29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3QgVmFsdWVTdWI/Cisg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpIHsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChsZWZ0
Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGlsZCk7CisgICAgICAg
IEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1Zh
bHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0gICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0R1BS
ID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7Cisg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKIAotICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblN1YkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwor
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0g
dHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOworI2Vsc2UKKyAgICBi
b29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJS
ZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
bV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChi
eXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9
IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMobm9kZSwgc3ViSUMs
IG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNoaW5nRnVuY3Rp
b24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgcmV0dXJuOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBSZXBhdGNoaW5nRnVuY3Rpb24sIHR5cGVuYW1l
IE5vblJlcGF0Y2hpbmdGdW5jdGlvbj4KQEAgLTQ2MTMsNiArNDc3OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gSW4gYWxsIG90aGVyIGNh
c2VzIHRoZSBub2RlIHNob3VsZCBoYXZlIGJlZW4gdHJhbnNmb3JtZWQgaW50byBhbiBhZGQgb3Ig
YSBzdWIgYnkgRml4dXBQaGFzZQorICAgIC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoaXMgaXMg
dHJ1ZSwgd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBwYXRoIGZvciBBbnlCaWdJbnQuCiAg
ICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKIAogICAg
IEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjI4LDYgKzQ3
OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkK
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUpCiB7
CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCwgYXQgbGVhc3QgZm9yIEJpZ0ludDMyLCBi
dXQgcHJvYmFibHkgYWxzbyBmb3IgSGVhcEJpZ0ludCBoZXJlLgogICAgIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKQEAgLTQ4MDgsMjkgKzQ5NzYsNjMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYg
bGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUt
PmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYm
IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAg
IC8vIEZJWE1FOiB0aGUgY29kZSBiZXR3ZWVuIGNvbXBpbGVWYWx1ZUFkZCwgY29tcGlsZVZhbHVl
U3ViIGFuZCBjb21waWxlVmFsdWVNdWwgZm9yIEJpZ0ludDMyIGlzIG5lYXJseSBpZGVudGljYWws
IHNvIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBkdXBsaWNhdGlvbi4KKyAgICAgICAgU3BlY3VsYXRl
QmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVj
dWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lzdGVyLCBvciBj
YW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxzbywgbG9vayBp
bnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQgZ2VuZXJhdGVk
IGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAgbV9q
aXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0lu
dDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCksIHRlbXBHUFIp
OworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisgICAgICAgIC8vIEZJ
WE1FOiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaE11bDMyKE1hY3JvQXNz
ZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOworCisgICAg
ICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJl
Y292ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygp
LCAwLCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRv
IGZyZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJp
Z0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVn
IGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5n
cHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAg
ICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVI
ZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25N
dWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5v
dE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8
fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0Lmpz
VmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFs
dWVSZWdzKCk7CiAKQEAgLTUwMTAsMjkgKzUyMTIsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+
Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAg
aWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2lu
ZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJp
Z0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9m
IGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4KKworICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdwcigp
OwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVj
dWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50
KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0
Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3RO
dW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5v
ZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwot
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAo
aXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJp
Z2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBs
ZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRS
ZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTA0Niw2ICs1MjUyLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2Up
KTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwogICAgIE9wdGlvbmFsPEpT
VmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NSwyOSArNTUwMywzMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hp
bGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQy
KCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAg
IC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28g
dGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBN
b2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdo
dEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwot
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVy
YW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIG9w
MSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1
ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUsIHJp
Z2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsK
ICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKQEAgLTU4NTksMzAgKzYwNzEsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+
Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAg
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTog
ZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgZm9yIFBvdz8gSSBleHBlY3QgaXQg
d291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0
KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0JpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0Lmdy
YXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5i
aW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2Us
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxk
KTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVm
dFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0g
cmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMCw2ICs2MjQ1LDEyIEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7
CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29tcGls
ZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjA1Nyw2ICs2Mjc4LDggQEAgYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgICAgIGNvbXBpbGVTdHJpbmdJZGVudENvbXBh
cmUobm9kZSwgY29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAK
KyAgICAvLyBGSVhNRTogYWRkIEhlYXBCaWdJbnQgY2FzZSBoZXJlIChhbmQgYWRkIGEgY29ycmVz
cG9uZGluZyB0ZXN0LCB3ZSBzaG91bGQgcmVhbGx5IGhhdmUgY2F1Z2h0IHRoaXMpCiAKICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChCb29sZWFuVXNlKSkgewpAQCAtNjEzNiw3ICs2MzU5LDI0IEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAg
IHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Cisg
ICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAg
IE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAg
ICAgICAgICAgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleElu
QmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0g
YnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1
bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAg
ICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTgzLDggKzY0
MjMsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5v
ZGUpOworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKQEAgLTYyNzgsOCArNjUxOCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9V
bnR5cGVkRXF1YWxpdHkobm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50
VXNlKSk7CiAgICAgcmV0dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAKQEAg
LTEwNTQxLDE4ICsxMDc4MSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1i
b2woRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BS
UmVnIGNlbGwpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2Ug
ZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9q
aXQuYnJhbmNoSWZOb3RCaWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFw
QmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5
cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQo
ZWRnZSwgb3BlcmFuZC5ncHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVy
YW5kLmdwcigpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChF
ZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MpCkBAIC0xMDcyMiw4ICsxMDk2MiwxNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5
bWJvbFVzZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxhdGVC
aWdJbnQzMihlZGdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6Cisg
ICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRn
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBz
cGVjdWxhdGVTdHJpbmdPYmplY3QoZWRnZSk7CkBAIC0xMzA3MywxNyArMTMzMjEsMTggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0
ZW1wLmdwcigpOworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhl
cmUgKGFuZCBmb3IgdHlwZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMgY2Fs
bGVkIGluIHRoaXMgZmlsZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGlzQmlnSW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAK
ICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90TnVtYmVyKGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJbnQu
bGluaygmbV9qaXQpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQu
bW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9OdW1l
cmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdz
KSk7CkBAIC0xMzk0Miw5ICsxNDE5MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlUGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICBt
X2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05l
eHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBm
b3IgQmlnSW50VXNlCisgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNp
YWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5NTYsOCArMTQyMDUs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9k
ZSkKICAgICBsZWZ0LnVzZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRlQmln
SW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+
Y2hpbGQyKCksIHJpZ2h0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxk
MSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigpLCBy
aWdodEdQUik7CiAKICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2ppdC5i
cmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiMWZi
MGU4Yzk3YS4uYTY1NWRlOTgzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQUlJl
ZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2Vs
bChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisjZW5k
aWYKICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMy
KE5vZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJh
dGlvbl9HSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSosIE5v
ZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2
b2lkIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBK
SVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IHZvaWQgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5v
ZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQg
Y29tcGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklU
Q29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
RG91YmxlQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91Ymxl
Q29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUq
LCBOb2RlKiBicmFuY2hOb2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3ltYm9s
RXF1YWxpdHkoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAg
IHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdl
LCBFZGdlIHVudHlwZWRFZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICB2b2lkIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21w
YXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9p
ZCBjb21waWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRp
dGlvbik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBTbmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlv
bj4KLSAgICB2b2lkIGVtaXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlw
ZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQg
ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRP
ckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hp
ZnRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVNoaWZ0T3AoTm9kZSopOwpAQCAtMTU3OSw2ICsxNTg4LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lk
IHNwZWN1bGF0ZURvdWJsZVJlcEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQorI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOwor
ICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJl
YWxOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpA
QCAtMTYyOCw4ICsxNjQxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JT
dHJpbmdPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVn
IGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3Vs
YXRlQmlnSW50KEVkZ2UsIEdQUlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChF
ZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOwor
ICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5v
dENlbGwoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVt
cCk7CkBAIC0yNjA3LDYgKzI2MjAsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPcklu
dmFsaWQ7CiB9OwogCisjaWYgVVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAg
ICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NF
UlQobV9qaXQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAg
ICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0K
KworICAgIH5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2Nr
KG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJl
ZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmln
SW50MzIoZWRnZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKwor
ICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdl
OworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMy
KQorCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3Vy
Y2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAg
IEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBiMDE5ZDg1ZGY5Yy4uM2Vh
OWYzYzk3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE4NSw3ICs0MTg1LDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5Ogog
ICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5
IG9ubHkgdXNlZCBpbiA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKwor
ICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2Rl
LCAiSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25s
eSBiZSB0cnVlIGluIDY0IGJpdCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGIwN2NiMjU3NWQxLi45ZDg2ZDVlNDVmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM4LDcgKzEzOCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0
YUZvcm1hdEpTQm9vbGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBj
YXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAt
MzQwLDggKzM0MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtl
biA9IHRtcDsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJn
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3Bl
Y3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEu
Z3ByKCk7CiAgICAgR1BSUmVnIGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQz
ICszNjcsNjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0
cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25a
ZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0
KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsK
LSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5j
aElmSW50MzIoYXJnMUdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUg
PSBtX2ppdC5icmFuY2hJZk51bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1f
aml0KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElm
SW50MzIoYXJnMkdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0g
bV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9q
aXQpOwotICAgICAgICAKLSAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5v
dEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0g
ICAgICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29D
ZWxsc0Nhc2UubGluaygmbV9qaXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8g
KGFzc3VtaW5nICdpbnZlcnQnIHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERv
dWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
ICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAg
ICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aDsKKyAgICAgICAgIGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMg
ZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwg
d2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZl
bHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAg
ICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBh
ZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdo
IGJpdHMgYXQgMAorICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVu
IDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcg
b25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOwor
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2pp
dC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhp
Z2hCaXRzKSwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIo
KSwgcmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4
dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAg
ICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkp
OworCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQ
UiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91
YmxlLmxpbmsoJm1faml0KTsKLSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAg
ICAgICAKLSAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0g
ICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8g
YSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJp
Z0ludCA9PT0gQmlnSW50MzIpCisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50
MzIsIHdlIG9ubHkgaGF2ZSB0byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFy
ZSBjZWxscyAoZm9yIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3Ry
aW5nKQorICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRv
IGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMg
Q2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMg
Q2VsbCkKKyAgICAgICAgLy8gICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAg
ICAgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0
IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdo
dCkgaXMgQ2VsbCkKKyAgICAgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUg
dG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAg
ICAgIElmIGF0IGxlYXN0IG9uZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwg
YmUgMC4KKyAgICAgICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhl
biB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVk
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BS
LCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BS
LCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2Vu
IDogbm90VGFrZW4pOworCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpKTsKKwogICAg
ICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxl
cjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChu
b3RUYWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVl
cGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTog
c29tZSBvZiB0aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZl
UGVlcGhvbGVTdHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
ICAgIEpTVmFsdWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFs
dWVSZWdzIGFyZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BS
ID0gYXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwpAQCAtNDI4LDMzICs0NTcsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQog
ICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQot
ICAgIG1faml0Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIp
OworICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUg
ZmFsc2UpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAg
ICAgIGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlm
IChyZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJp
Z2h0IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1
cm4gcmVzdWx0OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhD
YXNlczsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5j
aElmQ2VsbChyZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9q
aXQuYnJhbmNoSWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0su
bGluaygmbV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFu
Y2hJZkludDMyKGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hJZk51bWJlcihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygm
bV9qaXQpOwotCi0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RF
cXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigp
LCByZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAo
KTsKLQotICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIo
KSwgYXJnMlJlZ3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxl
ZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGlu
c3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQg
YnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlm
IGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtl
IGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlz
IG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJp
dCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4K
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIs
IHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAg
ICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJl
c3VsdEdQUik7CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9m
SGlnaEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCks
IHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2Vz
dE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1Bh
dGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBt
X2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1
bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQo
SklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0
IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJh
bmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2Ug
ZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRo
IGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0lu
dCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJh
bmNoZXMsIHdlIGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8g
MS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQg
fCByaWdodCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFy
ZSAwIgorICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAo
bGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYg
cmlnaHQpIGlzIENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUg
dG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAg
SWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAw
LgorICAgIC8vICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdP
dGhlcicgdGFnIHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVT
RShCSUdJTlQzMikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIp
OworI2Vsc2UKKyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Cisj
ZW5kaWYKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0
R1BSKSk7CiAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVy
dCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQ
Uik7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNl
cywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwogCisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQ
Uik7CisKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwMyw2ICsxMDU5LDgg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdl
IGVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgog
ICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUy
OgorICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmln
SW50MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAi
QmFkIGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMjM0LDYgKzEy
OTIsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRn
ZSkKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUy
OgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJp
Z0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMzExLDYgKzEzNzEsOCBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAgICBjYXNlIERhdGFGb3Jt
YXRTdG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1h
dFN0cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0
YUZvcm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1
cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBA
IC0xMzE5LDYgKzEzODEsMTA5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIH0KIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQzMikpCisgICAgICAgIHJldHVybjsKKwor
ICAgIChTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQoRWRnZSBlZGdlKQoreworICAg
IGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KHZhbHVlUmVncyk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCB2YWx1ZVJlZ3MuZ3By
KCkpOworICAgIG5vdENlbGwubGluaygmbV9qaXQpOworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSkuZ3ByKCk7Cit9CisK
K0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkK
K3sKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAg
ICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXIodmFsdWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkg
eworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAg
ICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rl
cih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkp
IHsKKyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOworCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAg
ICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVmFsdWUpKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1f
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHJldHVybiBn
cHI7CisgICAgICAgIH0KKworICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8uZmls
bEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIGlmICh0eXBl
ICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAg
ICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNo
SWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAg
dW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1f
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0JpZ0ludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAg
ICBtX2dwcnMubG9jayhncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNh
c2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAg
ICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBpZiAodHlwZSAmIH5TcGVjQmlnSW50MzIp
IHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3By
KSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIoZ3ByKSk7CisgICAgICAgICAgICBHUFJSZWcg
dGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihncHIsIHRlbXBHUFIpKTsKKyAgICAgICAgICAgIHVubG9jayh0ZW1wR1BSKTsK
KyAgICAgICAgfQorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2Fz
ZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNl
IERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCks
IG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBkYXRh
IGZvcm1hdCIpOworICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
U3RyaWN0RXF1YWxpdHkoRWRnZSBvYmplY3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU1LDYg
KzE3MjAsNTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFu
Y2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsK
IH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJ
bnQzMkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uZGl0aW9uKQoreworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9w
MSwgb3AyKTsKKworICAgIGlmIChjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8
IGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpIHsKKyAgICAgICAgLy8gTm8g
bmVlZCB0byB1bmJveCB0aGUgb3BlcmFuZHMsIHNpbmNlIHRoZSB0YWcgYml0cyBhcmUgaWRlbnRp
Y2FsCisgICAgICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdw
cigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
KyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2pp
dC5tb3ZlKG9wMi5ncHIoKSwgdGVtcC5ncHIoKSk7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50
MzIodGVtcC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIHJlc3Vs
dC5ncHIoKSwgdGVtcC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICB9CisKKyAgICAvLyBJZiB3
ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1faml0
Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwor
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0
SlNCb29sZWFuKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmln
SW50MzJCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIC8vIE90aGVyIGNvbmRpdGlvbnMg
d291bGQgcmVxdWlyZSB1bmJveGluZyB0aGUgQmlnSW50MzIgdG8gZ2V0IGNvcnJlY3QgcmVzdWx0
cyBvbiBuZWdhdGl2ZSBudW1iZXJzLgorICAgIEFTU0VSVChjb25kaXRpb24gPT0gTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsIHx8IGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpOwor
CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2Vu
LmJsb2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0
YSgpLT5ub3RUYWtlbi5ibG9jazsKKworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2ls
bCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3
aXRjaCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNv
IHdlIGNhbiBmYWxsIHRocm91Z2guCisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7Cisg
ICAgICAgIGNvbmRpdGlvbiA9IEpJVENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAg
ICAgQmFzaWNCbG9jayogdG1wID0gdGFrZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47Cisg
ICAgICAgIG5vdFRha2VuID0gdG1wOworICAgIH0KKworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3Bl
cmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgYnJhbmNoNjQoY29uZGl0aW9u
LCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgdGFrZW4pOworICAgIGp1bXAobm90VGFrZW4pOworfQor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNv
bXBhcmVFcVB0cihOb2RlKiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQwODYsNiArNDMwMCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNh
c2UgSXNCaWdJbnQ6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZS5ncHIo
KSk7CisKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6QmlnSW50MzJN
YXNrKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQuYW5kNjQodmFsdWUuZ3ByKCksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWws
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udGludWF0aW9uID0gbV9qaXQu
anVtcCgpOworCisgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIG1faml0LmNvbXBh
cmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihI
ZWFwQmlnSW50VHlwZSksIHJlc3VsdC5ncHIoKSk7CisKKyAgICAgICAgY29udGludWF0aW9uLmxp
bmsoJm1faml0KTsKKyAgICAgICAgYmxlc3NCb29sZWFuKHJlc3VsdC5ncHIoKSk7CisgICAgICAg
IGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggYjNlNDFkOGQ3
ZTEuLmRmYTdjNjNlZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTEyNSw3ICsxMjUsOCBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRBbmQ6
CiAgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6IHsKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIG1heWJlIHN1cHBvcnQgdGhlIGNhc2Ugd2hlcmUgb25lIG9wZXJhbmQgaXMgYWx3YXlzIEhl
YXBCaWdJbnQgYW5kIHRoZSBvdGhlciBpcyBhbHdheXMgQmlnSW50MzI/CisgICAgICAgICAgICBp
ZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG1fbm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEhlYXBCaWdJbnRVc2UpCiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM3NSw3ICszNzYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgaWYg
KG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKIAog
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNw
cAppbmRleCA4ZWY3M2I2ZjJlOC4uYWI2MzFjOWNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NSw4ICsxNDUsMTQgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNlIFN5bWJvbFVz
ZToKICAgICAgICAgb3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQmlnSW50VXNlOgotICAgICAgICBvdXQucHJpbnQoIkJpZ0ludCIpOworICAgIGNhc2UgQW55
QmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkFueUJpZ0ludCIpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkhlYXBCaWdJ
bnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIG91
dC5wcmludCgiQmlnSW50MzIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nT2Jq
ZWN0VXNlOgogICAgICAgICBvdXQucHJpbnQoIlN0cmluZ09iamVjdCIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuaAppbmRleCA5YzEzYzViY2QzNS4uZjRmN2IzM2JiNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsOSBAQCBl
bnVtIFVzZUtpbmQgewogICAgIEtub3duU3RyaW5nVXNlLAogICAgIEtub3duUHJpbWl0aXZlVXNl
LCAvLyBUaGlzIGJpemFycmUgdHlwZSBhcmlzZXMgZm9yIG9wX3N0cmNhdCwgd2hpY2ggaGFzIGEg
Ynl0ZWNvZGUgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBvbmx5IHNlZSBwcmltaXRpdmVzIChpLmUu
IG5vdCBvYmplY3RzKS4KICAgICBTeW1ib2xVc2UsCi0gICAgQmlnSW50VXNlLAorICAgIEFueUJp
Z0ludFVzZSwKKyAgICBIZWFwQmlnSW50VXNlLAorICAgIEJpZ0ludDMyVXNlLAogICAgIERhdGVP
YmplY3RVc2UsCiAgICAgTWFwT2JqZWN0VXNlLAogICAgIFNldE9iamVjdFVzZSwKQEAgLTE1Miw4
ICsxNTQsMTIgQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1
c2VLaW5kKQogICAgICAgICByZXR1cm4gU3BlY0hlYXBUb3AgJiB+U3BlY09iamVjdDsKICAgICBj
YXNlIFN5bWJvbFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAgICAgICAgIHJldHVybiBTcGVjQmlnSW50
OworICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50
OworICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAg
ICAgY2FzZSBQcm9taXNlT2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmpl
Y3Q7CiAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgpAQCAtMjEyLDI0ICsyMTgsNiBAQCBpbmxpbmUg
Ym9vbCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKICAgICByZXR1cm4gIXNob3VsZE5v
dEhhdmVUeXBlQ2hlY2soa2luZCk7CiB9CiAKLWlubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtp
bmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEludDMyVXNlOgotICAg
IGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6Ci0gICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFVzZToK
LSAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6Ci0gICAgY2FzZSBBbnlJbnRVc2U6Ci0gICAgY2Fz
ZSBEb3VibGVSZXBBbnlJbnRVc2U6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIGlubGluZSBib29sIGlzRG91Ymxl
KFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTI2MSw3ICsyNDksNyBA
QCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU3RyaW5nVXNlOgog
ICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgY2FzZSBC
aWdJbnRVc2U6CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgIGNhc2UgU3RyaW5nT2JqZWN0
VXNlOgogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBEYXRlT2Jq
ZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDVjNjlkMWQzOGMxLi4yZmQ5NzFlNjI3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjYwLDYgKzI2MCw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSXNVbmRlZmlu
ZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBj
YXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmpl
Y3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTQ4Miw3ICs0ODMsOSBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBT
dHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVj
dFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgICAgICAgICBj
YXNlIEJpZ0ludFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAg
ICAgICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgSGVhcEJp
Z0ludFVzZToKICAgICAgICAgICAgICAgICBjYXNlIERhdGVPYmplY3RVc2U6CiAgICAgICAgICAg
ICAgICAgY2FzZSBNYXBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTZXRPYmplY3RV
c2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKaW5k
ZXggNWI0OTI1Y2ZmYmMuLmMwZjRmMmIwNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCkBAIC01OCw2ICs1OCw5IEBAIHZvaWQgQ29tbW9uVmFs
dWVzOjppbml0aWFsaXplQ29uc3RhbnRzKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Js
b2NrKiBibG9jCiAgICAgaW50UHRyVGhyZWUgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAzKTsKICAgICBpbnRQdHJFaWdodCA9IGJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDgpOwogICAgIGRvdWJsZVplcm8gPSBi
bG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGJpZ0ludDMyWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSlNWYWx1ZTo6QmlnSW50MzJUYWcpOworI2VuZGlm
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbW1vblZhbHVlcy5oCmluZGV4IGMxZDZkNWE1NTFkLi4zMWEzOTMyOTA1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCkBAIC01Niw3ICs1
NiwxMCBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGludFB0clRocmVlIHsgbnVsbHB0ciB9OwogICAg
IExWYWx1ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKICAgICBMVmFsdWUgZG91YmxlWmVybyB7
IG51bGxwdHIgfTsKLSAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGJpZ0ludDMy
WmVybyB7IG51bGxwdHIgfTsKKyNlbmRpZgorCiAgICAgY29uc3QgdW5zaWduZWQgcmFuZ2VLaW5k
IHsgMCB9OwogICAgIGNvbnN0IHVuc2lnbmVkIHByb2ZLaW5kIHsgMCB9OwogICAgIGNvbnN0IExW
YWx1ZSBicmFuY2hXZWlnaHRzIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDgwMzYzOTA3YjllLi41MzFkMTNkNjM0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTEzNTMsNiArMTM1Myw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNOdW1iZXI6CiAgICAg
ICAgICAgICBjb21waWxlSXNOdW1iZXIoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIElzQmlnSW50OgorICAgICAgICAgICAgY29tcGlsZUlzQmlnSW50KCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAgICBjb21w
aWxlTnVtYmVySXNJbnRlZ2VyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxMzUsMTEgKzIx
MzgsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9k
ZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJp
Z0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94Qmln
SW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5z
cGVjdWxhdGVBZGQodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVz
c1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmln
aW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1
bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTU2LDExICsy
MTc2LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hC
aWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJp
Z0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQu
c3BlY3VsYXRlU3ViKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxl
c3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3Jp
Z2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVz
dWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkhlYXBC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjE3NywxMSArMjIxNCwyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5j
aGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVk
TGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJp
Z2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJl
c3VsdCA9IG1fb3V0LnNwZWN1bGF0ZU11bCh1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAg
ICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJv
eEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25N
dWxCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEhlYXBCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MjI4NSw3ICsyMzM5LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElD
KEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rp
b24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGU7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIElDIHlldC4KKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hp
bGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNW
YWx1ZShub2RlLT5jaGlsZDIoKSk7CiAKQEAgLTI1NTQsMTEgKzI2MjIsMTIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZURpdigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNl
KSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkRpdkJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25EaXZIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI2MzMsMTggKzI3MDIsMjEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1vZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50VXNlKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBhIEJpZ0ludDMyIGZhc3QgcGF0aCBoZXJl
CisgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7
CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG9wZXJhdGlvbk1vZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0
LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkpOwotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlTW9kLCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKICAgICB9CkBAIC0yODA5LDE3ICsyODgxLDIxIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21waWxlVmFsdWVQb3coKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsK
LSAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAvLyBGSVhNRTogbWF5YmUgYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBo
ZXJlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkg
eworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SGVhcEJpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgZXhw
b25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBBU1NFUlQobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUg
ZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVQb3csIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwogICAgIH0KQEAgLTMyMDAsOSArMzI3NiwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlQml0Tm90KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsK
LSAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25CaXROb3RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG9wZXJhbmQpOwor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93Qmln
SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRy
aWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwg
YW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyVGFnID09IDB4MTIpOworICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMk1hc2sgPT0gMHhmZmZlMDAw
MDAwMDAwMDEyKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tGb3JCaWdJbnQzMkJpdHMgPSAw
eDAwMDBmZmZmZmZmZjAwMDA7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0
WG9yKG9wZXJhbmQsIG1fb3V0LmNvbnN0SW50NjQobWFza0ZvckJpZ0ludDMyQml0cykpOworICAg
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzIyMCwxMSArMzMxMCwyMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0QW5kKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25v
ZGUtPmNoaWxkMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gTm8gbmVl
ZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVkIGJ5IGJpdEFuZAor
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdEFuZChsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRCaWdJbnQsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjQw
LDExICszMzQyLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRPcigpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNpbmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZl
Y3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRPcihs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNl
dEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI2
MCwxMSArMzM3NCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0WG9yKCkK
ICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JCaWdJbnQsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHRNaXNzaW5nVGFnID0gbV9vdXQuYml0WG9yKGxlZnQsIHJp
Z2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRPcihyZXN1bHRNaXNz
aW5nVGFnLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50
VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyODAsMTEgKzM0MDYsMjkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdCgpCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9u
b2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcg
c21hcnRlciBoZXJlCisgICAgICAgICAgICAvLyBUaGluZ3MgYXJlIGEgYml0IHRyaWNreSBiZWNh
dXNlIGEgcmlnaHQtc2hpZnQgYnkgYSBuZWdhdGl2ZSBudW1iZXIgaXMgYSBsZWZ0LXNoaWZ0IGZv
ciBCaWdJbnRzLgorICAgICAgICAgICAgLy8gU28gZXZlbiBhIHJpZ2h0IHNoaWZ0IGNhbiBvdmVy
Zmxvdy4KKworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblZhbHVl
Qml0UlNoaWZ0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MzI5NiwyNCArMzQ0MCwyNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9v
dXQuYVNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAg
ICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25z
dEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUt
PmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRo
aW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1h
bnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJpdGhC
aXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9vdXQuc2hsKAogICAgICAgICAg
ICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQo
bG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAg
ICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5j
b25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5k
IGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBC
MwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdExTaGlmdCgpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciBhZGRp
bmcgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUuCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25C
aXRMU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0zMzMwLDcgKzM0NzUsNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxTaHIoCiAgICAgICAgICAgICBsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUt
PmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAgICBtX291dC5i
aXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkp
OyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBp
cyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAog
ICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKCkKQEAgLTczNTUsNiArNzUwMCw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCkpIHsKICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzIgPSBtX291dC5u
ZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxQYXRoID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC03MzY0LDEwICs3NTEyLDE0IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgICAgIC8vIG5vdE51bWJlciBjYXNlLgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhub3ROdW1iZXIsIGNvbnRpbnVhdGlvbik7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIodmFsdWUsIHByb3Zl
blR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5v
dEJpZ0ludDMyKSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMik7Cisj
ZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsUGF0aCksIHVuc3VyZShzbG93UGF0aCkp
OwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxQYXRoKTsKLSAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoKTsKICAgICAgICAgICAg
IC8vIFdlIGhhdmUgc2V2ZXJhbCBhdHRlbXB0cyB0byByZW1vdmUgVG9OdW1lcmljLiBCdXQgVG9O
dW1lcmljIHN0aWxsIGV4aXN0cy4KQEAgLTgzMjQsNyArODQ3NiwxMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKICAgICAgICAg
ICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKICAgICAgICAgICAgIHx8
IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKQotICAgICAgICAgICAgfHwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgeworICAgICAgICAgICAgfHwgbV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgY29tcGlsZUNvbXBhcmVTdHJp
Y3RFcSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04MzY3LDcgKzg1MjIs
OTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbChsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHNpbmNlIHRoZSB0YWcgYml0cyBhcmUgdGhlIHNh
bWUgb24gYm90aCBzaWRlcworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmVxdWFs
KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbm5vdCBz
dGFydCB3aXRoIGlmIChsZWZ0ID09IHJpZ2h0KSwgYmVjYXVzZSB3ZSBtdXN0IGluc2VydCB0aGUg
cmlnaHQgY2hlY2tzIChzZWUgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIGFib3ZlKQorICAgICAg
ICAgICAgLy8gVGhlIGNvZGUgdGhhdCB3ZSBnZW5lcmF0ZSBsb29rcyBsaWtlIHRoZSBmb2xsb3dp
bmcgcHNldWRvLWNvZGU6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgIGlmIChpc0JpZ0lu
dDMyKGxlZnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIocmlnaHQpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodDsKKyAgICAgICAgICAgICAgICBD
SEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChK
U0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihyaWdodCwgdW5ib3hlZChsZWZ0KSk7CisgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChsZWZ0KSkKKyAgICAgICAgICAg
ICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGwoSlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIobGVmdCwgdW5ib3hlZChyaWdodCkpOworICAgICAg
ICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAgICAgICAgIHJldHVybiBj
YWxsKEpTQmlnSW50OjplcXVhbHMobGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgICovCisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBib3RoQXJlQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgb25seUxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc05vdEJpZ0ludDMyID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRFcXVhbHNSaWdodCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNIZWFwQmln
SW50ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNC
aWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayByaWdo
dElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKGlzQmlnSW50MzIobGVmdCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVu
c3VyZShsZWZ0SXNCaWdJbnQzMiksIHVuc3VyZShsZWZ0SXNOb3RCaWdJbnQzMikpOworCisgICAg
ICAgICAgICAvLyBGSVhNRTogc2V0IHRoZSBvcmRlciBvZiB0aGUgYmxvY2tzIHRvIG1heGltaXpl
IGZhbGx0aHJvdWdoCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNCaWdJbnQzMik7
CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdodCwgcHJvdmVuVHlwZSht
X25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShib3RoQXJlQmlnSW50MzIpLCB1bnN1cmUob25seUxl
ZnRJc0JpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJvdGhBcmVCaWdJ
bnQzMik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoQXJlQmlnSW50MzIg
PSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ob25s
eUxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3du
V2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hl
ZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
cmVzdWx0TGVmdElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIHJpZ2h0LCB1bmJveGVkTGVmdCkpKTsKKyAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25v
d25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5j
aChtX291dC5lcXVhbChsZWZ0LCByaWdodCksIHVuc3VyZShsZWZ0RXF1YWxzUmlnaHQpLCB1bnN1
cmUobGVmdElzSGVhcEJpZ0ludCkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0
RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0TGVmdEVxdWFs
c1JpZ2h0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVm
dElzSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdo
dCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShyaWdodElzQmlnSW50MzIp
LCB1bnN1cmUocmlnaHRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHJpZ2h0SXNCaWdJbnQzMik7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0g
dW5ib3hCaWdJbnQzMihyaWdodCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRS
aWdodElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGxlZnQsIHVuYm94ZWRSaWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRJ
c05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hl
dGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4
dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZv
ciBiaWcgaW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEhl
YXBCaWdJbnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
ZWZ0LCByaWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIHNl
dEJvb2xlYW4obV9vdXQucGhpKEludDMyLCByZXN1bHRCb3RoQXJlQmlnSW50MzIsIHJlc3VsdExl
ZnRJc0JpZ0ludDMyLCByZXN1bHRMZWZ0RXF1YWxzUmlnaHQsIHJlc3VsdFJpZ2h0SXNCaWdJbnQz
MiwgcmVzdWx0Qm90aEhlYXBCaWdJbnQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsKICAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEo
KSwga2luZCk7CkBAIC04NDUwLDExICs4NjkyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmln
SW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJ
bnRVc2UKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2Up
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lh
bGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg5NQotICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwog
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVhbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKQEAgLTg1NDAsNiArODc4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2UgY2FuIGRvIHNvbWV0aGlu
ZyBtdWNoIHNtYXJ0ZXIgaGVyZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2ZUpJVCBhcHByb2FjaCBp
biBlLmcuIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEKICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkpOwogICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBhcmUoCiAgICAgICAgICAg
ICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKQEAgLTEwNTA0LDcgKzEwNzQ3LDMx
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgdHJ1ZVJlc3VsdCwgZmFs
c2VSZXN1bHQsIHBhdGNocG9pbnRSZXN1bHQpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNv
bXBpbGVJc0JpZ0ludCgpCisgICAgeworICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGRlYWxpbmcg
d2l0aCBCaWdJbnQzMiwgd2Ugc2hvdWxkIGp1c3QgZW1pdCBJc0NlbGxXaXRoVHlwZShIZWFwQmln
SW50KQorICAgICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKworICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2Nr
IGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05v
dENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNDZWxs
KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbENhc2Up
LCB1bnN1cmUoaXNOb3RDZWxsQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSwgaXNDZWxsQ2FzZSk7CisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoaXNCaWdJbnQzMih2YWx1
ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGlu
dWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hv
cihpc0NlbGxXaXRoVHlwZSh2YWx1ZSwgbV9ub2RlLT5xdWVyaWVkVHlwZSgpLCBtX25vZGUtPnNw
ZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhp
KEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CisgICAgfQogICAgIHZvaWQgY29t
cGlsZUlzQ2VsbFdpdGhUeXBlKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CkBAIC0xNDIxNCw5ICsxNDQ4MSwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZW1pdEJpbmFyeVNuaXBwZXQoSl9KSVRPcGVyYXRpb25fR0pKIHNsb3dQ
YXRoRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwotICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogCiAgICAg
ICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkucmVzdWx0VHlwZSgpKTsKQEAgLTE0Mjgy
LDggKzE0NTUxLDExIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpOworICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CiAKICAgICAg
ICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQ4OTUs
NyArMTUxNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJbXBs
ZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAgICAgICAg
IC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlz
IHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgICAgICAgICAvLyAgICAgaWYgKHZhbHVl
IGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgICAgICAgICAgLy8gICAgICAg
ICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAgICAgICAgIC8vICAgICBlbHNlIHsKICAg
ICAgICAgICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVu
ZGVmaW5lZApAQCAtMTQ5MDUsNiArMTUxNzcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8g
ICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAgICAgICAgIC8vIH0gZWxzZSBp
ZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eERvdWJsZSh2YWx1ZSkKKyAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50
MzIpIHsKKyAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAodmFsdWUgIT0gQmlnSW50MzJUYWcp
CiAgICAgICAgICAgICAvLyB9IGVsc2UgewogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9IHZh
bHVlID09IGpzVHJ1ZQogICAgICAgICAgICAgLy8gfQpAQCAtMTQ5MTIsMTMgKzE1MTg2LDE3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHN0cmluZ0Nhc2UgPSBtX291dC5uZXdC
bG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdPckJpZ0ludENhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgaGVhcEJpZ0ludENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nTm9y
SGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgaW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdEludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdERvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygp
OworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxv
Y2s+IHJlc3VsdHM7CkBAIC0xNDkzMiwyMCArMTUyMTAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nQ2FzZSwgc3RyaW5nQ2Fz
ZSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgaXNCaWdJbnQo
dmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCi0gICAg
ICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2UpLCB1bnN1cmUobm90U3RyaW5nT3JCaWdJbnRD
YXNlKSk7CisgICAgICAgICAgICAgICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVk
Z2UpICYgKFNwZWNDZWxsIC0gU3BlY1N0cmluZykpLAorICAgICAgICAgICAgICAgIHVuc3VyZSho
ZWFwQmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSkpOwogCi0g
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nhc2UsIGhlYXBCaWdJbnRDYXNlKTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5ub3RFcXVhbCh2YWx1ZSwg
d2Vha1BvaW50ZXIoanNFbXB0eVN0cmluZyhtX2dyYXBoLm1fdm0pKSkpKTsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
YmlnSW50Q2FzZSwgbm90U3RyaW5nT3JCaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGhlYXBCaWdJbnRDYXNlLCBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSk7CiAgICAg
ICAgICAgICBMVmFsdWUgbm9uWmVyb0JpZ0ludCA9IG1fb3V0Lm5vdFplcm8zMigKICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZSh2YWx1ZSwgbV9oZWFwcy5KU0JpZ0ludF9s
ZW5ndGgpKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihub25aZXJv
QmlnSW50KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ09yQmlnSW50Q2FzZSwg
bm90Q2VsbENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nTm9ySGVh
cEJpZ0ludENhc2UsIG5vdENlbGxDYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBpc1RydXRoeU9i
amVjdDsKICAgICAgICAgICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZCgpKQogICAgICAgICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQuYm9v
bGVhblRydWU7CkBAIC0xNDk4OCw4ICsxNTI2NiwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHVuYm94RG91YmxlKHZhbHVlKSwgbV9vdXQuY29uc3REb3VibGUoMCkpOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGRvdWJsZUlzVHJ1dGh5KSk7CiAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3VibGVDYXNlLCBiaWdJbnQzMkNhc2UpOworICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgIGlzQmlnSW50MzIodmFsdWUs
IHByb3ZlblR5cGUoZWRnZSkgJiB+U3BlY0NlbGwpLAorICAgICAgICAgICAgICAgIHVuc3VyZShi
aWdJbnQzMkNhc2UpLCB1bnN1cmUobm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGJpZ0ludDMyQ2FzZSwgbm90QmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAg
IExWYWx1ZSBiaWdJbnQzMk5vdFplcm8gPSBtX291dC5ub3RFcXVhbCh2YWx1ZSwgbV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKGJpZ0ludDMyTm90WmVybykpOworICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCisgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhub3RCaWdJbnQzMkNhc2UsIGNvbnRpbnVhdGlvbik7CisjZWxzZQogICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90RG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyNlbmRpZgogICAgICAg
ICAgICAgTFZhbHVlIG1pc2NJc1RydXRoeSA9IG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAg
IHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkp
KSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobWlzY0lzVHJ1dGh5
KSk7CkBAIC0xNTU5NCwxMyArMTU4ODYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gICAgICAg
ICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIHN0cmluZykgewogICAgICAgICAvLyAg
ICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50
KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vICAgICB9IGVsc2UgewogICAgICAg
ICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKICAgICAgICAgLy8gICAgIH0KICAgICAgICAgLy8g
fSBlbHNlIGlmIChpcyBudW1iZXIpIHsKICAgICAgICAgLy8gICAgIHJldHVybiBudW1iZXIKKyAg
ICAgICAgLy8gfSBlbHNlIGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJu
IGJpZ2ludAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIG51bGwpIHsKICAgICAgICAgLy8gICAg
IHJldHVybiBvYmplY3QKICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBib29sZWFuKSB7CkBAIC0x
NTYyOCw2ICsxNTkyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbnVtYmVyQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlckNhc2UgPSBt
X291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgTEJhc2ljQmxvY2sg
bm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNlbmRpZgogICAgICAgICBMQmFz
aWNCbG9jayBub3ROdWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Js
b2NrIGJvb2xlYW5DYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
dW5kZWZpbmVkQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC0xNTY4MCw3ICsxNTk3Nyw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nQ2FzZSwgYmlnSW50
Q2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIGlzQmlnSW50KHZhbHVl
LCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNwZWNPYmplY3QgLSBTcGVjU3RyaW5n
KSksCisgICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYg
KFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKICAgICAgICAgICAgIHVuc3Vy
ZShiaWdJbnRDYXNlKSwgdW5zdXJlKHN5bWJvbENhc2UpKTsKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhiaWdJbnRDYXNlLCBzeW1ib2xDYXNlKTsKQEAgLTE1Njk2LDggKzE1OTkzLDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhudW1iZXJDYXNlLCBub3RO
dW1iZXJDYXNlKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpOdW1iZXIpOwotICAgICAg
ICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVy
Q2FzZSwgbm90QmlnSW50MzJDYXNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIo
dmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgflNwZWNDZWxsKSwgdW5zdXJlKGJpZ0ludENhc2Up
LCB1bnN1cmUobm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90
QmlnSW50MzJDYXNlLCBub3ROdWxsQ2FzZSk7CisjZWxzZQogICAgICAgICBtX291dC5hcHBlbmRU
byhub3ROdW1iZXJDYXNlLCBub3ROdWxsQ2FzZSk7CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGlz
TnVsbDsKICAgICAgICAgaWYgKHByb3ZlblR5cGUoY2hpbGQpICYgU3BlY090aGVyKQogICAgICAg
ICAgICAgaXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6VmFsdWVOdWxsKSk7CkBAIC0xNjM4OCwxNSArMTY2OTIsMzMgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBMVmFsdWUgbG93QmlnSW50KEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQorICAgIExWYWx1ZSBsb3dIZWFwQmlnSW50KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09
IEhlYXBCaWdJbnRVc2UpOwogCiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBsb3dDZWxsKGVkZ2Us
IG1vZGUpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgbG93QmlnSW50
MzIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUg
PT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKTsKKworICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVz
LmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBGVExfVFlQ
RV9DSEVDSyhqc1ZhbHVlVmFsdWUocmVzdWx0KSwgZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05vdEJp
Z0ludDMyKHJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAg
ICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CisgICAgICAgIHJldHVybiBtX291dC5iaWdJbnQz
Mlplcm87CisgICAgfQorI2VuZGlmCisKICAgICBMVmFsdWUgbG93Tm9uTnVsbE9iamVjdChFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKTsKQEAg
LTE2NTgyLDcgKzE2OTA0LDcyIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9v
dXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIEludDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0K
LSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgaXNCaWdJbnQzMihMVmFsdWUg
anNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAg
ICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIFNwZWNCaWdJbnQzMikp
CisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwo
CisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIGlzTm90QmlnSW50MzIoTFZhbHVl
IGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAg
ICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0JpZ0ludDMy
KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5ub3RF
cXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0
KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgdW5ib3hCaWdJbnQzMihM
VmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5jYXN0VG9JbnQzMiht
X291dC5sU2hyKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoMTYpKSk7CisgICAgfQorICAgIExW
YWx1ZSBib3hCaWdJbnQzMihMVmFsdWUgaW50MzJWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX291dC5iaXRPcigKKyAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0KGludDMy
VmFsdWUsIEIzOjpJbnQ2NCksIG1fb3V0LmNvbnN0SW50NjQoMTYpKSwKKyAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVl
IGlzTm90QW55QmlnSW50KExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3Bl
Y0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFs
dWUodHlwZSwgflNwZWNCaWdJbnQpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAg
ICAgICAvLyBpZiAoaXNCaWdJbnQzMikKKyAgICAgICAgLy8gICByZXR1cm4gZmFsc2UKKyAgICAg
ICAgLy8gaWYgKCFpc0NlbGwpCisgICAgICAgIC8vICAgcmV0dXJuIHRydWU7CisgICAgICAgIC8v
IHJldHVybiAhaXNIZWFwQmlnSW50CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQmlnSW50MzJDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RCaWdJbnQzMkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIoanNWYWx1ZSwg
dHlwZSksIHVuc3VyZShpc0JpZ0ludDMyQ2FzZSksIHVuc3VyZShpc05vdEJpZ0ludDMyQ2FzZSkp
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQmlnSW50MzJDYXNlKTsKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgcmV0dXJuRmFsc2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNl
KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGlzTm90QmlnSW50MzJDYXNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChq
c1ZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoaXNOb3RDZWxsQ2FzZSkp
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzTm90Q2VsbENhc2UpOworICAgICAgICBWYWx1
ZUZyb21CbG9jayByZXR1cm5UcnVlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsK
KyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGlzQ2VsbENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5Jc05vdEhlYXBC
aWdJbnQgPSBtX291dC5hbmNob3IoaXNOb3RIZWFwQmlnSW50KGpzVmFsdWUpKTsKKyAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbik7CisgICAgICAgIHJldHVybiBtX291dC5waGkoSW50MzIsIHJldHVybkZhbHNlLCBy
ZXR1cm5UcnVlLCByZXR1cm5Jc05vdEhlYXBCaWdJbnQpOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCisKICAgICBMVmFsdWUgaXNDZWxsT3JNaXNjKExWYWx1ZSBqc1ZhbHVlLCBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVl
IHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0NlbGxDaGVjayB8IFNwZWNNaXNjKSkK
QEAgLTE2ODk0LDggKzE3MjgxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQm9vbGVhblVz
ZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xlYW4oZWRnZSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
ZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAg
ICAgICAgICAgc3BlY3VsYXRlQmlnSW50MzIoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQo
ZWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAg
ICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
ZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6
CiAgICAgICAgICAgICBzcGVjdWxhdGVOb3RTdHJpbmdWYXIoZWRnZSk7CkBAIC0xNzA4MSwxOCAr
MTc0NzYsMzggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5z
eW1ib2xTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNOb3RCaWdJbnQo
TFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFs
dWUgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKExWYWx1ZSB2YWx1ZSwgU3BlY3Vs
YXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBw
cm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNCaWdJbnQpKQorICAg
ICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNIZWFwQmln
SW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgTEJhc2ljQmxvY2sg
aXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGVm
YXVsdFRvRmFsc2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgdHlwZSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5z
dXJlKGNvbnRpbnVhdGlvbikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgcmV0dXJuRm9yQ2VsbCA9IG1fb3V0LmFuY2hvcihpc0hlYXBCaWdJbnQodmFsdWUsIHR5
cGUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gbV9vdXQucGhpKEludDMyLCBkZWZhdWx0VG9GYWxzZSwgcmV0dXJuRm9yQ2VsbCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludChM
VmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAg
ICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwg
flNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJl
dHVybiBtX291dC5ub3RFcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZt
KCkuYmlnSW50U3RydWN0dXJlLT5pZCgpKSk7CiAgICAgfQogCi0gICAgTFZhbHVlIGlzQmlnSW50
KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZh
bHVlIGlzSGVhcEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNG
dWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVl
KHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0JpZ0ludCkpCisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVu
ID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNIZWFwQmlnSW50KSkKICAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKICAgICAg
ICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCkBA
IC0xNzU1MCwxNiArMTc5NjUsMzUgQEAgcHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9s
KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0KIAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50
KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVk
Z2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgeworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1Zh
bHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNIZWFwQmlnSW50LCBpc05vdEhlYXBCaWdJbnQoY2Vs
bCkpOworICAgIH0KKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlKQogICAg
IHsKLSAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVj
QmlnSW50LCBpc05vdEJpZ0ludChjZWxsKSk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
ZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQo
RWRnZSBlZGdlKQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2Vs
bChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgbG93Q2Vs
bChlZGdlKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVl
KHZhbHVlKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0
aGVyQ2VsbCh2YWx1ZSkpOwogICAgIH0KIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNw
ZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRM
X1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05v
dEJpZ0ludDMyKHZhbHVlKSk7CisgICAgfQorCisgICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQo
RWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdl
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1Zh
bHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50LCBpc05vdEFueUJpZ0ludCh2YWx1ZSkp
OworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBzcGVjdWxhdGVOb25OdWxsT2JqZWN0KEVkZ2Ug
ZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVl
VmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNPYmplY3QsIGlzTm90T2JqZWN0KGNlbGwpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAy
MTcxNWQzZGQyMi4uOWJiYTc0MzliY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9p
ZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwg
T1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4aXQubV9kZXNjcmlwdG9y
LT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVl
UHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkp
OworICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEp
OwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFsaXplIGFsbCBvYmplY3RzLiBEb24ndCBtYXRlcmlh
bGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IGQ1YjlhZDIyZjk1Li43YWQwNjVkY2Fj
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVp
bGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVp
bGRlci5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6
anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2RlJik+IGFsbG93TgogCiAg
ICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNzID0gMDsKICAgICAgICAgdW5zaWduZWQgbGFiZWxJ
bmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9kZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNl
bGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYg
IW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgICAgICAgICAgZmxh
Z3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vZGVGbGFnczo6SW50ZXJuYWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAppbmRleCA5OWZh
NDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDYXN0
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgot
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUg
IlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAppbmRleCA2Y2JhZWMxNjQ0My4uMDMy
NDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VB
bGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vic3Bh
Y2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAK
aW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5j
cHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmll
dyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsCiAgICAgfQogCiAg
ICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAgaWYgKGNlbGwtPmlzQmlnSW50KCkpIHsKLSAgICAg
ICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYXNCaWdJbnQoY2Vs
bCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgcmVzdWx0
U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYXNIZWFwQmlnSW50KGNlbGwpLCAx
MCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJmMjk4NGExMjg5Li5kZjEwMzI0
MzRkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToK
LSAgICBjYXNlIEJpZ0ludFR5cGU6CisgICAgY2FzZSBIZWFwQmlnSW50VHlwZToKICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9u
QXBwbHlQYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsICBhcmd1bWVudHMpKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCmluZGV4IGViODA4MmU5YjdiLi40OGVhYTQwM2QzOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4OCw3ICs2ODgs
NyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZv
bGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxs
KSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQor
ICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAg
ICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7
CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZp
bmVkCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0
VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICAvLyAg
ICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUg
aXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisg
ICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQg
PSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVz
dWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzA2LDcgKzcwOCw3IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlCiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwo
dmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVl
LnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC03MjksNyArNzMxLDcgQEAgdm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmUKICAgICBjb21wYXJlUHRyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWws
IHZhbHVlLnBheWxvYWRHUFIoKSwgcmVzdWx0LCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1
bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5r
KHRoaXMpOwogICAgIGxvYWQzMihBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6
Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHQpOwogICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVh
bCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0KTsKICAgICBkb25l
LmFwcGVuZChqdW1wKCkpOwpAQCAtNzUyLDYgKzc1NCwxNSBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZQogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBub3REb3VibGUubGluayh0aGlz
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZO
b3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVlLmdwcigpLCByZXN1bHQpOworICAgIG1vdmUo
dmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJl
c3VsdCk7CisgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwg
VHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAg
ICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgY29tcGFyZTY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWws
IHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVzdWx0KTsK
ICNlbHNlCkBAIC03NjcsNyArNzc4LDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIHsKICAg
ICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IHN0cnVjdHVyZToKICAg
ICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2
YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVu
Z3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8vICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9y
IG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtNzc3LDYgKzc4OCw4IEBAIEFzc2VtYmx5SGVs
cGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNW
YWx1ZVJlZ3MgdmFsCiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAg
ICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgIC8vICAgICByZXN1bHQgPSAh
IXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIp
IHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0g
ZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAg
LTc4Niw3ICs3OTksNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVy
czo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogCiAgICAgYXV0byBub3RD
ZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsKICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNo
SWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsKLSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNo
SWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJy
YW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkICE9IEludmFsaWRHUFJSZWcpOwpAQCAtODE3
LDcgKzgzMCw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgdHJ1dGh5LmFwcGVuZChi
cmFuY2hQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCBU
cnVzdGVkSW1tUHRyKGpzRW1wdHlTdHJpbmcodm0pKSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAo
KSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRo
aXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25a
ZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3Ro
KCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIApAQCAtODQyLDYgKzg1NSwxNSBAQCBB
c3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShW
TSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIH0KIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIG1vdmUo
dmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBz
Y3JhdGNoKTsKKyAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDog
Tm9uWmVybywgc2NyYXRjaCkpOworICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05v
dEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2g2NChpbnZlcnQgPyBOb3RFcXVhbCA6
IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4odHJ1ZSkpKSkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDY2OGYwZTVhYzE1Li5kYjY0OGFiYmIxNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTI5LDcgKzkyOSwzNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hJZk5vdEJvb2xlYW4ocmVncy50YWdHUFIoKSwg
dGVtcEdQUik7CiAjZW5kaWYKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
SnVtcCBicmFuY2hJZkJpZ0ludDMyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdp
c3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQorICAgIHsKKyAgICAgICAgSnVtcCBu
dW1iZXIgPSBicmFuY2hJZk51bWJlcihncHIsIG1vZGUpOworICAgICAgICBKdW1wIGJpZ0ludDMy
ID0gYnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUik7CisgICAgICAg
IG51bWJlci5saW5rKHRoaXMpOworICAgICAgICByZXR1cm4gYmlnSW50MzI7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVn
IHRlbXBHUFIpCisgICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsK
KyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1
ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOworICAgIH0K
KyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBH
UFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRH
UFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4g
YnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQz
MlRhZykpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAvLyBGSVhNRTog
cmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5w
dXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIp
CiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOCgKQEAgLTk1MSwxMyArOTgxLDE0IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNl
bGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkp
OwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiByZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBj
bGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0byBiZSBhIGNlbGwuCiAgICAgSnVt
cCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNl
bGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdFN0cmluZyhHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9
CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJv
bChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJv
bFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJ
Zk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxH
UFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0K
KyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4g
YnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQogICAgIEp1bXAgYnJh
bmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxH
UFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25U
eXBlKTsgfQogICAgIApAQCAtMTMzOCw2ICsxMzY5LDE5IEBAIHB1YmxpYzoKICAgICAgICAgCiAg
ICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
KworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHVuYm94QmlnSW50MzIoR1BSUmVnIGdwcikK
KyAgICB7CisgICAgICAgIHVyc2hpZnQ2NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikp
LCBncHIpOworICAgIH0KKworICAgIHZvaWQgYm94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7
CisgICAgICAgIGxzaGlmdDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7
CisgICAgICAgIG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgZ3ByKTsK
KyAgICB9CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xNzE4LDcgKzE3NjIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICAgICAgfQogICAgICAgICAvLyAgICAgfSBlbHNl
IGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAg
ICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2ludCkgeworICAgICAgICAvLyAgICAgfSBlbHNl
IGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAog
ICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9s
CkBAIC0xNzI5LDYgKzE3NzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICByZXR1cm4gb2Jq
ZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9vbGVhbikgewogICAgICAgICAvLyAgICAg
cmV0dXJuIGJvb2xlYW4KKyAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBiaWdpbnQzMikgeworICAg
ICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyB9IGVsc2UgewogICAgICAgICAv
LyAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAvLyB9CkBAIC0xNzYwLDEwICsxODA2LDEw
IEBAIHB1YmxpYzoKIAogICAgICAgICBub3RTdHJpbmcubGluayh0aGlzKTsKIAotICAgICAgICBK
dW1wIG5vdEJpZ0ludCA9IGJyYW5jaElmTm90QmlnSW50KGNlbGxHUFIpOworICAgICAgICBKdW1w
IG5vdEhlYXBCaWdJbnQgPSBicmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbEdQUik7CiAgICAgICAg
IGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBmYWxzZSk7CiAKLSAgICAgICAgbm90QmlnSW50
LmxpbmsodGhpcyk7CisgICAgICAgIG5vdEhlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICAgICAg
ZnVuY3RvcihUeXBlb2ZUeXBlOjpTeW1ib2wsIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIG5v
dENlbGwubGluayh0aGlzKTsKQEAgLTE3NzksNiArMTgyNSwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IEp1bXAgbm90Qm9vbGVhbiA9IGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLCB0ZW1wR1BSKTsKICAg
ICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCb29sZWFuLCBmYWxzZSk7CiAgICAgICAgIG5vdEJv
b2xlYW4ubGluayh0aGlzKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgSnVtcCBub3RC
aWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BS
KTsKKyAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCaWdJbnQsIGZhbHNlKTsKKyAgICAgICAg
bm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZgogICAgICAgICAKICAgICAgICAgZnVuY3Rv
cihUeXBlb2ZUeXBlOjpVbmRlZmluZWQsIHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAppbmRleCBjNmU2MWI4OWJmOS4uZDVlYTk5ZjMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTM3MCw2ICszNzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9pc191bmRlZmluZWRfb3JfbnVsbCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2lzX2Jvb2xlYW4pCiAgICAgICAgIERFRklORV9PUChvcF9pc19u
dW1iZXIpCisgICAgICAgIERFRklORV9PUChvcF9pc19iaWdfaW50KQogICAgICAgICBERUZJTkVf
T1Aob3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfY2VsbF93aXRoX3R5cGUp
CiAgICAgICAgIERFRklORV9PUChvcF9qZXFfbnVsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IDY3MTY2NjFkZjRmLi40MWY2YmY4NDhiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC01MjcsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9p
c191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9p
c19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19v
YmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2NlbGxf
d2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFf
bnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYy5jcHAKaW5kZXggM2EzMmMzMjYxODkuLmY1MGMzMDMwNjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ3Niw2ICs0NzYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQ
cm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJ
Qyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudElu
c3RydWN0aW9uLCBuZWdhdGVJQyk7CisgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0
byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4g
YmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJp
dGhOZWdhdGUpOwogfQogCkBAIC00ODQsNiArNDg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0MKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUTmVnSUMqIG5lZ0lDID0g
Yml0d2lzZV9jYXN0PEpJVE5lZ0lDKj4obV9pbnN0cnVjdGlvblRvTWF0aElDLmdldChjdXJyZW50
SW5zdHJ1Y3Rpb24pKTsKKyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwg
dGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJp
Z0ludAogICAgIGVtaXRNYXRoSUNTbG93PE9wTmVnYXRlPihuZWdJQywgY3VycmVudEluc3RydWN0
aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUsIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBmZGUwMGJjYzhjOS4uYmNi
M2ViOGNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5z
dGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgzLDYgKzI4
MywzNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNv
ZGUubV9vcGVyYW5kOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDAp
OworICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJlZ1QwKTsKKworICAgIG1vdmUoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayksIHJlZ1QxKTsKKyAgICBhbmQ2NChyZWdU
MSwgcmVnVDApOworICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpCaWdJbnQzMlRhZyksIHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVl
UmVncyB7IHJlZ1QwIH0pOworICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKworICAgIGlzQ2VsbC5s
aW5rKHRoaXMpOworICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVnVDAp
OworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CisKKyAgICBk
b25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworI2Vsc2UK
KyAgICAvLyBJZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxX
aXRoVHlwZSBpbnN0ZWFkIG9mIGlzQmlnSW50LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtNTcw
LDI4ICs1OTgsNTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMo
c3JjMSwgcmVnVDAsIHNyYzIsIHJlZ1QxKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgYm90
aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgorCisgICAgLyogQXQgYSBoaWdoIGxldmVs
IHdlIGRvIChhc3N1bWluZyAndHlwZScgdG8gYmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlz
IERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
cmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8g
ZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCisKKyAg
ICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3Vs
ZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51
bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRo
ZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9u
bHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7
CisgICAgbW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAg
ICBhZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVn
VDUpOworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChB
Ym92ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdU
MCwgcmVnVDEsIHJlZ1Q1KTsKKyAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywg
cmVnVDUpOworCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5n
cyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmln
SW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmlu
Z3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZkNlbGwocmVnVDIpKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVy
IGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmlu
ZSwgYW5kIHRoZW4gdGVzdAotICAgIC8vIGlmIGl0J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0
T0sgPSBicmFuY2hJZkludDMyKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJl
cihyZWdUMCkpOwotICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGJy
YW5jaElmSW50MzIocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1Qx
KSk7Ci0gICAgcmlnaHRPSy5saW5rKHRoaXMpOwogCi0gICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9w
U3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKLSAgICAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMSwg
cmVnVDAsIHJlZ1QwKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVn
VDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKLQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0
RXEpCisgICAgICAgIHhvcjY0KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xl
YW4ocmVnVDUsIEpTVmFsdWVSZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlZ1Q1KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYxNCwyNCArNjY1LDQ4IEBAIHZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMx
LCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNl
bGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFz
c3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8
IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgIGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdo
dCBpcyBDZWxsKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBub3RUYWtlbjsKKyAg
ICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8
fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0
IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIv
YnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMg
YW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywg
bGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIg
YXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8g
TGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgbW92ZShyZWdU
MCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOworICAgIGFkZDY0KHJlZ1Q1LCBy
ZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBsc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsKKworICAgIEp1bXAgYXJlRXF1
YWwgPSBicmFuY2g2NChFcXVhbCwgcmVnVDAsIHJlZ1QxKTsKKyAgICBpZiAodHlwZSA9PSBDb21w
aWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQorICAgICAgICBhZGRKdW1wKGFyZUVxdWFsLCB0
YXJnZXQpOworCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5n
cyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmln
SW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmlu
Z3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZkNlbGwocmVnVDIpKTsKIAotICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMg
YSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBh
bmQgdGhlbiB0ZXN0Ci0gICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9
IGJyYW5jaElmSW50MzIocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJl
Z1QwKSk7Ci0gICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNo
SWZJbnQzMihyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsK
LSAgICByaWdodE9LLmxpbmsodGhpcyk7Ci0KLSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KEVxdWFsLCByZWdU
MSwgcmVnVDApLCB0YXJnZXQpOwotICAgIGVsc2UKLSAgICAgICAgYWRkSnVtcChicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKKyAgICBpZiAodHlwZSA9PSBDb21waWxl
T3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkgeworICAgICAgICBhZGRKdW1wKGp1bXAoKSwgdGFy
Z2V0KTsKKyAgICAgICAgYXJlRXF1YWwubGluayh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNjg2LDcgKzc2MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHNyY1ZSZWcsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAg
aXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBiMTFmNjU1ZmNi
Ni4uNTZlYmZiMDg3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTI4OCw2ICsyODgsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3Jl
Qm9vbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIFdlIGVtaXQgaXNf
Y2VsbF93aXRoX3R5cGUgaW5zdGVhZCwgc2luY2UgQmlnSW50MzIgaXMgbm90IHN1cHBvcnRlZCBv
biAzMi1iaXQgcGxhdGZvcm1zLgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKQEAgLTg2Niw3ICs4NzIsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAgSnVtcCBpc05v
dENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Tm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50
KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5s
aW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
aW5kZXggMjJiOWExZDFlOWMuLjgwMDgxNDgxMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEyOTYsNiArMTI5NiwxOSBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jbwogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChnbG9iYWxPYmpl
Y3QsIHNyYzEsIHNyYzIpOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50KQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKGhlYXBCaWdJ
bnQtPmlzSGVhcEJpZ0ludCgpKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+
KGhlYXBCaWdJbnQpLT5lcXVhbHNUb0ludDMyKHNtYWxsSW50KTsKK30KKyNlbmRpZgorCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmls
ZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0yODE1LDYgKzI4MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KgogICAgIHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0
dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5k
IGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3BlcmFuZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0y
ODI3LDggKzI4NDEsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgcHJp
bVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAg
ICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYg
KHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9
IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYg
KHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAK
ICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODM2
LDYgKzI4NTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKIH0KIAorLy8gRklYTUU6IGl0
IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5j
ZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4NTAsMTAgKzI4
NzMsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJ
bnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXMo
dm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVl
LmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1
ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAg
ICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0K
KyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFw
QmlnSW50KCkpOwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsK
LQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0y
ODY0LDYgKzI4OTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0
byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4g
YmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg4NCw5ICsyOTE4LDIwIEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0g
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJ
bnQocHJpbVZhbHVlKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQz
MkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAg
ICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJp
bVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYK
KyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgp
KTsKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CkBAIC0yODk4LDYgKzI5NDMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3Nl
IG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Bl
cmFuZCwgSklUTmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTI5MTcsOSArMjk2MywxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAg
SlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgCi0g
ICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgLy8gRklYTUU6IHdoeSBkb2VzIHRoaXMgZnVuY3Rpb24gcHJv
ZmlsZSB0aGUgYXJndW1lbnQgYnV0IG5vdCB0aGUgcmVzdWx0PworICAgIGlmIChwcmltVmFsdWUu
aXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50
MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1
ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUp
OworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1W
YWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1ZS50
b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAppbmRleCA2MDBmY2EyOWRjMi4uMjA5YjNjM2Y4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yMDUsNiArMjA1LDcgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWQKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogI2lmIFVTRShKU1ZBTFVFNjQpCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogbGVmdCwgSlND
ZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGhlYXBC
aWdJbnQsIGludDMyX3Qgc21hbGxJbnQpIFdURl9JTlRFUk5BTDsKICNlbHNlCiBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4
IDUyNDM1YTY2MTIwLi4yYTJiYjk5Zjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTM2LDYgKzEzNiwxMiBAQAog
I2RlZmluZSBPRkZMSU5FX0FTTV9KU1ZBTFVFNjQgMAogI2VuZGlmCiAKKyNpZiBVU0UoQklHSU5U
MzIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0JJR0lOVDMyIDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUg
T0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTAyOTU1NDIxODkuLjFk
ZDBkZWY5Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xOTYsNiArMTk2LDExIEBAIGlmIEpTVkFMVUU2NAogICAg
IGNvbnN0IFZhbHVlTnVsbCAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1ZU51bGwKICAg
ICBjb25zdCBUYWdOdW1iZXIgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TnVtYmVyVGFnCiAg
ICAgY29uc3QgTm90Q2VsbE1hc2sgICAgID0gY29uc3RleHByIEpTVmFsdWU6Ok5vdENlbGxNYXNr
CisgICAgaWYgQklHSU5UMzIKKyAgICAgICAgY29uc3QgVGFnQmlnSW50MzIgPSBjb25zdGV4cHIg
SlNWYWx1ZTo6QmlnSW50MzJUYWcKKyAgICAgICAgY29uc3QgTWFza0JpZ0ludDMyID0gY29uc3Rl
eHByIEpTVmFsdWU6OkJpZ0ludDMyTWFzaworICAgIGVuZAorICAgIGNvbnN0IExvd2VzdE9mSGln
aEJpdHMgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cwogZWxzZQogICAgIGNv
bnN0IEludDMyVGFnID0gY29uc3RleHByIEpTVmFsdWU6OkludDMyVGFnCiAgICAgY29uc3QgQm9v
bGVhblRhZyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCb29sZWFuVGFnCkBAIC01MjEsNiArNTI2LDcg
QEAgY29uc3QgSlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlvblR5cGUKIGNvbnN0
IEFycmF5VHlwZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2ZWRBcnJheVR5cGUg
PSBjb25zdGV4cHIgRGVyaXZlZEFycmF5VHlwZQogY29uc3QgUHJveHlPYmplY3RUeXBlID0gY29u
c3RleHByIFByb3h5T2JqZWN0VHlwZQorY29uc3QgSGVhcEJpZ0ludFR5cGUgPSBjb25zdGV4cHIg
SGVhcEJpZ0ludFR5cGUKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1i
ZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRl
bgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCmluZGV4IDM0MTY4MGFiZWU4Li43NDYzYWZkMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTEsNCAr
MSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NDQsMjQgKzg0NCw0
OCBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc191bmRlZmluZWRfb3JfbnVsbCwgT3BJc1VuZGVm
aW5lZE9yTnVsbCwgbWFjcm8gKHNpemUsIGdldAogZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmlj
dEVxT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBjcmVhdGVCb29sZWFuKQogICAgIGxsaW50
T3BXaXRoUmV0dXJuKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQwKQogICAgICAgICBn
ZXQobV9saHMsIHQyKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0
MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCisKKyAgICAg
ICAgIyBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUg
fHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAg
ICAjIHJlc3VsdCA9IChsZWZ0ID09IHJpZ2h0KTsKKyAgICAgICAgIyBpZiAocmVzdWx0KQorICAg
ICAgICAjICAgICBnb3RvIGRvbmU7CisgICAgICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdo
dCBpcyBDZWxsKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGRvbmU6
CisgICAgICAgICMgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1w
bGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmds
ZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQg
aWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRy
aWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0
byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisg
ICAgICAgICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJl
IGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFi
b3ZlIG9yIGVxdWFsIDE8PDUwLgogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEs
IHQyCisgICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywg
dDUKKyAgICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3Jx
IHQyLCB0MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNs
b3cKKworICAgICAgICBjcWVxIHQwLCB0MSwgdDUKKyAgICAgICAgYnRxbnogdDUsIHQ1LCAuZG9u
ZSAjaXMgdGhlcmUgYSBiZXR0ZXIgd2F5IG9mIGNoZWNraW5nIHQ1ICE9IDAgPworCisgICAgICAg
IG1vdmUgdDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicgaWYgbm90
IGZvciBCaWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2VsbCB0byBi
ZSBzdHJpY3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAg
ICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51bWJlclRh
ZywgLmxlZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5sZWZ0
T0s6Ci0gICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAgIGJ0cW56
IHQxLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFsaXR5T3Bl
cmF0aW9uKHQwLCB0MSwgdDApCi0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgICAgICBy
ZXR1cm4odDApCisKKyAgICAuZG9uZToKKyAgICAgICAgY3JlYXRlQm9vbGVhbih0NSkKKyAgICAg
ICAgcmV0dXJuKHQ1KQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19w
YXRoXyVvcGNvZGVOYW1lJSkKQEAgLTg3MSwzMyArODk1LDUzIEBAIGVuZAogCiAKIHN0cmljdEVx
T3Aoc3RyaWN0ZXEsIE9wU3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQp
IGNxZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9wZXJhbmQpIHhvcnEg
VmFsdWVGYWxzZSwgb3BlcmFuZCBlbmQpCiAKIAogc3RyaWN0RXFPcChuc3RyaWN0ZXEsIE9wTnN0
cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcW5lcSBsZWZ0LCByaWdo
dCwgcmVzdWx0IGVuZCkKKyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZVRydWUsIG9wZXJh
bmQgZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcXVhbGl0eUp1bXBPcChv
cGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGp1bXBJZkVxdWFsLCBqdW1wSWZOb3RFcXVhbCkKICAg
ICBsbGludE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAg
ICBnZXQobV9yaHMsIHQzKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQy
LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MywgdDEpCisKKyAg
ICAgICAgIyBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAg
ICAgICAjIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAjICAgICBnb3RvIGp1bXBUYXJnZXQ7
CisgICAgICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAj
ICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGdvdG8gb3RoZXJKdW1wVGFyZ2V0CisKKyAg
ICAgICAgIyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3
b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJ
Zk51bWJlcgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJ
bnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2
aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJlciBh
dCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAg
IyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAgICAgICAgbW92
ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBtb3ZlIHQxLCB0MworICAgICAg
ICBtb3ZlIExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisgICAgICAg
IGFkZHEgdDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAxLCB0NQor
ICAgICAgICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgYnFlcSB0MCwgdDEsIC5lcXVh
bAorCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFu
ICdvcicgaWYgbm90IGZvciBCaWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9y
IGEgQ2VsbCB0byBiZSBzdHJpY3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQx
LCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEg
dDAsIG51bWJlclRhZywgLmxlZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xv
dwotICAgIC5sZWZ0T0s6Ci0gICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0g
ICAgICAgIGJ0cW56IHQxLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAg
IGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAgICAgIGRpc3BhdGNo
KCkKIAotICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCisgICAg
ICAgIGp1bXBJZk5vdEVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQorCisgICAg
LmVxdWFsOgorICAgICAgICBqdW1wSWZFcXVhbChqdW1wLCBtX3RhcmdldExhYmVsLCBkaXNwYXRj
aCkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8l
b3Bjb2RlTmFtZSUpCkBAIC05MDcsMzMgKzk1MSwzNiBAQCBlbmQKIAogCiBzdHJpY3RFcXVhbGl0
eUp1bXBPcChqc3RyaWN0ZXEsIE9wSnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBicWVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQotCisgICAgbWFjcm8gKGp1bXAs
IHRhcmdldExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJlbCkgZW5kLAorICAgIG1hY3Jv
IChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogCiBzdHJpY3RF
cXVhbGl0eUp1bXBPcChqbnN0cmljdGVxLCBPcEpuc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJxbmVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQorICAgIG1hY3Jv
IChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kLAorICAgIG1hY3Jv
IChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGp1bXAodGFyZ2V0TGFiZWwpIGVuZCkKIAog
bWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQog
ICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNy
byB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1f
Yml0c1t0MV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAg
ZW5kCiAKLSAgICAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MwotICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4g
dDEsIHNyY0RzdCBpbiB0MwotICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAg
ICAgaW50ZWdlck9wZXJhdGlvbih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQz
Ci0gICAgICAgIHN0b3JlcSB0MywgW2NmciwgdDAsIDhdCi0gICAgICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZShBcml0aFByb2ZpbGVJbnQpCi0gICAgICAgIGRpc3BhdGNoKCkKKyAgICBnZXQobV9zcmNE
c3QsIHQwKQorICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDEKKyAgICBtZXRhZGF0YSh0MiwgdDMp
CisgICAgIyBzcmNEc3QgaW4gdDEsIG1ldGFkYXRhIGluIHQyCisgICAgIyBGSVhNRTogdGhlIG5l
eHQgbGluZSBqdW1wcyB0byB0aGUgc2xvdyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5z
dGVhZCBoYXZlIGEgZGVkaWNhdGVkIHBhdGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICBicWIgdDEs
IG51bWJlclRhZywgLnNsb3cKKyAgICBpbnRlZ2VyT3BlcmF0aW9uKHQxLCAuc2xvdykKKyAgICBv
cnEgbnVtYmVyVGFnLCB0MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCisgICAgdXBkYXRl
QXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKKyAgICBkaXNwYXRjaCgpCiAKICAgICAuc2xv
dzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAg
ICBkaXNwYXRjaCgpCiAgICAgZW5kKQorCiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3Rv
X251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
QEAgLTEyNzksNiArMTMyNiwxOSBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9w
SXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgcmV0dXJu
KHQxKQogZW5kKQogCitsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50
LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fb3BlcmFuZCwg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCisgICAgYnRxbnog
dDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3Qw
XSwgSGVhcEJpZ0ludFR5cGUsIHQxCisgICAgb3JxIFZhbHVlRmFsc2UsIHQxCisgICAgcmV0dXJu
KHQxKQorLm5vdENlbGxDYXNlOgorICAgIGFuZHEgTWFza0JpZ0ludDMyLCB0MAorICAgIGNxZXEg
dDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIHJldHVybih0
MCkKK2VuZCkKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXND
ZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0
dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCA4NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVl
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBA
IC04Myw2ICs4MywxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VC
aWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIGlmIChyYWRpeCA9
PSAxMCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiaWdJbnQgPSBKU0JpZ0ludDo6cGFy
c2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6
RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6
VW5zaWduZWQpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisKICAgICAvLyBGSVhN
RTogV2UgYXJlIGFsbG9jYXRpbmcgYSBKU0JpZ0ludCBqdXN0IHRvIGJlIGFibGUgdG8gdXNlCiAg
ICAgLy8gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyB3aGVuIHJhZGl4IGlzIG5vdCAxMC4KICAgICAv
LyBUaGlzIGNyZWF0ZXMgc29tZSBHQyBwcmVzc3VyZSwgYnV0IHNpbmNlIHRoZXNlIGlkZW50aWZp
ZXJzCkBAIC05MCwxMSArOTQsMTUgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5h
OjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICAvLyBp
dCB3b250IGJlIG11Y2ggcHJvYmxlbWF0aWMsIGdpdmVuIHN1Y2ggY2FzZXMgYXJlIHZlcnkgcmFy
ZS4KICAgICAvLyBUaGVyZSBpcyBhIGxvdCBvZiBvcHRpbWl6YXRpb25zIHdlIGNhbiBhcHBseSBo
ZXJlIHdoZW4gbmVjZXNzYXJ5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc2MjcKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIs
IHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2Rl
OjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAg
ICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGJpZ0lu
dCwgMTApKSk7CisgICAgSlNCaWdJbnQqIGhlYXBCaWdJbnQ7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICBoZWFwQmlnSW50ID0gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgZWxzZQor
I2VuZGlmCisgICAgICAgIGhlYXBCaWdJbnQgPSBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisKKyAg
ICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0lu
dDo6dHJ5R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50LCAxMCkpKTsKICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAg
LTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmZmM2Y3
OTcyMGIuLjVmMGQ1NDg0ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsMTggKzc1LDYgQEAgdm9pZCBCaWdJbnRDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJbnRQcm90b3R5cGUqIGJpZ0ludFBy
b3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGJvb2wgaXNTYWZlSW50ZWdlcihK
U1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVudC5pc0ludDMyKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1bWVudC5pc0RvdWJsZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0gYXJndW1lbnQuYXNEb3VibGUoKTsK
LSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBudW1iZXIgJiYgc3RkOjphYnMobnVtYmVyKSA8
PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBB
U1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CkBAIC05NCwyMCArODIsMjQgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYgKGFyZ3VtZW50LmlzQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQpOwotICAgIAorCisgICAgaWYgKGFy
Z3VtZW50LmlzQm9vbGVhbigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgYXJndW1lbnQuYXNC
b29sZWFuKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJp
bmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9i
YWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3Vt
ZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVu
dC5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
YXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZp
bmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0g
ICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3Ry
aW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOwotICAgIH0pKTsKKyAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBl
IGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTExOSwyMCArMTExLDIyIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1pdGl2ZS5pc051bWJlcigpKSB7Ci0gICAgICAg
IGlmICghaXNTYWZlSW50ZWdlcihwcmltaXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKLSAgICAgICAgCi0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJ
bnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpIHsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0Jp
Z0ludDMyLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigp
KSk7CisjZW5kaWYKKyAgICB9CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc1VJbnQzMigpKQot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgcHJpbWl0aXZlLmFzVUludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlzRG91YmxlKCkp
IHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHByaW1pdGl2ZS5hc0RvdWJsZSgpOworICAgICAg
ICBpZiAodHJ1bmMobnVtYmVyKSAhPSBudW1iZXIgfHwgc3RkOjphYnMobnVtYmVyKSA+IG1heFNh
ZmVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGEgc2FmZSBpbnRl
Z2VyIl9zKSk7CiAKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0lu
dDMyT3JIZWFwLCB2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkp
KSk7CiAgICAgfQotICAgIAorCiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQo
Z2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAppbmRleCBlZTAwNDVkYWM5Ni4uZTYx
OTgyYjkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2Jq
ZWN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBM
aW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xhc3NJbmZvIEJpZ0ludE9iamVjdDo6c19pbmZv
ID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAKIAotQmlnSW50T2JqZWN0KiBCaWdJbnRPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmlnSW50
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+
KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+YmlnSW50T2JqZWN0U3Ry
dWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGJpZ0ludCk7CkBAIC00
OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6QmlnSW50T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKaW5kZXggNDRmYzc2ZmJkZjkuLmE2MzU0YTE2
ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSAr
NDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9k
ZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmln
SW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50
ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1
ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApp
bmRleCBkYjRhNjE4ODk5ZC4uZmI1YjlmYWIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDEyICs3OSwyNCBAQCB2
b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShW
TSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBG
SVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJl
LWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0
aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVl
LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0
aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVl
LmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2Fz
dDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAg
ICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJ
bnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1
ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIo
KSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk5LDggKzExMSw2IEBA
IHN0YXRpYyBKU1ZhbHVlIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBi
ZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwogCi0gICAgQVNTRVJUKHZhbHVlKTsKLQog
ICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTExOCw2ICsxMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJp
bmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1
bmN0aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhlIHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5k
cyBhbmQgc2ltaWxhciB0aGluZ3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0lu
dFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50
UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0
NGQ4ZmI0YjQyMi4uMjRlODgzN2QzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRl
ICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcwLDEzICs0NjksOCBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cEluYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3Qp
LmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50
ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0luYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGds
b2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxz
ZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlh
bnQpICsgMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3Ny
Y0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC00ODUsMTMgKzQ3OSw4IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wRGVjPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3Ny
Y0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZh
cmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzRGVjKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50Ojpk
ZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0
VmFyaWFudCkgLSAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2Rl
Lm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTUwOCw3ICs0OTcsMTUgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTVmEKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAg
ICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlm
IChyZXN1bHQuaXNOdW1iZXIoKSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkK
KyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdC5pc051bWJlcigpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAg
ICAgICAgICAgICBpZiAob3BlcmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmls
ZS5zZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKTsKQEAgLTUyOCwxMCArNTI1LDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0
YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQo
KTsKLSAgICBlbHNlCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7Cisg
ICAgfQogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJp
dGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0Niw4
ICs1NDAsMjEgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1i
ZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2
bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmlt
VmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUu
YmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVl
KTsKKyAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAg
ICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3Vs
dCwgb3BlcmFuZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNl
bmRpZgorCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBC
aWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAg
ICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0
LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01ODUsOCArNTkyLDEyIEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJl
c3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7Cisg
ICAgfSBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0
T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJl
c3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigp
OworI2VuZGlmCiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVy
aWMoKTsKIH0KQEAgLTYwOCwxMyArNjE5LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rv
X251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9O
dW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJh
bmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJp
YW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNO
dW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTYsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ug
b3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWly
IG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQK
Ky8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRl
ci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlz
IGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbXVsKQpAQCAtNjcyLDI0ICs2NzgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3Vi
KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0
ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0g
R0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0g
bGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Vi
KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50
OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAg
ICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4i
KSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3Vi
bGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAg
UkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2Zp
bGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBs
ZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY5MSw4IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAg
ICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpT
VmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNEaXYoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJ
TkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5
QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51
bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVS
Tl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9y
QmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwg
cmlnaHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs3MDQsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNW
YWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVl
IHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnRO
dW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1
bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIg
b3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3Vi
bGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHRO
dW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4o
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1OCwyNSAr
NzE1LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1f
bGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhz
KS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMg
PSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
UG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwot
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
fHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykg
JiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAg
ICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAg
ICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBi
ID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVy
KG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzI2LDEwIEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNW
YWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0K
LSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVy
aWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzM4LDEwIEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNW
YWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNo
aWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAK
LSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9u
LiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxp
bnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykg
JiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVm
dCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg1MCw3
OSArNzY3LDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8g
b3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7
Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0K
KyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsK
IAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFu
ZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0
LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQo
cmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBC
RUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byBy
aWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0g
R0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BS
T0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsK
ICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdp
c2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051
bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90Pihy
aWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikK
IHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCku
dG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0
byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0
ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxF
RChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQz
Ml90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3Io
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90
eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXgg
OWMzNDU0NDJmNTQuLjQ2YTliMTAxNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxp
emUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50Ojpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4
OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2Fz
dDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2lu
Z2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAg
ICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNl
ck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAg
aWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMu
Y2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNl
SW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9k
ZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFy
c2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3
IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2ln
biBzaWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQo
Z2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwg
cGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAg
ICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5s
ZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxs
b3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5n
VmlldyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFy
c2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQxLDIzIEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4g
cHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVj
dCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQor
ICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9u
OjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2Jh
bE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2Fu
IHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmpl
Y3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkp
IHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52
bSgpLCAxKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29s
dXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNv
bHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpT
QmlnSW50KiBKU0JpZ0ludDo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUzMiw3ICs1MjYsNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgs
IEpTQmlnSQogICAgIGlmICh4LT5zaWduKCkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAg
ICAKLSAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4
ICYgKC15KSA9PSB4ICYgfih5LTEpCiAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUo
Z2xvYmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBA
IC0xNjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZU
d28oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmln
SW50Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJl
dmlzaXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hh
cj4gcmVzdWx0U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYp
OwpAQCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTE4MTAsNyArMTgwNCw3IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5
cGUqICBkYXRhLCB1bnNpCiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNl
KGRhdGFbcF0pKQogICAgICAgICArK3A7CiAKLSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0
IGNoYXJhY3RlcnMKKyAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNl
SW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VN
b2RlLCBQYXJzZUludFNpZ246OlVuc2lnbmVkLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlT
dHJpbmcpOwpAQCAtMTgyNCwyNCArMTgxOCwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQog
CiAgICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlm
IChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAg
ICsrcDsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRh
dGFbcF0gPT0gJy0nKSB7CiAgICAgICAgICAgICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7
CiAgICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3Bd
ID09ICcrJykKKyAgICAgICAgICAgICsrcDsKICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0
ID0gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQ
YXJzZU1vZGUsIHNpZ24pOwotCi0gICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkK
LSAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2
bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFy
c2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBh
cnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWdu
ZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VN
b2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBB
U1NFUlQobGVuZ3RoID49IDApOwogICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1
Miw3ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9k
ZTo6VGhyb3dFeGNlcHRpb25zKQogICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJz
ZSBTdHJpbmcgdG8gQmlnSW50IikpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9z
CkBAIC0xODY2LDQ0ICsxODU0LDg0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBs
ZW5ndGggPSBlbmRJbmRleCArIDE7CiAKLSAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAg
PT0gbGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJv
KHZtKTsKLQotICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXgg
OiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVu
c2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1
bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNh
biBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3Qs
IGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgot
ICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+
aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRp
Z2l0OwotICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAg
ICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtp
XSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtp
XSAtICdhJyArIDEwOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ld
IDwgbGltaXRBKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11
bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0Pihk
aWdpdCkpOworI2VuZGlmCiAgICAgfQogCi0gICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFy
c2VJbnRTaWduOjpTaWduZWQgPyB0cnVlIDogZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBp
cyB0byBwaWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGlt
aXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJp
Z0ludDMyOworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0
aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAg
ICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMTA6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQz
MiA9IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0
ID0gbnVsbHB0cjsKIAotICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBh
cnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQg
bGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBs
aW1pdGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVu
c2lnbmVkIGxpbWl0QSA9ICdBJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7
CisgICAgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAg
PCBsZW5ndGgpIHsKKyAgICAgICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8
aW50MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7
ICsraSwgKytwKSB7CisgICAgICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11
bHRpcGxpZXIgKj0gcmFkaXg7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0
YVtwXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkK
KyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAg
ICBlbHNlIGlmIChkYXRhW3BdID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAg
ICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhy
b3dFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0
byBCaWdJbnQiKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0
IDwgbXVsdGlwbGllci51bnNhZmVHZXQoKSk7CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7
CisgICAgICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2ln
biA9PSBQYXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0g
LTE7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGhlYXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxP
YmplY3QsIHZtLCByYWRpeCwgaW5pdGlhbExlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBz
dGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFz
IGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAg
ICAgICAgICAgaWYgKCFoZWFwUmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICBoZWFwUmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlw
ZTo6V2l0aFplcm8pOworICAgICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0
aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRp
Y19jYXN0PERpZ2l0PihkaWdpdCkpOworICAgIH0KIAotICAgIHJldHVybiBudWxscHRyOworICAg
IGhlYXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAg
cmV0dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6
RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCkBAIC0xOTI3LDE4ICsxOTU1LDIwIEBA
IGJvb2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAg
QVNTRVJUKG51bVZhbHVlLmlzTnVtYmVyKCkpOwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0lu
dDMyKCkpIHsKLSAgICAgICAgaW50IHZhbHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAg
ICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAg
ICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFs
dWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFi
cyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1
ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50
MzIoKSk7CiAgICAgCiAgICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAg
ICByZXR1cm4gY29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0
OjpFcXVhbDsKIH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVl
KQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAg
ICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVl
IDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMo
c3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNv
blJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkK
IHsKICAgICAvLyBUaGlzIGFsZ29yaXRobSBleHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBp
cyBJRUVFIDc1NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXgg
OGE0ZTYwOTlmNDcuLjk3ZmM5MTY1MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENh
aW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC05MCwxMyArOTAsMTIgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUGFyc2VJ
bnRNb2RlIHsgRGlzYWxsb3dFbXB0eVN0cmluZywgQWxsb3dFbXB0eVN0cmluZyB9OwogICAgIGVu
dW0gY2xhc3MgUGFyc2VJbnRTaWduIHsgVW5zaWduZWQsIFNpZ25lZCB9OwogCi0gICAgc3RhdGlj
IEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWlu
dDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRp
b25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAgICBzdGF0aWMg
SlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJz
ZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKLSAgICBzdGF0aWMgSlNC
aWdJbnQqIHN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldyk7CisgICAg
c3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcs
IHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhj
ZXB0aW9ucywgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7CisgICAgc3Rh
dGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBh
cnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOworICAgIHN0YXRpYyBK
U1ZhbHVlIHN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldyk7CiAKICAg
ICBzdGF0aWMgU3RyaW5nIHRyeUdldFN0cmluZyhWTSYsIEpTQmlnSW50KiwgdW5zaWduZWQgcmFk
aXgpOwogCi0gICAgT3B0aW9uYWw8dWludDhfdD4gc2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygp
OwogICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHJhZGl4KTsK
ICAgICAKICAgICBlbnVtIGNsYXNzIENvbXBhcmlzb25Nb2RlIHsKQEAgLTExMyw2ICsxMTIsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxz
KEpTQmlnSW50KiwgSlNCaWdJbnQqKTsKICAgICBib29sIGVxdWFsc1RvTnVtYmVyKEpTVmFsdWUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxzVG9JbnQzMihpbnQzMl90KTsKICAg
ICBzdGF0aWMgQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlKEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSk7CiAKICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0OwpAQCAtMjIyLDEwICsyMjIsMTAgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAg
c3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CisgICAgc3RhdGljIEpTVmFsdWUg
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgRXJyb3JQYXJzZU1vZGUpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgot
ICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIENoYXJU
eXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVk
IHJhZGl4LCBFcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpTaWdu
ZWQsIFBhcnNlSW50TW9kZSA9IFBhcnNlSW50TW9kZTo6QWxsb3dFbXB0eVN0cmluZyk7CisgICAg
c3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIENoYXJUeXBlKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4
LCBFcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQsIFBh
cnNlSW50TW9kZSA9IFBhcnNlSW50TW9kZTo6QWxsb3dFbXB0eVN0cmluZyk7CiAKICAgICBzdGF0
aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCB1bnNpZ25lZCBy
YWRpeCwgdW5zaWduZWQgY2hhcmNvdW50KTsKIApAQCAtMjU4LDkgKzI1OCw5IEBAIHByaXZhdGU6
CiAgICAgQ2FnZWRVbmlxdWVQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgRGlnaXQ+IG1fZGF0YTsK
IH07CiAKLWlubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK2lubGluZSBK
U0JpZ0ludCogYXNIZWFwQmlnSW50KEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHZhbHVl
LmFzQ2VsbCgpLT5pc0JpZ0ludCgpKTsKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzSGVh
cEJpZ0ludCgpKTsKICAgICByZXR1cm4ganNDYXN0PEpTQmlnSW50Kj4odmFsdWUuYXNDZWxsKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmlu
ZGV4IDU0ODAxMGViMWMwLi41YzVhMzJhY2U3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAtNzEsNiArNzIsMTQgQEAgZG91Ymxl
IEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7CiAgICAgaWYgKGlz
Q2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQu
Il9zKTsKKyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoaXNUcnVl
KCkpCiAgICAgICAgIHJldHVybiAxLjA7CiAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFO
IDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCkBAIC0xMDEsNiArMTEw
LDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xv
YmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFs
T2JqZWN0LCBhc1ZhbHVlKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQz
MigpKQorICAgICAgICByZXR1cm4gQmlnSW50T2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgKnRoaXMpOworI2VuZGlmCiAKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0xMTgsNiArMTMxLDE0IEBAIEpTVmFsdWUg
SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNN
QU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2Jq
ZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0
LCBhc1ZhbHVlKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7
CisgICAgICAgIEpTQ2VsbCogaGVhcEJpZ0ludCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KEpTQmln
SW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdC0+dm0oKSwgYmlnSW50MzJBc0ludDMyKCkpKTsK
KyAgICAgICAgLy8gRklYTUU6IHRoZXJlIG11c3QgYmUgYSBzaW1wbGVyIHdheSB0byBmaW5kIHRv
VGhpcyBmb3IgSlNCaWdJbnQsIGJ1dCBJIGNhbid0IGV2ZW4gZmluZCB3aGVyZSBpdCBpcyBkZWZp
bmVkLgorICAgICAgICByZXR1cm4gaGVhcEJpZ0ludC0+bWV0aG9kVGFibGUoZ2V0Vk0oZ2xvYmFs
T2JqZWN0KSktPnRvVGhpcyhoZWFwQmlnSW50LCBnbG9iYWxPYmplY3QsIGVjbWFNb2RlKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTUxLDcgQEAgSlNP
YmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5n
KCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsK
LSAgICAgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAgICAg
ICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJv
bFByb3RvdHlwZSgpOwpAQCAtMTQwLDYgKzE2MSwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3lu
dGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAoaXNC
b29sZWFuKCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5cGUo
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CisjZW5kaWYKIAogICAgIEFTU0VS
VChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAg
LTI4Niw2ICszMTEsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVj
dHVyZSgKICAgICAgICAgICAgIG91dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVyKGFzQ2Vs
bCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xh
c3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVy
ZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250ZXh0KSk7
CisgICAgICAgIGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgb3V0LnByaW50
KCJCaWdJbnRbaGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsK
ICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEpT
T2JqZWN0OjppbmZvKCkpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdDogIiwgUmF3
UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50KCIgd2l0aCBidXR0ZXJm
bHkgIiwgUmF3UG9pbnRlcihhc09iamVjdChhc0NlbGwoKSktPmJ1dHRlcmZseSgpKSk7CkBAIC0z
MDUsNiArMzMyLDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0
dXJlKAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5l
ZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtp
bmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAg
ICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zNDcsNiArMzc4LDEwIEBAIHZvaWQgSlNW
YWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBv
dXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBv
dXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChp
c0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJp
Z0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJ
TlZBTElEIik7CiB9CkBAIC0zODQsMTggKzQxOSwyNSBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9T
dHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVybkVt
cAogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBpZiAo
aXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRT
dHJpbmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmci
X3MpOwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0ludDMyQXNJ
bnQzMigpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIpIDw9IDkp
CisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhpbnRlZ2VyICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
dm0ubnVtZXJpY1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlzQmlnSW50
KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKLSAgICAg
ICAgaWYgKGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKSkK
LSAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KCpkaWdpdCArICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkpOworI2Vu
ZGlmCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQg
PSBhc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2
ZSB0d28gY2FzZXMgaGVyZTogb25lLWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3Ry
aW5nIGZvciBldmVyeXRoaW5nIGVsc2UuCisgICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcg
PSBKU1N0cmluZzo6Y3JlYXRlKHZtLCBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTAp
LnJlbGVhc2VJbXBsKCkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVycm9yVmFsdWUoKSk7CiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7
CiAgICAgfQorICAgIGlmIChpc1N5bWJvbCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJf
cyk7CisgICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGlz
Q2VsbCgpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCwgUHJlZmVyU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAppbmRleCA1ODZhZjNmYWIzNy4uYTkxMTQzMGU1ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNzYsNiArMTc2LDEwIEBAIHB1YmxpYzoKICAgICBl
bnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OwogICAgIGVudW0gSlNGYWxzZVRhZyB7IEpTRmFsc2Ug
fTsKICAgICBlbnVtIEpTQ2VsbFRhZyB7IEpTQ2VsbFR5cGUgfTsKKyAgICBlbnVtIEpTQmlnSW50
VGFnIHsgSlNCaWdJbnQzMk9ySGVhcCB9OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbnVtIEpT
QmlnSW50MzJUYWcgeyBKU0JpZ0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91
YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4NSw2ICsx
ODksMTEgQEAgcHVibGljOgogICAgIEpTVmFsdWUoSlNGYWxzZVRhZyk7CiAgICAgSlNWYWx1ZShK
U0NlbGwqIHB0cik7CiAgICAgSlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIEpTVmFsdWUoSlNCaWdJbnQzMlRhZywgaW50MzJfdCk7CisjZW5kaWYKKyAg
ICAvLyBSZXR1cm5zIGVpdGhlciBhIEJpZ0ludDMyIG9yIGEgSGVhcEJpZ0ludC4KKyAgICBKU1Zh
bHVlKEpTQmlnSW50VGFnLCBWTSYsIGludDY0X3QpOwogCiAgICAgLy8gTnVtYmVycwogICAgIEpT
VmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CkBAIC0yMTgsNiArMjI3LDkgQEAgcHVi
bGljOgogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkg
Y29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qgb25seSBiZSBjYWxs
ZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBhc0ludDMyRm9yQXJp
dGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBidXQgb3RoZXJ3aXNl
IGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzcsNiArMjQ5LDggQEAgcHVibGljOgogICAgIGJvb2wg
aXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisgICAgYm9v
bCBpc0JpZ0ludDMyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJv
b2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7
CkBAIC0yNDUsNyArMjU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBjb25z
dCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJvb2wg
aW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb09yTnVs
bChWTSYpIGNvbnN0OwotICAgICAgICAKKwogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgog
ICAgIGJvb2wgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgV1RGOjpTdHJpbmcmKSBjb25zdDsK
ICAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gbnVs
bCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCkBAIC0yNjQsOSArMjc4LDEwIEBAIHB1YmxpYzoKICAg
ICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0IGZy
ZWUgaWYgYW4gZXhjZXB0aW9uIGhhcwogICAgIC8vIGJlZW4gc2V0IGluIHRoZSBDYWxsRnJhbWUg
YWxyZWFkeS4KICAgICBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAg
ICAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiB0b051bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gdG9CaWdJbnRPcklu
dDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICBKU1ZhbHVlIHRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTVmFsdWUgdG9CaWdJbnRPckludDMyKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CisgICAgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludCgpIGNvbnN0OwogCiAg
ICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0IHNpZGUg
ZWZmZWN0cy4KICAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNv
bnN0OwpAQCAtMzE1LDggKzMzMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNs
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3Rh
dGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxT
bG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0
YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbEZvckNlbGxz
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2Mik7CiAgICAgc3RhdGljIFRy
aVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKIAogICAgIGJv
b2wgaXNDZWxsKCkgY29uc3Q7CkBAIC00MTQsMTEgKzQyOCwyMCBAQCBwdWJsaWM6CiAgICAgICog
VGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogICAgICAqIC0gQml0
IDEgKE90aGVyVGFnKSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVhbCBw
b2ludGVycyB0byBiZQogICAgICAqICAgcXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxsIGlt
bWVkaWF0ZSB2YWx1ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgotICAgICAq
IC0gV2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQg
TnVsbCBzaGFyZSB0aGUKKyAgICAgKiAtIFdpdGggYml0IDMgbWFza2VkIG91dCAoVW5kZWZpbmVk
VGFnKSwgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQogICAgICAqICAgc2FtZSB2YWx1ZSwg
YWxsb3dpbmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgogICAgICAq
CiAgICAgICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4MCwg
dGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQogICAgICAqIGhvbGVzLCBhbmQgYXMgYSBD
KysgJ25vIHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2YWx1
ZSBvZiAwKS4KKyAgICAgKgorICAgICAqIFdoZW4gVVNFKEJJR0lOVDMyKSwgd2UgaGF2ZSBhIHNw
ZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBhcmUgc21hbGwgKDMyLWJpdCBh
dCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgKiBUaGlzIHJl
cHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGluZ3M6CisgICAg
ICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5r
cyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEg
cG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQor
ICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIHdhc20gdGhh
bmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJl
IGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQor
ICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNl
IGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAgICAvLyBUaGlzIHZhbHVlIGlzIDJe
NDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVlIHdp
bGwgYmVnaW4KQEAgLTQyOCwxMSArNDUxLDE5IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbGwgYml0
cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwK
ICAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91Ymxl
IHByZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJlclRh
ZyA9IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RhbnQg
aXMgdXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RyaWN0RXEsIHRv
IGRldGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRvdWJsZQorICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsKKyAgICBz
dGF0aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcpOworICAgIHN0YXRpY19h
c3NlcnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJUYWcpKTsKIAogICAgIC8vIEFs
bCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0
IDIgc2V0LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBPdGhlclRhZyAgICAgICA9IDB4
MjsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9vbFRhZyAgICAgICAgPSAweDQ7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRhZyAgID0gMHg4OworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50MzJUYWcgICAg
PSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1hc2sgICA9IE51
bWJlclRhZyB8IEJpZ0ludDMyVGFnOworI2VuZGlmCiAgICAgLy8gQ29tYmluZWQgaW50ZWdlciB2
YWx1ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KICAgICBzdGF0aWMgY29uc3RleHByIGlu
dDMyX3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCBmYWxzZTsKICAgICBz
dGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVlICAgICAgPSBPdGhlclRhZyB8IEJvb2xU
YWcgfCB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKaW5kZXggNWIzZmY4YWM0NGUuLmIzOTZiYzE3Njc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0y
NDAsNiArMjM5LDEzIEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRy
KQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0
X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7CiB9CiAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmln
SW50VGFnLCBWTSYgdm0sIGludDY0X3QgdmFsKQoreworICAgIHUuYXNCaXRzLnRhZyA9IENlbGxU
YWc7CisgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsKTsKKyAgICB1
LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxK
U0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25z
dAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxldGVkVmFsdWVUYWcpOwpAQCAtMzI5LDYgKzMz
NSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXlsb2FkKTsKIH0K
IAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJU
KCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQsNiArNDc2LDE5IEBAIGlubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5hc0ludDY0ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkK
K3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVlIDw9IElOVF9NQVggJiYgdmFsdWUg
Pj0gSU5UX01JTikgeworICAgICAgICB1LmFzSW50NjQgPSAodmFsdWUgPDwgMTYpIHwgQmlnSW50
MzJUYWc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEpTQ2VsbCogcHRy
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB1LmFzSW50NjQgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewogICAgIC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBz
aGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVu
ZGVkIHRhZy4KQEAgLTUyMiw4ICs1NDcsMjIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFs
dWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQogCitBTFdBWVNfSU5MSU5F
IEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChp
c0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odS5wdHIp
OworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAorI2lmIFVTRShCSUdJTlQzMikKK2lu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QgdmFsdWUpCit7Cisg
ICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2ZSBudW1iZXJzLCBvdGhl
cndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50NjQgPSAoKHN0YXRpY19j
YXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVtYmVyVGFnKSB8IEJpZ0ludDMyVGFnOwor
fQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGludDY0X3QgdHJ5Q29udmVydFRv
SW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBpZiAobnVtYmVyICE9IG51bWJlcikKQEAgLTYx
MCw5ICs2NDksMzEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogCiBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2Vs
bCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiBpc0JpZ0ludDMyKCkgfHwg
aXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzSGVhcEJpZ0ludCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQo
KTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5hc0ludDY0ICYgQmlnSW50MzJNYXNrKSA9PSBC
aWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBV
U0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpiaWdJbnQzMkFzSW50MzIoKSBj
b25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikK
KwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBp
c0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTYyMCw3ICs2ODEsNyBAQCBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6
OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgp
LT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0JpZ0lu
dCgpOworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXND
ZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCiBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0CkBAIC03NjAsOCArODIxLDE3
IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAgICAgIHZhbHVlID0gKnRoaXM7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0gICAg
bnVtYmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkgeworICAgICAgICBudW1iZXIg
PSBQTmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0Jp
Z0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAgICBudW1iZXIgPSAwLjA7
CiAgICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3NSw0NCArODQ1
LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZ2xv
YmFsT2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgZG91Ymxl
PiBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1
cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gYXNEb3Vi
bGUoKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0aGlz
KTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAg
ICAgcmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHBy
aW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlz
QmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzRG91Ymxl
KCkgfHwgcHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7CisK
ICAgICBkb3VibGUgdmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBqc051bWJlcih2
YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0ludCosIGludDMyX3Q+IEpT
VmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlmIChpc0ludDMyKCkpCi0gICAg
ICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0JpZ0ludCgpKQor
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgaWYgKGlzRG91YmxlKCkgJiYgY2FuQmVJbnQzMihh
c0RvdWJsZSgpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91Ymxl
KCkpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMp
OworICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUo
KSkpOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRo
aXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0g
ICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmltVmFs
dWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMyX3Qg
dmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKIGlu
bGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKQEAgLTEwMzIsMzcgKzExMDMsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
VmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAgIGlmICh2MS5pc051bWJl
cigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOwotICAg
ICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMyKQotICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGds
b2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkg
JiYgczIpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dmFs
dWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKG4p
OwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5pc051bWJlcigpKSB7Cisg
ICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEu
YXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAgLy8gR3VhcmFudGVlaW5n
IHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBzb21lIG9mIHRoZSBjYXNl
cyBiZWxvdyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgU3Ry
aW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNC
aWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0cmlu
Zyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9vbGVhbnMsIEJpZ0ludDMy
LCBPYmplY3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9yZSB0eXBlcy4KKyAgICAg
ICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwgYmVjYXVzZSBpdCBpcyBO
T1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09IHYyKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
ICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtMTA4MCw3ICsxMTMx
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBpZiAodjEuaXNPYmplY3Qo
KSkgewogICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHYxID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIg
aXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIEpTVmFsdWUgcDEg
PSB2MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBwMTsKQEAgLTExMDIsNTYg
KzExNTMsODQgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxp
bmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgYm9vbCBzeW0yID0g
djIuaXNTeW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikgewogICAgICAgICAgICAg
aWYgKHN5bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4gYXNTeW1ib2wodjEpID09
IGFzU3ltYm9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHYxID09IHYy
IGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKKyAgICAg
ICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChzMSkgeworICAgICAgICAg
ICAgaWYgKHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNT
dHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOworICAgICAgICAg
ICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0
byBlbnRlciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFyaWFudCBvZiBvbmx5IHYy
IGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAgICBpZiAoczEgfHwgczIp
IHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGQxID09
IGQyOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgc3RyaW5nIGlz
IHYyICh0aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAgICBpZiAodjEuaXNCaWdJ
bnQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3RyaW5nVG9C
aWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICghdjIpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodjEgPT0g
djIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3IgQmlnSW50MzIKKyAg
ICAgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBjb2RlIGZvciBj
b21wYXJpbmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRoZSBCaWdJbnQzMi9CaWdJ
bnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYxLmlzQm9vbGVhbigpKTsK
KyAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9vbGVhbigp
KSA9PSB2Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQoKSkg
ewotICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3Qp
KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIC8v
IFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKKyAg
ICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRvIHJlcGFpciB0aGUgcnVs
ZSB0aGF0IG9ubHkgdjIgaXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBpbiB0aGVzZSBjb21wYXJp
c29ucworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0gZWxzZSBpZiAo
djIuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIu
YXNCb29sZWFuKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgewotICAg
ICAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYyID0g
SlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIC8vIFdlIGZh
bGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkK
LSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJ
bnQodjIpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzTnVt
YmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJlcih2
Mik7CiAKLSAgICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlm
ICh2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQz
MigpID09IHYyLmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMyQXNJbnQz
MigpKSA9PSB2Mi5hc0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7Cisg
ICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYgKHYxLmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFz
SGVhcEJpZ0ludCgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNC
aWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1
YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMy
KQorICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7CisgICAgICAgIH0KIAotICAg
ICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxl
ICh0cnVlKTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVl
OjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3Ry
aWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYx
LCBKU0NlbGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7
Ci0KLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3Ry
aW5nKCkpCisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAg
ICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7
Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2
MS0+aXNIZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8
SlNCaWdJbnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE2MywxMCAr
MTI0MiwxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigp
ICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFz
TnVtYmVyKCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAg
ICAgcmV0dXJuIHYxID09IHYyOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNIZWFw
QmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmln
SW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGlmICh2MS5p
c0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB2Mi5hc0hl
YXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYK
KworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0
cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkp
OwogCi0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIpOworICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1
ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwxNSArMTI3MCwyMyBAQCBp
bmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBp
ZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRl
KHYxID09IHYyKTsKLSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIu
YXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJp
bmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJp
bmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAg
ICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7Ci0gICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywg
KnYyU3RyaW5nKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQo
KSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc0hlYXBC
aWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIGlmICh2
MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB0cmlT
dGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIo
KSkpOworI2VuZGlmCisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpIHsKKyAg
ICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmlu
ZygpKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5n
KHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2
MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBp
ZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmlu
ZywgKnYyU3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc0hl
YXBCaWdJbnQoKSAmJiB2Mi5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJpU3RhdGUoSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNI
ZWFwQmlnSW50KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYy
KTsKQEAgLTEyMDYsNiArMTMwMCwxMCBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRv
Qm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91
YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgog
ICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFu
KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJl
dHVybiBiaWdJbnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7Cisj
ZW5kaWYKICAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNGVk
NjUyMzM3OS4uOTBjNWE3ZmMxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wg
SlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwg
Y2VsbC0+aXNCaWdJbnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5
bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShj
ZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90
KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBK
U0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNT
dHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBp
ZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJp
Z0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAg
IH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9i
YWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChp
c0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgYm9vbCBK
U0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUmIG51bWJlciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3Ry
aW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFs
dWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJl
ciwgdmFsdWUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFBy
aW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xv
YmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE4MCw3ICsxODAsNyBAQCBkb3VibGUg
SlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAg
IGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0xOTAsNyArMTkwLDcgQEAgSlNPYmplY3QqIEpTQ2Vs
bDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAg
QVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAxMDY3NDlkZTNjZS4uN2Y5MjUwNGZl
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDIsNyArMTAy
LDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAg
IGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAg
Ym9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRl
eCAyZGFmN2JjMGRkYi4uYzI4MzgzNjgzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIwNSw5ICsyMDUsOSBAQCBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7
CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wg
SlNDZWxsOjppc0hlYXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmln
SW50VHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxp
bmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MSw3ICszNDEsNyBAQCBpbmxp
bmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkp
CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUo
Z2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0
KTsKIH0KQEAgLTM1MCw3ICszNTAsNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9C
b29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0
YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFw
QmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRo
aXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYg
KGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyMmMwMTIwNWMyZi4uN2U4YjI2MGFmNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTAzOCw2ICsx
MDM4LDEwIEBAIGlubGluZSBib29sIEpTVmFsdWU6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gYXNEb3VibGUoKSA+IDAuMCB8fCBh
c0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAg
ICAgICByZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gISFiaWdJbnQz
MkFzSW50MzIoKTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKTsgLy8gZmFsc2UsIG51bGws
IGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQgdG8gZmFsc2UuCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IGExMzM3YzZhNGVmLi4wZGM1Yjc0YzAwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC00Myw3ICs0Myw3
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBl
KQogICAgIENBU0UoQ2VsbFR5cGUpCiAgICAgQ0FTRShTdHJpbmdUeXBlKQogICAgIENBU0UoU3lt
Ym9sVHlwZSkKLSAgICBDQVNFKEJpZ0ludFR5cGUpCisgICAgQ0FTRShIZWFwQmlnSW50VHlwZSkK
ICAgICBDQVNFKFN0cnVjdHVyZVJhcmVEYXRhVHlwZSkKICAgICBDQVNFKEN1c3RvbUdldHRlclNl
dHRlclR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdyYXBwZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAppbmRleCAwZjg2OGE2YWUwNy4uZDE0NjQzM2Q0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0yNiw4ICsyNiw4IEBAIGVudW0g
SlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gVGhlIENlbGxUeXBlIHZhbHVlIG11c3QgY29tZSBi
ZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxsLgogICAgIENlbGxUeXBlLAogICAgIFN0
cmluZ1R5cGUsCi0gICAgQmlnSW50VHlwZSwKLSAgICBMYXN0TWF5YmVGYWxzeUNlbGxQcmltaXRp
dmUgPSBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRUeXBlLAorICAgIExhc3RNYXliZUZhbHN5
Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLAogICAgIFN5bWJvbFR5cGUsCiAKICAgICBT
dHJ1Y3R1cmVSYXJlRGF0YVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKaW5kZXggM2NkNzEzZDg0ZjMuLjg4ZTMwZjIwOWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQo
ZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgIGJvb2wgaXNT
ZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgp
KTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIAotICAgIHVpbnQ4X3QgbV90eXBl
OworICAgIEpTVHlwZSBtX3R5cGU7CiAgICAgdWludDhfdCBtX2ZsYWdzOwogICAgIHVpbnQxNl90
IG1fZmxhZ3MyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKaW5kZXggYzRlYmJlYzUwMzUuLjI3
YTIyMWMyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApAQCAtMjYsOSArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCIK
IAotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJsZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRl
eCA0OTA1ZDViYWYwNy4uNTNlZDEyNGU1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM2LDExICszNiw2IEBAIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
CiAgICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwog
fQogCi1ib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAgICByZXR1cm4gc3RyaWN0
RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7Ci19Ci0KIE5FVkVSX0lO
TElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKICAgICAvLyBleGNlcHRpb24gZm9yIHRoZSBEYXRl
IGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQpAQCAtNzMsMjEgKzY4LDIzIEBAIE5FVkVSX0lO
TElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJp
bmcoZ2xvYmFsT2JqZWN0LCBwMVN0cmluZywgYXNTdHJpbmcocDIpKSk7CiAgICAgfQogCi0gICAg
YXV0byBsZWZ0TnVtZXJpYyA9IHAxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBwMi50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
IHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6YWRkKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpOwotICAgIH0KLQotICAg
IHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSArIFdURjo6Z2V0
PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUg
bGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCArIHJp
Z2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50
MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVj
a2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1
bHQgKz0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgp
KSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
KEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAg
ICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OworICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJ
bnQ6OmFkZCwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKSk7CiB9CiAKIEpTVmFsdWUganNUeXBlU3RyaW5n
Rm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYp
CkBAIC0xMjgsNyArMTI1LDcgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZU9yTnVsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgp
OwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7Ci0gICAgaWYgKHR5cGUg
PT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBCaWdJbnRUeXBl
KQorICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5
cGUgPT0gSGVhcEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlw
ZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZt
KS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDRiYmUyM2MwNzI1Li42OTM4ZTI2NmEy
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDcgKzI1
LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMzksNiArMjM4LDM1IEBAIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlCiAgICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKIH0KIAorQUxX
QVlTX0lOTElORSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50VG9PdGhl
clByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdjEsIEpT
VmFsdWUgcHJpbVZhbHVlKQoreworICAgIEFTU0VSVChwcmltVmFsdWUuaXNQcmltaXRpdmUoKSk7
CisgICAgQVNTRVJUKCFwcmltVmFsdWUuaXNCaWdJbnQoKSk7CisKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIEpTVmFsdWUgYmln
SW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmlu
ZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7Cisg
ICAgICAgIGlmICghYmlnSW50VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsKKworICAgICAgICBpZiAoYmlnSW50VmFsdWUuaXNI
ZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmUodjEsIGJp
Z0ludFZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKKworICAgICAgICBBU1NFUlQoYmlnSW50VmFsdWUu
aXNCaWdJbnQzMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIC8vIEZJWE1FOiB1c2Ug
c29tZXRoaW5nIGxlc3MgaGFja3ksIGUuZy4gc29tZSBraW5kIG9mIEpTQmlnSW50Ojpjb21wYXJl
VG9JbnQzMgorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihiaWdJbnRWYWx1ZS5iaWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlm
CisgICAgfQorCisgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJl
VG9Eb3VibGUodjEsIG51bWJlclZhbHVlKTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIGJpZ0lu
dENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3Vs
dCwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlIGNvbXBhcmlzb25Nb2RlKQogewogICAgIGlmIChj
b21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQpAQCAt
MjU1LDUxICsyODMsNTAgQEAgQUxXQVlTX0lOTElORSBib29sIGJpZ0ludENvbXBhcmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWwKIAogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgCi0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAg
ICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJ
bnQodjEpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgaWYgKHYx
LmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB2MjsKLSAgICAgICAg
aWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogYmlnSW50
VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhw
cmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghYmlnSW50VmFsdWUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGJpZ0ludFZhbHVl
KSwgY29tcGFyaXNvbk1vZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJ
bnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBhc0JpZ0ludChwcmltVmFsdWUpKSwgY29tcGFyaXNv
bk1vZGUpOwogCi0gICAgICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJl
cihnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJl
VG9Eb3VibGUoYXNCaWdJbnQodjEpLCBudW1iZXJWYWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZTo6TGVzc1RoYW4pCisgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkg
PCB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGNvbXBhcmlzb25Nb2RlID09
IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKTsKKyAgICAgICAgcmV0
dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDw9IHYyLmJpZ0ludDMyQXNJbnQzMigpOwogICAgIH0K
LSAgICAKLSAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYxOwotICAgIGlmIChwcmltVmFsdWUuaXNT
dHJpbmcoKSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9i
YWxPYmplY3QpKTsKKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIHYxSGVhcEJpZ0ludCA9IG51bGxw
dHI7CisgICAgSlNCaWdJbnQqIHYySGVhcEJpZ0ludCA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6
IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRoIGZvciBhIGNvbXBhcmlzb24gYmV0d2VlbiBhIHNtYWxs
IGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpCisgICAgICAg
IHYxSGVhcEJpZ0ludCA9IHYxLmFzSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBlbHNlIGlmICh2MS5pc0JpZ0ludDMyKCkpCisgICAgICAgIHYxSGVhcEJpZ0ludCA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCB2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAg
IGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50ID0gdjIuYXNIZWFw
QmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHYyLmlzQmlnSW50MzIo
KSkKKyAgICAgICAgdjJIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYyLmJp
Z0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxSGVhcEJpZ0ludCAmJiB2Mkhl
YXBCaWdJbnQpCisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpj
b21wYXJlKHYxSGVhcEJpZ0ludCwgdjJIZWFwQmlnSW50KSwgY29tcGFyaXNvbk1vZGUpOworCisg
ICAgaWYgKHYxSGVhcEJpZ0ludCkgeworICAgICAgICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBj
b21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHYxSGVhcEJpZ0ludCwg
djIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAg
IGlmICghYmlnSW50VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYmlnSW50VmFsdWUs
IGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludENv
bXBhcmVSZXN1bHQoY29tcGFyaXNvblJlc3VsdCwgY29tcGFyaXNvbk1vZGUpOwogICAgIH0KLSAg
ICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRD
b21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHByaW1WYWx1ZSksIGFzQmln
SW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBkb3VibGUgbnVtYmVyVmFsdWUg
PSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAKKyAgICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJl
QmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHYySGVhcEJpZ0ludCwgdjEpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAvLyBIZXJlIHdlIGNo
ZWNrIGludmVydGVkIGJlY2F1c2UgQmlnSW50IGlzIHRoZSB2MgotICAgIEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQgPSBKU0JpZ0ludDo6Y29tcGFyZVRvRG91Ymxl
KGFzQmlnSW50KHYyKSwgbnVtYmVyVmFsdWUpOwogICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBK
U0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQogICAgICAgICByZXR1cm4gY29tcGFy
aXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47Ci0K
ICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3Vs
dDo6R3JlYXRlclRoYW4gfHwgY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNv
blJlc3VsdDo6RXF1YWw7CisKKwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgdG9QcmltaXRpdmVO
dW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdiwgSlNWYWx1ZSYg
cCwgZG91YmxlJiBuKQpAQCAtMzU3LDcgKzM4NCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xl
c3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikK
ICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgaWYg
KHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CisgICAgaWYgKHdhc05vdFN0cmluZzEg
fHwgd2FzTm90U3RyaW5nMikgewogICAgICAgICBpZiAocDEuaXNCaWdJbnQoKSB8fCBwMi5pc0Jp
Z0ludCgpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRDb21w
YXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NU
aGFuKSk7CiAKQEAgLTQwNyw3ICs0MzQsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wganNMZXNzRXEo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAg
IH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2Fz
Tm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3
YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50
KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUo
Z2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5P
ckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSArNDc5LDM0OCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MgogICAgIHJldHVybiBqc0FkZE5vbk51bWJlcihnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAK
LUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorLy8gQmlnSW50MzJPcCBleHBlY3RzIGl0cyBvcGVy
YW5kcyB1bmJveGVkLCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0IHVuYm94ZWQgYXMgd2VsbAordGVt
cGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgRG91YmxlT3BlcmF0
aW9uLCB0eXBlbmFtZSBCaWdJbnQzMk9wPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGFyaXRobWV0
aWNCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYgaGVhcEJpZ0ludE9wLCBEb3VibGVPcGVyYXRp
b24mJiBkb3VibGVPcCwgQmlnSW50MzJPcCYmIGJpZ0ludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZSkKIHsKLSAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CisgICAgSlNWYWx1ZSBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJpZ2h0
TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBp
ZiAobGVmdE51bWVyaWMuaXNOdW1iZXIoKSAmJiByaWdodE51bWVyaWMuaXNOdW1iZXIoKSkKKyAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKGRvdWJsZU9wKGxlZnROdW1lcmljLmFzTnVtYmVyKCksIHJp
Z2h0TnVtZXJpYy5hc051bWJlcigpKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxl
ZnROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzQmln
SW50MzIoKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmlnSW50MzJPcChs
ZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgSlNCaWdJ
bnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJ
bnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9w
KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9z
KTsKKyAgICAgICAgaWYgKHJpZ2h0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICAg
ICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxl
ZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJp
Z2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChs
ZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlz
QmlnSW50MzIoKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpT
QmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFs
T2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHRIZWFwQmlnSW50KSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBs
ZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7
CiAgICAgfQorI2Vsc2UKKyAgICAodm9pZCkgYmlnSW50MzJPcDsKKyAgICBpZiAobGVmdE51bWVy
aWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxl
ZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91Ymxl
PihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOworQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVm
dCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0
OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJf
dCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2Vk
PGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQg
LT0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICAo
dm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGlj
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpzdWIsIGRvdWJsZU9wLCBi
aWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRy
YWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0
ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0ICo9IHJpZ2h0OworICAgICAgICBpZiAocmVzdWx0Lmhh
c092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7Cisj
ZWxzZQorICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OworICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJl
dHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50Ojpt
dWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OworICAgIH07
CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAoIXJpZ2h0KQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0
OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmRpdmlkZSwgZG91YmxlT3AsIGJpZ0ludDMy
T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24uIl9z
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3Vi
bGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAg
ICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9w
ID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBGSVhNRTog
ZG8gc29tZXRoaW5nIG1vcmUgY2xldmVyIGhlcmUuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpyZW1haW5kZXIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlci4iX3MpOworfQorCitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUganNQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJs
ZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBvcGVyYXRp
b25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtd
IChpbnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgLy8gRXhwb25lbnRpYXRp
b24gb24gaW50ZWdlcnMgaXMgYm90aCBzb21ld2hhdCBzbG93IGluIHRoZSBiZXN0IGNhc2UsIGFu
ZCB2ZXJ5IGxpa2VseSB0byBvdmVyZmxvdy4KKyAgICAgICAgLy8gU28gZG9uJ3QgYm90aGVyIHRy
eWluZyB0byBhdm9pZCBhIGhlYXAgYWxsb2NhdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpleHBvbmVudGlhdGUsIGRvdWJsZU9wLCBi
aWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9u
ZW50aWF0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0luYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAob3BlcmFuZE51
bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmlj
LmFzTnVtYmVyKCkgKyAxKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51
bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgKyAxOworICAg
ICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0
IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdW
YWx1ZSA+IElOVF9NQVgpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
Miwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworICAg
IEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMu
YXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGVjKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51bWVyaWMgPSB2MS50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVy
aWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwot
ICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisg
ICAgICAgIHJldHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFu
ZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBm
b2xsb3dpbmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50
byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMy
X3Q+KG5ld1ZhbHVlKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVy
aWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJ
bnQ6OmRlYyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9
CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
IG9wZXJhbmROdW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIofm9wZXJhbmROdW1lcmljLmFzSW50MzIoKSk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgfm9wZXJhbmROdW1lcmljLmJpZ0ludDMy
QXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpiaXR3aXNl
Tm90KGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIHNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIGJvb2wgaXNMZWZ0KQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJp
Z2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQz
MigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBsZWZ0SW50
MzIgPSBsZWZ0TnVtZXJpYy5hc0ludDMyKCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9
IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkgJiAzMTsKKyAgICAgICAgaW50MzJfdCByZXN1bHQgPSBp
c0xlZnQgPyAobGVmdEludDMyIDw8IHJpZ2h0SW50MzIpIDogKGxlZnRJbnQzMiA+PiByaWdodElu
dDMyKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CisgICAgfQorCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1l
cmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpbnQzMl90IHJpZ2h0SW50MzIgPSByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChyaWdodEludDMyIDwgMCkg
eworICAgICAgICAgICAgaXNMZWZ0ID0gIWlzTGVmdDsKKyAgICAgICAgICAgIHJpZ2h0SW50MzIg
PSAtcmlnaHRJbnQzMjsKICAgICAgICAgfQogCi0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
bXVsdGlwbGljYXRpb24uIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgLy8gVGhp
cyBzdGQ6Om1pbiBpcyBhIGJpdCBoYWNreSwgYnV0IHJlcXVpcmVkIGJlY2F1c2UgaW4gQysrIGl0
IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB0byBkbyBhIHNoaWZ0IHdoZXJlIHRoZSByaWdodCBvcGVy
YW5kIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGJpdC13aWR0aCBvZiB0aGUgbGVmdCBvcGVy
YW5kLgorICAgICAgICBpZiAoIWlzTGVmdCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIGxlZnRJbnQzMiA+PiBzdGQ6Om1pbihyaWdodEludDMyLCAzMSkp
OworCisgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgbGVmdCBzaGlmdCB3ZSBjYW4gb3ZlcmZs
b3cuIEkgZGVhbCB3aXRoIHRoaXMgYnkgYWxsb2NhdGluZyBIZWFwQmlnSW50cy4KKyAgICAgICAg
Ly8gRklYTUU6IGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGRvIHNvbWV0aGluZyBzbWFydGVyLCB0
cnlpbmcgdG8gZG8gdGhlIGxlZnQgc2hpZnQgYW5kIGRldGVjdGluZyBzb21laG93IGlmIGl0IG92
ZXJmbG93ZWQuCisgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBsZWZ0SW50MzIpOworICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmln
SW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0SW50MzIpOworICAgICAgICBpZiAo
aXNMZWZ0KQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6
bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdo
dFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwog
ICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdo
dE51bWVyaWMuaXNCaWdJbnQoKSkpIHsKKyAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBpc0xl
ZnQgPyAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQg
b3BlcmF0aW9uLiIgOiAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNp
Z25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIjsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgfQorCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlz
QmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQz
MkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCog
cmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1l
cmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQg
PSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmln
SW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNM
ZWZ0KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hp
ZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzTFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJl
dHVybiBzaGlmdChnbG9iYWxPYmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJs
ZSBsZWZ0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91Ymxl
IHJpZ2h0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVy
biBqc051bWJlcihsZWZ0VmFsdWUgKiByaWdodFZhbHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1JTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKQoreworICAgIGJvb2wgaXNMZWZ0ID0gZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGds
b2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOwogfQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZy
ZWVDZWxscygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFt
ZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3Ao
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVh
cEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNv
bnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwg
T3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMg
PSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdo
dE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0
TnVtZXJpYy5hc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIGludDMyT3AobGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5i
aWdJbnQzMkFzSW50MzIoKSkpOworICAgIC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJ
bnQzMiAvIEhlYXBCaWdJbnQsIGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8g
SW4gbWFueSBjYXNlcyB0aGVzZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVh
cC1hbGxvY2F0aW5nIHRoZSBzbWFsbCBiaWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5l
cmljIHBhdGguCisgICAgLy8gQnV0IGl0IGlzIHF1aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1
c2UgSGVhcEJpZ0ludCB1c2UgYSBzaWduIGJpdCB3aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBs
ZW1lbnQgcmVwcmVzZW50YXRpb24uCisjZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlz
QmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50KCkpKQorICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5p
c0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQq
IHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVt
ZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50
ID0gbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJp
Z0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50
LCByaWdodEhlYXBCaWdJbnQpKTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19j
YXN0PGludHB0cl90PigweGJhZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lz
ZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQoreworICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQp
IC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAg
ICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRo
ZW0sIGRvIHRoZSAiYW5kIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQg
ZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9i
YWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24u
Il9zKTsKK30KIAotaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJ
QkJMRV9XT1JEKSk7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJf
dCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAg
fTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2Ug
dW5ib3ggdGhlbSwgZG8gdGhlICJvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxk
IGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJh
dGlvbi4iX3MpOwogfQogCi1pbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qg
c2l6ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVf
dCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8g
VXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUg
Y2VsbCBjaGVjay4KLSAgICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtp
XSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkp
OwotICAgIH0KKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJp
Z2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9Owor
CisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJv
eCB0aGVtLCBkbyB0aGUgInhvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRv
IGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBv
ciB3aXRoIDB4MTIgYXQgdGhlIGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0
d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwg
aW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNl
ICd4b3InIG9wZXJhdGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
YmFzZSwgdWludDMyX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpYmJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJi
bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJs
ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25z
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygp
Cit7CisgICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNl
bGxzKCk7Cit9CisKKyNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
MHhiYWRiZWVmMCkKKworaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVl
KQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29k
ZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworfQorCitpbmxpbmUgdm9p
ZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBp
ID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNl
IGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2Vs
bCBjaGVjay4KKyAgICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9
IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwor
ICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCmluZGV4IDNkYzE3YjczMzU5Li40MDJkYWE3MTZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMzIxLDcg
KzMyMSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRp
dmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC0+c3RyaW5nUHJvdG90eXBlKCk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gQmlnSW50VHlwZSkKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ymln
SW50UHJvdG90eXBlKCk7CiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBTeW1ib2xUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWM1YTFkMTJjZmEuLmYyYzc5ZWI5YjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTAzLTAyICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpT
VmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVTRShCSUdJTlQzMikgZmxhZy4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIwLTAzLTAyICBQYXVsbyBNYXRvcyAg
PHBtYXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBKU0MgMzJiaXQgYWxpZ25tZW50IGlu
Y3JlYXNlIGdjYyB3YXJuaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVz
ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCAxYWQ2MTUwNzZjOS4uMTZj
OWJkMTI1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAtMTM5LDYgKzEzOSwxMCBAQAogI2VuZGlm
CiAjZW5kaWYgLyogIWRlZmluZWQoVVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoVVNFX0pTVkFM
VUUzMl82NCkgKi8KIAorI2lmIFVTRShKU1ZBTFVFNjQpCisjZGVmaW5lIFVTRV9CSUdJTlQzMiAx
CisjZW5kaWYKKwogLyogRklYTUU6IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBzcGVjaWZpYyBp
ZiBpdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2UgX19idWlsdGlu
X2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392237</attachid>
            <date>2020-03-02 18:30:25 -0800</date>
            <delta_ts>2020-03-02 18:32:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>400260</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVz
dHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4u
ODI1ZTg1ZDZiNjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFu
ZC1vdGhlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIu
anMKQEAgLTU5LDE3ICs1OSwxNyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsK
ICAgICAgICAgICAgIG5vSW5saW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RD
YXNlSW5kZXh9KTsKIAogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7
bGVmdH0sICR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAo
dGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7
bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25v
bW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAg
ICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3Jp
Z2h0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9y
cGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVz
dWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNM
ZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0p
ICE9ICR7bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNS
aWdodENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0p
CiAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENv
bnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRl
c3RQb2x5bW9ycGhpYygke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9
KSI7CisgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9u
KCR7bGVmdH0sICR7b3BlcmF0b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50
UmVzdWx0fSkiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICAr
K3Rlc3RDYXNlSW5kZXg7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEt
b24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9u
LXZhcmlvdXMtdHlwZXMuanMKaW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMKQEAgLTgzLDcgKzgzLDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAi
LCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAg
ICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRD
YXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0
IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0
Q2FzZXNbbGVmdENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkz
LDcgKzk0LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENh
c2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQg
PSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAg
ICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXgg
KyAiKSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3
YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1z
dHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3Qt
ZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAg
IHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAg
IGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFy
ZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJl
LmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBl
dmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNl
cHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDY0ZGEwYjYxNTguLmIx
MDc3ZGNhZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODcgQEAKKzIw
MjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBC
aWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0byBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFu
Y2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFsbCAoMzIgYml0IG9yIGxlc3MpLgorICAg
ICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGludG8gSlNWYWx1ZSBvbiA2NC1iaXQgcGxh
dGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBvZiBhIEpTQmlnSW50LgorICAgICAgICBU
aGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgICAgVGhp
cyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgor
ICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIg
dGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3
aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8g
dHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byB3
YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBj
YW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRv
IGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5l
ZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisKKyAgICAgICAgVGhpcyBlbnRpcmUgY2hh
bmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc2Fi
bGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4KKyAgICAgICAgSXQgc2hvdWxkIGFsc28g
bWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYgYSBnaXZlbiBidWcgY29tZXMgZnJvbSBp
dCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIE5vdGUgdGhhdCBpbiB0aGlzIHBh
dGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMgd2hlbiBwYXJzaW5nIEJpZ0ludCBjb25z
dGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4gQWRkIG9yIEJpdE9yKSBwcm9kdWNlIGEg
QmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5kcyBhcmUgQmlnSW50MzIsCisgICAgICAg
IGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIgZnJvbSBmb3IgZXhhbXBsZSB0aGUgc3Vi
c3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBoZWFwLWFsbG9jYXRlZCBKU0JpZ0ludHMs
IGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJpdHMuCisgICAgICAgIEFzIGEgcmVzdWx0
LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJlIGhlYXAtYWxsb2NhdGVkIG9yIGlubGlu
ZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBhIHNpZ25p
ZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBwYXRocywgd2hpY2ggYXJlIG5vdyBncm91
cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAgICAgICBCZWNhdXNlIHRoaXMgaW5jcmVh
c2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWduaWZpY2FudGx5LCBJIHNwbGl0IHRoZSBw
YXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9ubHkgdXNlZCBieSB0aGUgR0MgaW50byBT
Y3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21waWxlIHRpbWVzLgorCisgICAgICAgIElu
IHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVzZUtpbmRzIGZvciBCaWdJbnRzOiBIZWFw
QmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55QmlnSW50VXNlLgorICAgICAgICBUaGUgbGF0
dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIG5vdyB0aGF0IHdlIGFyZSByZWNlaXZpbmcgQmlnSW50cywg
YnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBvZiBoZWFwLWFsbG9jYXRlZCBhbmQgc21h
bGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGEgbmFpdmUg
aW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWduaWZpY2FudGx5IHJlZ3Jlc3NlcyB0aGUg
cGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMgdmFyaWFudHMpLCBhcyBpdCBpcyBubyBs
b25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24tY2VsbCBjYW5ub3QgYmUgZXF1YWwuCisg
ICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29kZSB3YXMganVtcGluZyB0byBhIHNsb3cg
cGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBkb3Vi
bGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFyZSBjZWxscworICAgICAgICBOb3csIGl0
IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBpcyBh
IGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBwZXJmb3JtYW5jZSBjb3N0LCBJIHNpZ25p
ZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20KKyAgICAgICAgICBpZiAobGVmdCBpcyBD
ZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQor
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQgaXMgSW50MzIpIHsKKyAgICAgICAgICAg
IGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAg
ICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJbnQzMikgeworICAgICAgICAgICAgaWYg
KHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAg
IH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodAorICAgICAgICBUbyB0aGUgZm9sbG93
aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisg
ICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCBy
aWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgdG8gYmUgZmFzdGVyIHRoYW4ganVzdCBy
ZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBieSBhbiB8fCwgYmVjYXVz
ZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBp
cyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVjZSB0aGUgcHJlc3N1cmUgb24gdGhlIGJy
YW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpldFN0cmVhbTIgdGVzdHMgYXBwZWFyIHRv
IGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdobHkgbmV1dHJhbCB3aGlsZSBpdCB3YXMg
YSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0aGlzIHRyaWNrLCBidXQgdGhlIG51bWJl
cnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRvIGRvIG1vcmUgbWVhc3VyZW1lbnRzIGJl
Zm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgSSBkb24ndCB5ZXQgaGF2ZSBwZXJm
b3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9uIGEgQmlnSW50IGJlbmNobWFyaywgSSB3
aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWluZyB0byBsYW5kIGl0LCBidXQgSSdkIGxp
a2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3Jt
YXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyOjptZW1vcnlNb2RSTSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQzMiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoV1RGOjpwcmlu
dEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAgICAg
KEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlTm9uSW50MzIpOgorICAgICAgICAoSlND
OjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQpOgorICAgICAgICAoSlNDOjpPYnNl
cnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2
ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAq
IGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRpb24pOgorICAgICAgICAoSlND
OjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZy
b21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAg
ICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OmxlYXN0VXBw
ZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKToKKyAgICAgICAgKiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc0JpZ0ludDMyU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50
Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
b25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRC
aXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJp
dHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
T3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
UG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjplZGdlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Om5vZGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6Z3ByKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1VzZUtp
bmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZH
VXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAo
SlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZh
bHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29u
c3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmg6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0UlNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0TFNoaWZ0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0TFNoaWZ0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpdFVSU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1lcmlj
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVF
cSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
SXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0Qmlu
YXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRC
aW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YnVpbGRU
eXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dIZWFwQmln
SW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0JpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnVuYm94QmlnSW50MzIpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QW55QmlnSW50KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNIZWFwQmlnSW50KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJ
bnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGhl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1
aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAg
ICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENv
bnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJh
bmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVy
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkhlYXBCaWdJbnQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90SGVhcEJpZ0ludCk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5ib3hCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJl
bmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6Y2FsbEJpZ0ludENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmlnSW50T2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9CaWdJbnRPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc0Jp
Z0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlB
cml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhP
cCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRlYyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRv
U3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb051bWJlcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb0ludDMyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFzSGVhcEJpZ0ludCk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJT
bG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNQcmlt
aXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIp
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVyaWMgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1
YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0
U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0hlYXBCaWdJbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvQm9vbGVhbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0Jvb2xlYW4gY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUlu
Zm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzQWRkU2xv
d0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICog
cnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmNvbXBhcmVCaWdJbnRUb090aGVy
UHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29tcGFyZSk6CisgICAgICAgIChKU0M6
OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0VxKToKKyAgICAgICAgKEpTQzo6YXJpdGht
ZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNTdWIpOgorICAgICAgICAoSlNDOjpqc011
bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAgICAgKEpTQzo6anNSZW1haW5kZXIpOgor
ICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChKU0M6OmpzSW5jKToKKyAgICAgICAgKEpT
Qzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VOb3QpOgorICAgICAgICAoSlNDOjpz
aGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNSU2hpZnQp
OgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc0JpdHdp
c2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VPcik6CisgICAgICAgIChKU0M6OmpzQml0
d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3JpYmJsZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6
c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlNDOjppc1NjcmliYmxlZFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKToKKwog
MjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1YnNjcmlw
dCBhbGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOC4uYmE2
NTFiMGU0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYsNiArODY2LDcg
QEAKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0Uz
ODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkyQUY3MzgyRDE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0
cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0
NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmli
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzEx
MUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyog
QjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRo
c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzNCMkE1NDcy
MjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRGQjFCREFDREFDMDA4MEZGNzQgLyogQjNW
YWx1ZUlubGluZXMuaCAqLzsgfTsKQEAgLTM1MDcsNiArMzUwOCw3IEBACiAJCTJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhBMjM5NzI1NjUw
MEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRp
bWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
T3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBiMy9CM09wdGlt
aXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4
cHJlc3Npb25UcmVlcy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lv
blRyZWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMw
MEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGlt
aW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTQzLDYg
Kzc1NDUsNyBAQAogCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHNUYWJsZS5oICovLAogCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNl
dC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0Lmgg
Ki8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8sCiAJCQkJ
MTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3BwICovLAogCQkJ
CTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi8sCiAJCQkJ
ODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywKQEAgLTg5MDcs
NiArODkxMCw3IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAw
QjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIy
Mzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEx
QzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAppbmRleCBjMTAwMjQwNGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNDY5OCw3ICs0Njk4
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAgICAvLwotICAg
ICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRl
IGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCisgICAgICAgIC8vIEFuIGltbWVkaWF0ZSBz
aG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4g
ZW1pdHRlZC4KICAgICAgICAgLy8gVGhlIHdyaXRlcyBhcmUgdW5jaGVja2VkIHNpbmNlIHRoZSBv
cGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4KIAogICAgICAg
ICB2b2lkIGltbWVkaWF0ZTgoaW50IGltbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggZmVhNjY3NDViNjIuLmYyYzA1ODRkNDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Myw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBU
YWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BS
UmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEVt
aXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1p
dFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRF
bWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYmICFzaG91
bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTggQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IENDYWxsSGVscGVyczo6SnVtcCBub3RCaWdJbnQzMiA9IGppdC5icmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0ludDMyKGppdCk7
CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIubGluaygmaml0
KTsKKyNlbHNlCisgICAgKHZvaWQpIHRlbXBHUFI7CisjZW5kaWYKKwogICAgIG5vbk51bWVyaWMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5vbk51bWVyaWMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIGVt
aXRTZXRCaWdJbnQoaml0KTsKKyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBCaWdJbnQoaml0
KTsKICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVyaWMubGluaygm
aml0KTsKQEAgLTg4LDE5ICs5NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBl
Pjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7Cisg
ICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25z
dAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7Cisg
ICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAg
cmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBC
aXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0Qmln
SW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRU
eXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7Ci0gICAg
aWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQo
aml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVtaXRTZXRIZWFw
QmlnSW50KCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1
bHRzOjpIZWFwQmlnSW50KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBsYXRlPHR5cGVu
YW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRT
ZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkRW1p
dFNldEJpZ0ludDMyKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2
ZWRSZXN1bHRzOjpCaWdJbnQzMik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlwZW5hbWUgQml0
ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFVuY29uZGl0
aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBjb25zdAogewpA
QCAtMTQ5LDggKzE3OCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkludDUyT3ZlcmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsK
ICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50KCkpIHsKLSAg
ICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAgICAgaWYgKHBy
b2ZpbGUuZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIoKSkgeworICAg
ICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAgICAgICAgICBz
ZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdjMWZlNzEzYjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEg
PDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJP
dmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwK
KyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAg
ICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVt
Qml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVl
ZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNp
dCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQog
ICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMg
JiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50
KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQg
fCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2Jp
dHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRP
YnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3Vi
bGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRz
ICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJl
dHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkg
eyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkg
eyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0K
ICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50
MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVy
biBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2Jz
ZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3Qg
eyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9v
bCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygp
LmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2Vy
dmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9i
c2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlk
T2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1pl
cm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9
CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJl
c3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRP
YnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAg
IHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpI
ZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9i
c2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3Zl
cmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAg
dm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6
OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVk
UmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJs
ZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAg
ICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAo
dmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1
bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAg
LTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMg
KEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlm
IGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxs
SGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsK
IAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgp
IGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAot
ICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0
OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldEhl
YXBCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3VsZEVtaXRTZXRC
aWdJbnQzMigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVtaXRTZXRCaWdJ
bnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBlbWl0VW5jb25k
aXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0OwogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCkBAIC0xNzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0aFByb2ZpbGVC
YXNlID0gdWludDE2X3Q7CiBjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFBy
b2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVtQml0c05lZWRl
ZDsKIAotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAi
U2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51
bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxk
IGZpdCBpbiB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBl
Qml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xhc3MgQmluYXJ5
QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNl
PiB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0gc2l6ZW9mKEJp
bmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgs
ICJTaG91bGQgZml0IGluIHRoZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3RhdGljX2Fzc2Vy
dCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNw
ZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJp
dHMgc2hvdWxkIGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzcGVjaWFsRmFzdFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRp
Y19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2spKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0
aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLjQ4Yjc4NzBlY2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTMyNyw2ICszMjcsNyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAgOmlzX3VuZGVm
aW5lZF9vcl9udWxsLAogICAgICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlzX251bWJlciwK
KyAgICAgICAgOmlzX2JpZ19pbnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAgICAgIDppc19v
YmplY3Rfb3JfbnVsbCwKICAgICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmgKaW5kZXggOWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NCw2
ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJc1VuZGVmaW5l
ZE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5kKQogICAgIFVT
RVMoT3BJc051bWJlciwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9wZXJhbmQpCiAg
ICAgVVNFUyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVjdE9yTnVsbCwg
b3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBAIC00MjMsOSAr
NDI0LDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBu
dW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElkZW50aXR5V2l0
aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAgIERFRlMoT3BJ
c1VuZGVmaW5lZCwgZHN0KQotICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQorICAg
IERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jvb2xlYW4sIGRz
dCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJbnQsIGRzdCkK
ICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RPck51bGwsIGRz
dCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTFlZWZhMDA5OGUuLjNjMGVjZmNmMmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NTksNyArNTksNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCmluZGV4IDMyZjU4OGRiZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBAQCBlbnVtIERh
dGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUsCiAgICAgRGF0
YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAgICBEYXRhRm9y
bWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0YUZvcm1hdEpT
ID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3Jt
YXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpT
IHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRp
bmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9y
bWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmlu
ZGV4IDcwMWMzMzA4OWI5Li44MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0
VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0Cit2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUg
bW9kZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgTm9uZToKQEAg
LTY3LDEyICs2NywxMiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRS
ZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0
aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0
ZXJzKTsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0
LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNh
c2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlBcml0aFByb2Zp
bGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsK
KyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVn
cywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKaW5kZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUluZGV4LmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisj
aW5jbHVkZSAiVGFnUmVnaXN0ZXJzTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODMs
NyArODQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1
ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFy
eSByZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3Rpbmcg
QmlnSW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFs
dWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3Rl
cnMpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApp
bmRleCAxMDUzYmE1MmI1NC4uNzcxYzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSArMjM5LDYgQEAg
dm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2YWx1ZSAmIFNw
ZWNCaWdJbnQpCi0gICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAodmFs
dWUgPT0gU3BlY0ludDMyT25seSkKQEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAgIAorCisgICAg
aWYgKCh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IFNwZWNCaWdJbnQpCisgICAgICAgIHN0ck91dC5w
cmludCgiQmlnSW50Iik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgeworICAgICAgICBp
ZiAodmFsdWUgJiBTcGVjQmlnSW50MzIpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0lu
dDMyIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKHZhbHVlICYgU3BlY0hlYXBCaWdJbnQpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQo
IkhlYXBCaWdJbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KyAgICB9CisjZW5kaWYKKwogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCiAg
ICAgICAgIHN0ck91dC5wcmludCgiRG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBAIC00MzEsNyAr
NDQyLDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICAKICAg
ICBpZiAoY2xhc3NJbmZvID09IEpTQmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBTcGVj
QmlnSW50OworICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBpZiAoY2xhc3NJ
bmZvID09IEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9i
amVjdDsKQEAgLTQ5OSw4ICs1MTAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5n
OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpCiAg
ICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IEJpZ0ludFR5cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGlm
IChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQorICAgICAg
ICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gRGVyaXZlZEFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJy
YXk7CiAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpKTsKQEAgLTUzNiw2ICs1NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21WYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0Rv
dWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CisgICAgaWYg
KHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DZWxsKHZh
bHVlLmFzQ2VsbCgpKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01OTUsOCArNjA4
LDggQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBTeW1ib2xUeXBl
OgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5cGU6Ci0gICAg
ICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CisgICAgICAg
IHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0
dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02MzIsNiArNjQ1
LDEwIEBAIFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50
U3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAmIFNwZWNTdHJp
bmcpCiAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBlICYgU3BlY0Jp
Z0ludCkKKyAgICAgICAgdHlwZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJuIHR5cGU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
aW5kZXggNWRiMThjNjQ4MmQuLmRmMGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwxNCBAQCBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNP
dGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRl
ZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Jv
b2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBO
dWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNF
bXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0
MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0
MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9jYXRlZCBvbiB0
aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
c21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBT
cGVjQmlnSW50MzIgfCBTcGVjSGVhcEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDM7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3Ry
aW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0Jp
Z0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlW
aWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3Ry
aW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21p
c2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2Jq
ZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFy
cmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVz
ZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGlj
IGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxP
dGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNh
biBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNE
b3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8
IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTQ2VsbC4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hl
YXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMy
IHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhl
IGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4u
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUlt
cHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2Rl
IGxvY2FsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRvcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1iZXI7
IC8vIEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4b3Rp
YyBlbmNvZGluZ3Mgb2YgbnVtYmVycy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9v
bCBpc1N5bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJ
bnQzMjsKK30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmlnSW50OworfQor
CiBpbmxpbmUgYm9vbCBpc0JpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAhIXZhbHVlICYm
ICh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0FycmF5
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGZh
M2FiYmQxMWFkLi5kZDQyNjAzNTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2Fy
aWNoQHV3YXRlcmxvby5jYT4KICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAq
CkBAIC0xNjY4LDcgKzE2NjgsMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFs
aXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAi
YmlnaW50IikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSk7
CisjZWxzZQogICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0
LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJvYmplY3Qi
KSB7CkBAIC0yODc2LDcgKzI4ODAsNyBAQCBKU1ZhbHVlIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRC
aWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50OAogICAgIHJl
dHVybiBtX2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRlbnRpZmllci5pbXBsKCks
IHJhZGl4LCBzaWduKSwgWyZdIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0oKSk7CiAgICAgICAgIGF1dG8gcGFyc2VJbnRTaWduID0gc2lnbiA/IEpTQmlnSW50
OjpQYXJzZUludFNpZ246OlNpZ25lZCA6IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVk
OwotICAgICAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVs
bHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBh
cnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOworICAgICAgICBKU1ZhbHVl
IGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlkZW50aWZp
ZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0
aW9ucywgcGFyc2VJbnRTaWduKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
ICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCAyOTg5Mzc0MGE4NS4uMGEwMDNiOGY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEwODksNyArMTA4
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVzaW5nIE51bWJlck1hcCA9IEhhc2hN
YXA8ZG91YmxlLCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgSWRlbnRpZmllclN0cmluZ01hcCA9
IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElkZW50aWZpZXJSZXBIYXNo
PjsKLSAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFw
RW50cnksIEpTQmlnSW50Kj47CisgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBI
YXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yU2V0ID0gSGFzaFNldDxSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Pj47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlRGVzY3JpcHRvck1hcCA9IEhhc2hNYXA8dWludDY0
X3QsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiwgV1RGOjpJbnRIYXNoPHVpbnQ2NF90Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggZTk1ODAwYWZmMjYuLmU4ODIyNTAwNjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVjdG9yLmgi
Ci0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgpAQCAt
MjE0LDcgKzIxMyw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZN
JiB2bSwgYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmCiAgICAgICAgIGJvb2wgb3Zl
cnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5m
b3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAg
VHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAgIEFTU0VS
VCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5
cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0ludFR5cGUpOworICAgICAg
ICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBl
IHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gSGVhcEJpZ0lu
dFR5cGUpOwogICAgICAgICAgICAgaWYgKCFpc1N0cmljdE1vZGUpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKQEAgLTUwMiw3
ICs1MDEsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpIHsKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7Cisg
ICAgICAgICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVG
b3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZCgpOwpAQCAtNTMyLDcgKzUzNiwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBpZiAoaGFuZGxlQ29uc3RhbnRCaW5hcnlCaXR3aXNlT3Aobm9kZSkpCiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIGJpbmFyeVVzZUtpbmQgbWVh
bnMgdGhhdCB3ZSBjYW5ub3Qgc3BlY2lhbGl6ZSB0byAoZm9yIGV4YW1wbGUpIGEgSGVhcEJpZ0lu
dCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgIEFTU0VSVChVU0Vf
QklHSU5UMzIpOworICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBC
aWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55Qmln
SW50VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC03MjIsMTEgKzcz
MiwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogCiAgICAgY2FzZSBWYWx1ZVN1YjoKICAg
ICBjYXNlIFZhbHVlQWRkOiB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludFVzZSk7Ci0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRV
c2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7Cisg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlw
ZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBkbyB3ZSByZWFsbHkgbmVlZCBTcGVjU3RyaW5nIGhlcmUgZm9yIFZhbHVlU3ViPyBJdCBzZWVt
cyBsaWtlIHdlIG9ubHkgbmVlZCBpdCBmb3IgVmFsdWVBZGQuCiAgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjU3RyaW5nIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC04ODYsNiArODk5LDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVmFsdWVOZWdhdGU6
IHsKKyAgICAgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIG11Y2ggc21hcnRlciB0aGluZ3MgZm9y
IEJpZ0ludHMsIHNlZSBWYWx1ZUFkZC9WYWx1ZVN1Yi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7
CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNC
aWdJbnQpOwogICAgICAgICBicmVhazsKQEAgLTk1OCw3ICs5NzIsMTEgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBzZXRO
b25DZWxsVHlwZUZvck5vZGUobm9kZSwgdHlwZU9mRG91YmxlSW5jT3JEZWMoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBC
aWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgICAgIHNldFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAg
ICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC05NzQsNyArOTkyLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgSlNWYWx1ZSBjaGlsZFkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGRYICYmIGNoaWxkWSAmJiBjaGlsZFguaXNOdW1i
ZXIoKSAmJiBjaGlsZFkuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBj
YWxsIGBkaWRGb2xkQ2xvYmJlcldvcmxkYCBoZXJlIGJlY2F1c2UgdGhpcyBwYXRoIGlzIG9ubHkg
cG9zc2libGUKLSAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNl
LiBJbiB0aGUgY2FzZSBvZiBCaWdJbnRVc2UsIGNoaWxkcmVuIHdpbGwgYmUKKyAgICAgICAgICAg
IC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBBbnlC
aWdJbnRVc2Ugb3IgZnJpZW5kcywgY2hpbGRyZW4gd2lsbCBiZQogICAgICAgICAgICAgLy8gY2xl
YXJlZCBieSBgQWJzdHJhY3RJbnRlcnByZXRlcjo6ZXhlY3V0ZUVmZmVjdHNgLgogICAgICAgICAg
ICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgLy8gT3VyIGJveGluZyBzY2hl
bWUgaGVyZSBtYXRjaGVzIHdoYXQgd2UgZG8gaW4gb3BlcmF0aW9uVmFsdWVQb3cuCkBAIC05ODIs
NyArMTAwMCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50
VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZv
ck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkBAIC05OTIsNyArMTAxMiwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgIH0KIAogICAgIGNhc2UgVmFsdWVNdWw6IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBj
b2RlIG5vdCBzaGFyZWQgd2l0aCBWYWx1ZVN1Yj8KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9k
ZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVz
ZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtMTA1Niw3ICsxMDc5LDkg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2
T3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAg
ICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtMTM4MCw2ICsxNDA1LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNh
c2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAg
ICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNP
YmplY3RPck51bGw6CkBAIC0xNDA4LDYgKzE0MzQsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc051bWJlcigpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQmlnSW50KCkpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2Vy
OgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihOdW1iZXJDb25z
dHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChjaGlsZC52YWx1ZSgpKSkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTU2Miw3ICsxNTkxLDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIElzQmlnSW50OgorICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNCaWdJ
bnQpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUp
KTsKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlw
ZSAmIFNwZWNCaWdJbnQpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNC
b29sZWFuKGZhbHNlKSk7CisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBG
SVhNRTogaWYgdGhlIFNwZWN1bGF0ZWRUeXBlIGluZm9ybXMgdXMgdGhhdCB3ZSB3b24ndCBoYXZl
IGEgQmlnSW50MzIgKG9yIHRoYXQgd2Ugd29uJ3QgaGF2ZSBhIEhlYXBCaWdJbnQpLCB0aGVuIHdl
IGNhbiB0cmFuc2Zvcm0gdGhpcyBub2RlIGludG8gYSBJc0NlbGxXaXRoVHlwZShCaWdJbnRUeXBl
KSAob3IgYSBoeXBvdGhldGljYWwgSXNCaWdJbnQzMiBub2RlKS4KIAorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgaWYgKCEoY2hp
bGQubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKQEAgLTE5MzYsMTMgKzE5ODAsMTUgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIC8v
IEZJWE1FOiB3aHkgaXMgdGhpcyBjaGVjayBoZXJlLCBhbmQgbm90IGxhdGVyIChhZnRlciB0aGUg
dHlwZS1iYXNlZCByZXBsYWNlbWVudCBieSBmYWxzZSkuCisgICAgICAgIC8vIFNhYW0gc2VlbXMg
dG8gYWdyZWUgdGhhdCB0aGUgdHdvIGNoZWNrcyBjb3VsZCBiZSBzd2l0Y2hlZCwgSSdsbCB0cnkg
dGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoVW50eXBlZFVzZSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgY29u
ZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KLSAgICAgICAgICAgIGF1dG8g
aXNOb25TdHJpbmdDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmco
KTsKKyAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtd
IChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVl
LmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsK
ICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmIChpc05vblN0cmluZ0NlbGxDb25zdGFu
dChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25zdGFudChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5n
T3JCaWdJbnRDZWxsQ29uc3RhbnQocmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CiAgICAgICAgICAgICAgICAgc2V0Tm9u
Q2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTE5NTcsMTkgKzIwMDMsMjQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IG5vZGUtPmNoaWxk
MigpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2Up
IHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSB8fAot
ICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkgfHwKLSAg
ICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSB8fAotICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkgfHwKLSAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKSB8fAotICAgICAgICAg
ICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpIHx8Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAg
ICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpIHx8Ci0g
ICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RT
dHJpbmdWYXJVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5v
dFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkgfHwKLSAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKSkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBjYXNlIG5vdCBpbnZvbHZpbmcgTmFOIHdoZXJl
IHggPT09IHggaXMgbm90IGd1YXJhbnRlZWQgdG8gcmV0dXJuIHRydWU/CisgICAgICAgICAgICAv
LyBJZiBub3QgSSBtaWdodCBzbGlnaHRseSBzaW1wbGlmeSB0aGF0IGNoZWNrLgorICAgICAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQorICAgICAgICAgICAgICAg
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoT2JqZWN0VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKQorICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFyVXNlKQorICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0
cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdVc2UsIFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCBkMWZhMGIzMTc4Ny4uYzhjMjVjMzBkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NTYyLDYgKzU1NjIsMTQg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX251bWJlcik7CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIG9wX2lzX2JpZ19pbnQ6IHsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOwor
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0Jp
Z0ludD4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFu
ZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSXNCaWdJbnQs
IHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19iaWdfaW50KTsKKyAgICAg
ICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+
KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1
OWI3NzgwYTZjLi4wM2U4OWIyNmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQ5LDYgKzE0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJCiAgICAgY2FzZSBvcF9pc191bmRlZmluZWRfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lz
X2Jvb2xlYW46CiAgICAgY2FzZSBvcF9pc19udW1iZXI6CisgICAgY2FzZSBvcF9pc19iaWdfaW50
OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6
CiAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlwZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIzMThmZTAzYWUuLmVjMWVmOWYwMjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NSw2ICsxNzUsNyBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAg
ICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50
OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2Fz
ZSBJc1R5cGVkQXJyYXlWaWV3OgpAQCAtMjYwLDcgKzI2MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY4NSw3ICs2ODYsOSBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0lu
dFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAgICAgICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNl
OgpAQCAtNzA3LDcgKzcxMCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBW
YWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0TFNoaWZ0OgogICAgIGNhc2UgVmFsdWVCaXRSU2hp
ZnQ6Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgeworICAg
ICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2Ygc2luZ2xlLWFyZ3VtZW50IGlzQmluYXJ5VXNlS2lu
ZCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gc3BlY2lhbGl6aW5nIChmb3IgZXhhbXBsZSkgZm9yIGEg
SGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiNDNmN2NmNTRlMS4uYWM2ODM0
MzMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJv
ZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaXNOb25TdHJp
bmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlz
U3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZh
bHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0
YW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNj
OGZkNWRjLi5lYWE1YjI0MTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNs
dWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMTQ3LDYgKzE0
Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIElz
VW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6
CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNl
IElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlOTdkZTEwZjZmNC4uOTI0ODZmYmFmZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIw
MSwxNCArMjAxLDM0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3Vs
dEludDMyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJl
ZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFs
aXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhlcndpc2UuCisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9wdGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFs
aXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgICAg
IG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOworICAgICAgICAg
ICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRl
eEluQmxvY2ssIFNwZWNIZWFwQmlnSW50LCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5m
byhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0YW50T25lLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFudE9uZSkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRzIGFyZSBjZWxscywgc28gdGhlIGRlZmF1
bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMy
KCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6
IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50MzIsIEpTQ29uc3RhbnQs
IG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQy
KEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBO
b2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3Igc21hbGwg
QmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhl
IGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2Vw
dCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3Bl
Y2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIGluIHRoYXQgY2FzZS4KICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKLSAgICAg
ICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1f
aW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5m
byhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0YW50T25lLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9p
bmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcElu
Zm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRP
bmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUgY3VycmVudGx5IGNlbGxzLCBzbyB0aGUgZGVm
YXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBk
ZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJp
dGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFy
aXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNCwxMiArMjU0LDIwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2Um
IGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlC
aWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICAg
fQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+
Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4o
Y2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMik7CkBA
IC0yNjcsOCArMjk1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUo
KSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVI
ZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
eworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTMxMiw3ICszNTMsMTcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdl
Lm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICBub2Rl
LT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4ob3BlcmFuZEVkZ2UpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZWxzZQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworI2VuZGlmCiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlVW50
eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ob3Bl
cmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NTcsOSArNTA4LDE3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgp
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJ
bnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CisjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTU0NSw4ICs2MDQsMjEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
IAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQu
bm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihsZWZ0Q2hpbGQubm9kZSgpLCByaWdo
dENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9k
ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTU4NywxMiArNjU5LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBsZWZ0
Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBu
b2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9k
ZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsg
CiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQu
bm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obGVmdENoaWxk
KTsKQEAgLTY1NiwxMiArNzM2LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVh
cEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAg
ICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVk
Rm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUo
KSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTI1NDAsNiArMjYyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmlu
ZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVy
OgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgog
ICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1l
bnRzOgpAQCAtMjg4MCw3ICsyOTY5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
QmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CkBAIC0yOTUzLDcgKzMwNTEsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8v
IElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBpcyBCaWdJbnQsIHdlIGF0dGVtcHQgdG8g
Y29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNpbmNlIGl0IGNhbiBvbmx5IHJldHVybiBh
IEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDMzLDEzICszNTQwLDE1IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIEtub3duU3Ry
aW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6
CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RV
c2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICBp
ZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkKICAgICAgICAgICAgICAgICB8fCBpc0Nl
bGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBt
X3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5i
b3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hv
dWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UgPworICAgICAgICAv
LyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBhbGwgb2YgdGhlIFVzZUtpbmRzIHdoaWNo
IGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NDksMTIgKzQwNTgsMjYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmlj
dEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQz
MlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJp
Y3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+
Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAgICAgICAgIGZp
eEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVk
Z2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxLi5mODE3MGQ5MmJmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZH
TnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCAxMzQ1NWI1YzI5Zi4uOTdmMTdhMDg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjU0MSw2ICsyNTQxLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0K
KyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAg
IH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpCiAgICAgewpAQCAtMjc0
MSw3ICsyNzUzLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCk7CiAgICAg
fQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRl
SGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9w
MS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXgg
ZTIxMWVhNzdkODUuLmFmMGYzZjc0MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCkBAIC0zOTUsNiArMzk1LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKElzVW5kZWZpbmVkT3JOdWxsLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAog
ICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc051
bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICAvKiBJc0JpZ0ludCBpcyBvbmx5IHVzZWQg
d2hlbiBVU0VfQklHSU5UMzIuIE90aGVyd2lzZSB3ZSBlbWl0IElzQ2VsbFdpdGhUeXBlICovXAor
ICAgIG1hY3JvKElzQmlnSW50LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKE51bWJl
cklzSW50ZWdlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09iamVjdCwgTm9k
ZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09iamVjdE9yTnVsbCwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDIz
ZWJlMGQ3YmM3Li5iMjIxMTliOWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxMyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAg
ICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSBy
ZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdSZWdpc3RlciwKICAgICAgICAgICAgICAgICAv
LyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0LgogICAgICAgICAgICAgICAgIGppdC5s
b2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRk
cmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgbm90Q2VsbE1h
c2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdpc3RlciwgZm9yIHRoZSBzYW1lIHJlYXNvbi4K
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmluZCBhIGxlc3MgZ3Jvc3Mgd2F5IG9mIGRvaW5n
IHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcgdGhlc2Ugb3BlcmF0aW9ucyB1bnRpbCB3ZSBh
Y3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0ZXJzIGFyb3VuZD8KKyAgICAgICAgICAgICAg
ICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFn
UmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSk7Cisg
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhl
eGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIs
IERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzayksIEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAg
ICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KQEAgLTM5OCw3ICs0MDEsNyBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2Ny
YXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3Mo
KSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0LnBv
cFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00MDcsMTAgKzQxMCwxMCBAQCB2b2lkIE9T
UkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4
aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFRh
Zyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5w
YXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwg
dmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUo
c2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3MoKSk7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNv
dXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4
IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCAyZmRiOWM5ZDc2Ny4uYTI2NWMwYWE3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNsdWRlICJUeXBl
ZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9J
bmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5BQkxFKEpJVCkK
ICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMSw1NiArMjIwLDYgQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1
dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0
eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9w
ZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRpb24mJiBudW1iZXJPcCwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwot
ICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVt
ZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihudW1iZXJPcChXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKSkpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9u
Pgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYml0d2lzZUJpbmFyeU9wKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50
T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQot
ewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFs
dWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9w
MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwot
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVy
cm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQzMk9wKFdURjo6Z2V0PGludDMyX3Q+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQogc3RhdGlj
IEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFyc2VJbnRSZXN1bHQoZG91YmxlIGlucHV0
KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0PGludD4oaW5wdXQpOwpAQCAtNDcwLDcx
ICs0MTksMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1v
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnJl
bWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBu
dW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAg
ICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFp
bmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JlbWFpbmRl
cihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9w
ZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4o
b3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFs
dWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0luYyhnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3Ax
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6
Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RlYyhn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0g
ICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFu
ZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih+V1RG
OjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NDMsMTUgKzQ1NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBK
U0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQz
Ml90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVm
dCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0
aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VBbmQoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU2MCwxNSArNDY0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0
KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10g
KGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVy
biBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xv
YmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9w
ZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlT3IoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NzcsMTUgKzQ3Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJp
Z2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3Io
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICBy
ZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9w
KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQz
Mk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hv
cicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VY
b3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01OTQs
MTUgKzQ4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50
T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpT
QmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojps
ZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewot
ICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0
dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVk
T3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpCkBAIC02MTEsMTUgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAg
IGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJ
bnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJp
Z2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7
Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4i
X3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0VVJT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjU3LDE1ICs1MjksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+
IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJs
ZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBsZWZ0IC8g
cmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24gb3BlcmF0aW9uLiIpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpCkBAIC02NzQsMTUgKzUzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwg
cmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXgg
b2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJhdGlvbi4iX3Mp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNQb3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQog
CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEFicyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQpAQCAtMTQ3OSw3ICsxMzM1
LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3QsIGlucHV0KSk7CiB9CiAKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNDkx
LDcgKzEzNDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0lu
dDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUwMiw3ICsxMzU4LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VO
b3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MTQsNyArMTM3MCw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShn
bG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogICAgIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE1MjYsNyArMTM4Miw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpT
QmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE1MzgsNyArMTM5NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
CiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwg
cmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0Jp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NTAsNyArMTQwNiw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NjIs
NyArMTQxOCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50
OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9
CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc0LDcgKzE0MzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTg2LDcgKzE0NDIsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9i
amVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBA
IC0xNTk4LDcgKzE0NTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNo
aWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBK
U0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MTAsNyArMTQ2Niw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MjgsNyAr
MTQ4NCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNl
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAotICAgIHJldHVybiBKU1Zh
bHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYXJnMSwgRW5jb2RlZEpT
VmFsdWUgYXJnMikKQEAgLTE2NzMsMTAgKzE1MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV1RGOjpnZXQ8SlNC
aWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihX
VEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMGYxYzg3NTRj
ZDYuLjNmMDRmODljZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKCiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEpTR2xvYmFsT2JqZWN0KiwgUmVn
RXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
dWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFj
dGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBF
bmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGly
ZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBt
aW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4ODg1OGIzOGMxLi5lM2Nm
Nzk1YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUzMiw3ICs1MzIsMTkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJ
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAwMyw2
ICsxMDE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAg
ICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAgICAgIGNh
c2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICBjYXNl
IElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQxNC4uZDU1OGE3
NTc4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAg
ICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAg
ICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgogICAgICAgICBj
YXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVz
ZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6CkBAIC0yNjMsNiArMjY1LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNh
c2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAg
ICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNP
YmplY3RPck51bGw6CkBAIC02NzUsMTAgKzY3OCwxMCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2FzZSBWYWx1ZU1vZDoKICAgICBjYXNlIFZhbHVl
UG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSk7Cisg
ICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAgIHJldHVybiBu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlOworICAgICAgICByZXR1cm4gbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhl
YXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlOGQwNjgwNzkuLjVlMTkyMzQ0NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3
MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFu
Y2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogCiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBI
b2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVz
ZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNo
KG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQog
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwg
Y29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1MzcsNDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYgY2hpbGQxID0gbm9k
ZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hp
bGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRy
aWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwg
YW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAg
ICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAx
Mik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgw
MDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50
MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
eG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhN
RTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisK
KyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVn
IG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChj
aGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwg
b3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90Qmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
c3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNl
IGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3Mo
KTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICszNjA1LDE4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0
U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3Ao
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRC
aXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgp
OwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChs
ZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBy
aWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0
Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0zNjMwLDExICszNjYx
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkK
ICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJh
bmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAg
ICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2Uo
dGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAg
ICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogICAgIGlmICghcmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0
Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsg
Ly8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+
anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDMsODQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYg
bGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUt
PmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8
fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hp
bGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMy
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMy
T3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKwor
ICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisKICAgICAgICAgc3dp
dGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAgICAgICAgZW1pdFVu
dHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0QW5kPihub2Rl
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1ZUJpdFhvcjoKLSAgICAg
ICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1
ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBu
ZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNv
ZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQocmlnaHQuZ3ByKCksIHJl
c3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgot
ICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVyYXRvciwgb3BlcmF0aW9u
VmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBO
byBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGVu
Y29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0KHJpZ2h0LmdwcigpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6
CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBzbyB3ZSBtdXN0IGFkZCBp
dCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAgICAgIG1faml0LnhvcjY0
KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQub3I2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQu
dXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0
R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBC
aWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5k
KCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIHN3aXRjaCAo
b3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZh
bHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJp
Z0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2Ug
VmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8
SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlw
ZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRY
b3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9w
ZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQpAQCAt
Mzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChO
b2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUp
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9w
KE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25fR0pKIHNuaXBwZXRTbG93UGF0aEZ1
bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlmdAogICAgICAgICA/IG9wZXJhdGlv
blZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0OwpAQCAtMzc2NSw5ICsz
ODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9w
KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAg
RWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGlzS25vd25Ob3RO
dW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5v
ZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwot
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAo
aXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJp
Z2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBs
ZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRS
ZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1OSwyNyArMzkyNiwyNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKiBub2RlKQogICAgIEVk
Z2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBu
b2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50
VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRM
U2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRI
ZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0U2hp
ZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0VW50
eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1
ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyArMzk1NCwyNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBs
ZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+
Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsK
KyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwog
ICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxh
dGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJp
Z2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hp
bGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChs
ZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7Cisg
ICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKIH0KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9kZSkKQEAgLTM5MTgsNyArMzk4
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCiAK
ICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQu
dXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3AgPT0g
Qml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOwor
ICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDE1LDY5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9
IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
IAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkg
eworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVn
aXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBh
bHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVu
dCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKwor
ICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0
LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIo
KSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisKKyAg
ICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNo
ZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRk
MzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQ
Uik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNw
ZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8g
YW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1
bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0lu
dFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwor
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1
bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRS
ZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8v
IEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlm
IC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJp
Z0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQw
MDYsNDQgKzQxMjMsOTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5v
ZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRn
ZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgYm9v
bCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQ
UlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0
cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7Ci0jZW5kaWYKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQz
MlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVk
IHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAg
ICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3Ig
YSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
dGVtcEdQUik7CiAKLSAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0
LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJs
b2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7Ci0gICAgICAgIGF1dG8gcmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKLSAgICAgICAgYXV0byBub25S
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKyAgICAgICAgLy8gRklYTUU6
IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAg
Y29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0
Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9u
UmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdz
KCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcg
dG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFw
QmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAvLyBGSVhNRTogd2h5IGRv
IGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVNdWwgdXNlIGlzS25vd25Ob3ROdW1iZXIgYnV0
IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhp
cywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3Vs
YXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChyaWdo
dENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdz
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7
CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBKU1ZhbHVlUmVn
c0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAotICAgIHNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChy
aWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQog
Ci0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVn
IGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5n
cHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKLSAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworCisgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBuZWVk
c1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gZmFs
c2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29s
IG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CisjZW5kaWYKKworICAgIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEpJVFN1YklDKiBzdWJJQyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOworICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKKyAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworCisgICAgY29tcGlsZU1h
dGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcs
IHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICByZXR1cm47
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdG
dW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYxMyw2ICs0Nzc5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkKIHsKICAgICAv
LyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUgc2hvdWxkIGhhdmUgYmVlbiB0cmFuc2Zvcm1l
ZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1cFBoYXNlCisgICAgLy8gRklYTUU6IEkgZG9u
J3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHBhdGgg
Zm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTQ2MjgsNiArNDc5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNP
ckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdh
dGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoLCBhdCBsZWFz
dCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBhbHNvIGZvciBIZWFwQmlnSW50IGhlcmUuCiAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVD
b2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwogICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgwOCwy
OSArNDk3Niw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50
MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBjb2RlIGJldHdlZW4gY29tcGlsZVZhbHVl
QWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBpbGVWYWx1ZU11bCBmb3IgQmlnSW50MzIgaXMg
bmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdldCByaWQgb2YgdGhlIGR1cGxpY2F0aW9uLgor
ICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0
cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJ
WE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVm
ZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIo
KTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdo
dC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7
CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJm
bG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJh
bmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJl
c3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0
aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZs
b3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxk
IEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQz
MihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhl
ZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hpbGQudXNlS2lu
ZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQp
OwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBy
aWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hp
bGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9k
ZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxl
ZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBs
ZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRS
ZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTAxMCwyOSArNTIxMiwzMyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICBFZGdlJiBs
ZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+
Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBh
IGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93
IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIERpdiBnZXRzLgorCisgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVm
dEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdwcigp
OwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkhl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVt
YmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlz
S25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBK
U1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC01MDQ2LDYg
KzUyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9k
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7
CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCkBAIC01Mjk1LDI5ICs1NTAz
LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIu
IEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVn
bHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQo
dGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhp
cywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdo
dENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxk
LCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kQmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3Jh
cGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7
Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIERGR19BU1NF
UlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRV
c2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAg
SlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBz
cGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9w
MS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIG9wMlJlZ3MgPSBvcDIuanNWYWx1ZVJl
Z3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNTg1OSwzMCArNjA3MSwzMyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAgICBFZGdlJiBs
ZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+
Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkg
eworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBmb3Ig
UG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxvdyBwcmV0dHkgb2Z0ZW4uCisgICAgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BS
ID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJp
Z0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVu
dHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKIAotICAgIEpTVmFsdWVP
cGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0
ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAg
ICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC02MDMwLDYgKzYyNDUs
MTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBj
b25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkg
ewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CkBAIC02MDU3
LDYgKzYyNzgsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUsIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgICAgICAgICAgY29tcGls
ZVN0cmluZ0lkZW50Q29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQorICAgIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUg
KGFuZCBhZGQgYSBjb3JyZXNwb25kaW5nIHRlc3QsIHdlIHNob3VsZCByZWFsbHkgaGF2ZSBjYXVn
aHQgdGhpcykKIAogICAgIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewogICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKSB7CkBAIC02MTM2LDcgKzYzNTks
MjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0jaWYgVVNFKEpTVkFMVUU2NCkgICAK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVl
cEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01B
WCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaElu
ZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChu
b2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICAgICAgdXNl
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAgICAgICAgICAg
IG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKKyNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBV
c2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBI
b2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgp
IHsKQEAgLTYxODMsOCArNjQyMyw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJp
Y3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICBjb21waWxl
QmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KG5vZGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtNjI3OCw4ICs2NTE4LDggQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0eShub2RlLCBub2RlLT5jaGlsZDIoKSwgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAotICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSk7CisKKyAgICBB
U1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICByZXR1cm4gbm9uU3BlY3VsYXRpdmVTdHJpY3RF
cShub2RlKTsKIH0KIApAQCAtMTA1NDEsMTggKzEwNzgxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2Us
IG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJ
bnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKLSAgICBERkdfVFlQRV9DSEVD
SyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgflNwZWNDZWxsQ2hlY2sg
fCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChjZWxsKSk7CisgICAgREZHX1RZ
UEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2Vs
bENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxs
KSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2Up
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKIHsK
ICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQogICAgICAgICByZXR1
cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwotICAg
IHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKKyAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKQEAgLTEwNzIyLDgg
KzEwOTYyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBl
ZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmlnSW50VXNlOgotICAgICAgICBzcGVjdWxhdGVC
aWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGNhc2UgQmlnSW50MzJVc2U6Cisg
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2UpOworICAgICAg
ICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdPYmpl
Y3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdChlZGdlKTsKQEAgLTEzMDczLDE3
ICsxMzMyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKE5vZGUq
IG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJl
Z3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBH
UFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0
aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0eXBlT2YsIGFuZCBmb3IgYm9vbGlmeSBvciB3
aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBmaWxlKS4KIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxs
ID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVncyk7Ci0gICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChhcmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CisgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoYXJndW1lbnRSZWdz
LnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSGVhcEJpZ0ludCA9
IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCBzY3JhdGNoKSk7
CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1f
aml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7
CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTQyLDkgKzE0MTkxLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKIHsKLSAg
ICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv
ZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmln
SW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcg
aW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4
OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBA
IC0xMzk1Niw4ICsxNDIwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnRF
cXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQudXNlKCk7CiAgICAgcmlnaHQudXNlKCk7CiAK
LSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOwotICAgIHNwZWN1
bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOworICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
bm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVx
dWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5hNjU1ZGU5ODNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Niw2ICszNDYsOSBAQCBw
dWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSk7CiAgICAgR1BSUmVn
IGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVh
bihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCaWdJ
bnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVyYXRlZE9wZXJhbmRUeXBlIGNoZWNrR2VuZXJh
dGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAgICAgdm9pZCBhZGRTbG93UGF0aEdlbmVyYXRv
cihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+KTsKQEAgLTExNDgsNiArMTE1MSw5
IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlKiwgTWFjcm9B
c3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25k
aXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQz
MkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSosIE5v
ZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwor
I2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2Rl
KiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9p
ZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJ
VENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2Jq
ZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwpAQCAtMTE3Miw3ICsxMTc4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1pc2NTdHJpY3RFcShOb2RlKik7CiAKICAgICB2
b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQmlnSW50
RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSog
YnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUq
LCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwogCkBAIC0xMjIyLDYgKzEyMjgs
OSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50
NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBj
b21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2Vt
Ymxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdDb21wYXJlKE5v
ZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0xMjk3LDExICsx
MzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlTm90KE5vZGUqKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dK
SiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQgZW1pdFVudHlwZWRCaXRPcChOb2RlKik7Cisg
ICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXR3aXNlT3AoTm9k
ZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CisgICAg
dm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJT
aGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2hpZnRPcChOb2RlKik7CkBAIC0xNTc5LDYg
KzE1ODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlSW50MzIoRWRnZSwgSlNWYWx1
ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwQW55SW50KEVkZ2UpOwogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRl
QmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQoRWRnZSk7CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAg
IHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJs
ZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjI4LDggKzE2NDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
cGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5
bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSk7
Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOwotICAgIHZvaWQg
c3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdl
LCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UpOwogICAg
IHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVj
dWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1
ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDcsNiArMjYyMCw1NiBAQCBwcml2YXRlOgogICAg
IEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKyNpZiBVU0UoQklHSU5UMzIpCitjbGFzcyBT
cGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9t
YXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwg
bV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwg
bW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmln
SW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAg
ICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCgpCisgICAg
eworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKworICAgIEVkZ2UgZWRn
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0KKworICAgIE5v
ZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7Cisg
ICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFs
aWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQt
PmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkpOworICAgICAgICByZXR1cm4gbV9ncHJPcklu
dmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVz
ZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7
CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworfTsKKyNlbmRp
ZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUgREZHX1RZUEVfQ0hFQ0tfV0lUSF9FWElUX0tJ
TkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBqdW1wVG9GYWls
KSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBfZHRjX3NvdXJjZSA9IChzb3VyY2UpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRWRnZSBfZHRjX2VkZ2UgPSAoZWRn
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGIwMTlkODVkZjljLi4zZWE5ZjNjOTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MTg1LDcgKzQxODUsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hl
Y2tBcnJheU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAi
Q2hlY2tBcnJheU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgREZHX0NSQVNIKG1f
aml0LmdyYXBoKCksIG5vZGUsICJJc0JpZ0ludCBpcyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5U
MzIsIHdoaWNoIGNhbiBvbmx5IGJlIHRydWUgaW4gNjQgYml0IG1vZGUiKTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0
QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYjA3Y2IyNTc1
ZDEuLjNlM2Q4NjY0YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzgsNyArMTM4LDggQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQz
MjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0Nl
bGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0
SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKICAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CiAgICAgICAg
IHJldHVybiBncHI7CkBAIC0zNDAsOCArMzQxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2Rl
CiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAgIH0KICAgICAKLSAgICBKU1ZhbHVlT3BlcmFu
ZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJl
ZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7
CiAgICAgCkBAIC0zNjMsNDMgKzM2Nyw2NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAg
ICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDog
SklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAg
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElm
Q2VsbChyZXN1bHRHUFIpOwotICAgICAgICAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVm
dE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxR1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbGVmdERvdWJsZSA9IG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzFHUFIpOwotICAgICAg
ICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCByaWdodE9L
ID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyR1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgcmlnaHREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51bWJlcihhcmcyR1BSKTsKLSAgICAgICAg
cmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBicmFuY2g2NChpbnZlcnQg
PyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFy
ZzJHUFIsIHRha2VuKTsKLSAgICAgICAganVtcChub3RUYWtlbiwgRm9yY2VKdW1wKTsKLSAgICAg
ICAgCi0gICAgICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7CisgICAgICAgIC8qIEF0IGEg
aGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFsc2UpOgorICAgICAg
ICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgIGdv
dG8gdGFrZW47CisgICAgICAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisg
ICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgZ290byBub3RUYWtlbjsKKyAgICAg
ICAgICovCisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CisK
KyAgICAgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCBy
aWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRo
YXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJh
bmNoSWZOdW1iZXIKKyAgICAgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlz
IGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3cs
IGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgIC8vIElmIGl0IGlzIG5vdCBhIG51
bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAg
ICAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBtX2ppdC5tb3ZlKGFyZzFH
UFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoYXJnMkdQUiwgc2NyYXRjaC5ncHIo
KSk7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhp
Z2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICAgICAgbV9qaXQu
b3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIGNvbnN0
ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGln
aEJpdHMgPDwgMTsKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQo
SklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExv
d2VzdE9mSGlnaEJpdHMpKSk7CisKICAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFs
LCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAg
Ci0gICAgICAgIGxlZnREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICByaWdodERvdWJsZS5s
aW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQ
Uik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKLSAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgCisgICAgICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50
MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBh
IGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAgICAgLy8gSWYgd2UgZG9u
J3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlm
IGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBh
bmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgICAgIC8vIEluc3RlYWQgb2YgZG9pbmcgdHdvIGJy
YW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25lLCBieSBvYnNlcnZpbmcgdGhhdAorICAgICAg
ICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgo
bGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgICAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGln
aCBiaXRzIGFyZSAwIgorICAgICAgICAvLyAyLiBTaW5jZSB3ZSBrbm93IHRoYXQgbmVpdGhlciBp
cyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKSBpcyBlcXVpdmFsZW50
IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQorICAgICAgICAvLyAgICAgIElmIGJvdGggYXJl
IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBm
YWlsCisgICAgICAgIC8vICAgICAgSWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0
aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgICAgICAvLyAgICAgIEFuZCBpZiBhdCBsZWFzdCBv
bmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXInIHRhZyB3aWxsIGFsc28gYmUgMCwgbWFraW5n
IHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIG1faml0LmFuZDY0
KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxzZQorICAgICAgICBtX2ppdC5vcjY0
KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICAgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUikpOworCisgICAgICAgIGp1
bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKKworICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0
aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRD
b21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsK
ICAgICB9Ci0gICAgCisKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wg
aW52ZXJ0KQogeworICAgIC8vIEZJWE1FOiBzb21lIG9mIHRoaXMgY29kZSBzaG91bGQgYmUgc2hh
cmVhYmxlIHdpdGggbm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAgSlNWYWx1ZU9w
ZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJn
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJnMVJlZ3MgPSBhcmcx
LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJnMlJlZ3MgPSBhcmcyLmpzVmFsdWVS
ZWdzKCk7CisgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOworICAgIEdQUlJlZyBhcmcy
R1BSID0gYXJnMi5ncHIoKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CkBAIC00MjgsMzMgKzQ1Niw2MCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEo
Tm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV9qaXQub3I2NChhcmcxUmVncy5ncHIoKSwg
YXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRv
IChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxzZSk6CisgICAgSWYgKGxlZnQgaXMgRG91Ymxl
IHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICByZXN1bHQg
PSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZ290byBkb25lOwor
ICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgZ290byBzbG93
UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8KIAogICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAg
dHdvQ2VsbHNDYXNlID0gbV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUik7Ci0KLSAgICBKSVRD
b21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFyZzFSZWdzKTsKLSAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihhcmcxUmVncywgSW52
YWxpZEdQUlJlZykpOwotICAgIGxlZnRPSy5saW5rKCZtX2ppdCk7Ci0gICAgSklUQ29tcGlsZXI6
Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMlJlZ3MpOwotICAgIHNsb3dQ
YXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzJSZWdzLCBJbnZhbGlkR1BS
UmVnKSk7Ci0gICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0KLSAgICBtX2ppdC5jb21wYXJlNjQo
aW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcx
UmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7Ci0KLSAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0gICAgdHdvQ2VsbHNDYXNlLmxpbmsoJm1f
aml0KTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NChKSVRDb21waWxl
cjo6Tm90RXF1YWwsIGFyZzFSZWdzLmdwcigpLCBhcmcyUmVncy5ncHIoKSkpOworICAgIC8vIFRo
aXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91Ymxl
KSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5h
aXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisg
ICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFk
ZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2gg
Yml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0
OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcgb25seSBkb3Vi
bGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OworICAgIG1faml0Lm1vdmUoYXJnMUdQUiwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKGFy
ZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1Zh
bHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHNjcmF0Y2guZ3ByKCkpOworICAg
IG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgIGNv
bnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9IEpTVmFsdWU6Okxvd2VzdE9m
SGlnaEJpdHMgPDwgMTsKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NChK
SVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChuZXh0TG93
ZXN0T2ZIaWdoQml0cykpKTsKKworICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1
YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BS
KTsKKworICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cg
cGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09
PSBCaWdJbnQzMikKKyAgICAvLyBJZiB3ZSBkb24ndCBzdXBwb3J0IEJpZ0ludDMyLCB3ZSBvbmx5
IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYgYm90aCBvcGVyYW5kcyBhcmUgY2VsbHMgKGZv
ciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFuZCBTdHJpbmcgPT09IFN0cmluZykKKyAgICAv
LyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwg
Ynkgb2JzZXJ2aW5nIHRoYXQKKyAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENl
bGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgIC8vICAgICAg
Qm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAiCisgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0
aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkg
aXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIElm
IGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIHNldCBhbmQgdGhlIHRl
c3Qgd2lsbCBmYWlsCisgICAgLy8gICAgICBJZiBhdCBsZWFzdCBvbmUgaXMgbm90IEludDMyLCB0
aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisgICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qg
b25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2lu
ZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIG1faml0LmFuZDY0KGFy
ZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxzZQorICAgIG1faml0Lm9yNjQoYXJnMUdQ
UiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKIAotICAgIG1faml0Lm1vdmUoSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW02NCghaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BSKTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0
RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcy
UmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKKyAgICBtX2ppdC54b3I2NChUcnVz
dGVkSW1tNjQoaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwogfQogCkBAIC0xMDAzLDYgKzEwNTgsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAg
IGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6
CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0
LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAg
ICAgZGVmYXVsdDoKQEAgLTEyMzQsNiArMTI5MSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6
CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50
NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNC
aWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUs
ICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTEsNiAr
MTM3MCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRn
ZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9y
bWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsK
ICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTksNiArMTM4MCwxMDkgQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgfQogfQog
CisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50
MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0lu
dDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0
aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFu
eUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
QmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENl
bGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7
CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5t
X3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0JpZ0ludDMyKTsK
KyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CisgICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNr
KGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0
aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVk
Z2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJh
dGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0
Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsK
KyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhh
c0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNW
YWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rlciwg
U3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSkpLCBncHIpOworICAgICAg
ICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50
MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorCisgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMyKSB7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0
LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxv
Y2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3By
LCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgICAgIH0KKyAg
ICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50
MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJp
Z0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVn
IGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJl
dHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAg
IGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihn
cHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9q
aXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAg
ICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9CisgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0
dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgorICAgIGNh
c2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2Ug
RGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgICAg
ICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1h
dCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1f
Y3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiBJbnZh
bGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxk
LCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMs
IG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTcxOSw1NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2Rl
LCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fz
c2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRl
QmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRl
QmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworCisgICAgaWYgKGNvbmRpdGlvbiA9
PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2lu
Y2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNv
bmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIG1faml0Lm1vdmUo
b3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCB0ZW1wLmdwcigpKTsK
KyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQu
Y29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0LmdwcigpLCB0ZW1wLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91
bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFs
dWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCks
IG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7
CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3VsZCByZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJ
bnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9uIG5lZ2F0aXZlIG51bWJlcnMuCisgICAgQVNT
RVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5j
aE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFr
ZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOworCisgICAgLy8g
VGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisg
ICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZl
cnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAo
dGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6
OmludmVydChjb25kaXRpb24pOworICAgICAgICBCYXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAg
ICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAgICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQor
CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7
CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5vZGUpCiB7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNDA4Niw2ICs0
Mjk5LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc0JpZ0ludDogeworICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9q
aXQuYnJhbmNoSWZDZWxsKHZhbHVlLmdwcigpKTsKKworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBt
X2ppdC5hbmQ2NCh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29t
cGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1wKCk7CisKKyAgICAgICAgaXNDZWxsLmxpbmso
Jm1faml0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVzdWx0LmdwcigpKTsK
KworICAgICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOworICAgICAgICBibGVzc0Jvb2xl
YW4ocmVzdWx0LmdwcigpKTsKKyAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBOdW1iZXJJc0lu
dGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcAppbmRleCBiM2U0MWQ4ZDdlMS4uZGZhN2M2M2VkNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoK
ICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAgICAgICAgY2FzZSBWYWx1ZUJpdFhvcjogewot
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWF5YmUgc3VwcG9ydCB0aGUgY2FzZSB3aGVy
ZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJpZ0ludCBhbmQgdGhlIG90aGVyIGlzIGFsd2F5
cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBB
bnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwg
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKICAgICAgICAgICAgICAg
ICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBC
aWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSB8fCBt
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICAgICAg
aGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDhlZjczYjZmMmU4Li5hYjYzMWM5Y2Ri
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1LDgg
KzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1
c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBvdXQucHJpbnQoIlN5bWJvbCIp
OwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgi
QW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6Cisg
ICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnByaW50KCJCaWdJbnQzMiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIG91dC5wcmludCgiU3Ry
aW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDlj
MTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0gVXNlS2luZCB7CiAgICAgS25vd25TdHJpbmdV
c2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8vIFRoaXMgYml6YXJyZSB0eXBlIGFyaXNlcyBm
b3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRlY29kZSBndWFyYW50ZWUgdGhhdCBpdCB3aWxs
IG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90IG9iamVjdHMpLgogICAgIFN5bWJvbFVzZSwK
LSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50VXNlLAorICAgIEhlYXBCaWdJbnRVc2UsCisg
ICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVjdFVzZSwKICAgICBNYXBPYmplY3RVc2UsCiAg
ICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1NCwxMiBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5
cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAgICAgIHJldHVybiBTcGVjSGVh
cFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICByZXR1cm4g
U3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBjYXNlIEFueUJpZ0ludFVzZToK
ICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAg
ICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAg
ICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBjYXNlIFByb21pc2VPYmplY3RVc2U6CiAgICAg
ICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CkBA
IC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29sIG1heUhhdmVUeXBlQ2hlY2soVXNlS2luZCBr
aW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVjayhraW5kKTsKIH0KIAotaW5s
aW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5kKQotewotICAgIHN3aXRjaCAoa2luZCkg
ewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgIGNhc2Ug
TnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNlIEludDUyUmVwVXNl
OgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKLSAg
ICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAo
a2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtp
bmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICBj
YXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBjYXNlIEhlYXBCaWdJbnRV
c2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09i
amVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzEuLjJmZDk3MWU2Mjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yNjAsNiArMjYwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoK
ICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJ
c0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpA
QCAtNDgyLDcgKzQ4Myw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFw
aCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3lt
Ym9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICAgICAgICAg
IGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6Cisg
ICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2Ug
RGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1hcE9iamVjdFVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZiYy4uYzBmNGYyYjA2NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKQEAgLTU4
LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxpemVDb25zdGFudHMoQjM6OlBy
b2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAgICBpbnRQdHJUaHJlZSA9IGJs
b2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMpOwogICAgIGlu
dFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYmlnSW50MzJa
ZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBKU1Zh
bHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZU
TApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKaW5kZXggYzFk
NmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgaW50
UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9
OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9OwotICAgIAorI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsgbnVsbHB0ciB9OworI2VuZGlmCisKICAg
ICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAgY29uc3QgdW5zaWduZWQgcHJv
ZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVlIGJyYW5jaFdlaWdodHMgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
ODAzNjM5MDdiOWUuLjUzMWQxM2Q2MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1Myw2ICsxMzUzLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAgICAgIGNvbXBpbGVJc051bWJlcigpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBjb21w
aWxlSXNCaWdJbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjoKICAgICAgICAgICAgIGNvbXBpbGVOdW1iZXJJc0ludGVnZXIoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjEzNSwxMSArMjEzOCwyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJ
bnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJ
bnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExW
YWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBMVmFs
dWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAgIENo
ZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZUFkZCh1bmJveGVkTGVmdCwgdW5ib3hl
ZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywg
bm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hl
ZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJv
eGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkFkZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQp
OworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIxNzYsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBM
VmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZh
bHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBD
aGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxhdGVTdWIodW5ib3hlZExlZnQsIHVuYm94
ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3cs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94
ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShi
b3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAg
ICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTc3LDExICsyMjE0LDI4IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKwor
ICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAg
ICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKwor
ICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRlTXVsKHVuYm94
ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1
bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKworICAgICAgICAg
ICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0lu
dFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjg1LDcgKzIzMzksMjEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
KQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgCisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50
VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSB0
aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRl
clR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKIApAQCAtMjU1
NCwxMSArMjYyMiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlRGl2KCkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBhIGZh
c3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uRGl2QmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkRpdkhlYXBCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MjYzMywxOCArMjcwMiwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlTW9kKCkK
ICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogYWRk
IGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9kQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5i
aW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7
CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNw
ZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobV9u
b2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KQEAgLTI4MDksMTcg
KzI4ODEsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVBvdygpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSBhZGQg
YSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgZXhwb25l
bnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblBv
d0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Q
b3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBleHBvbmVudCk7
CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNl
KSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVy
YXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQp
OwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQpAQCAtMzIwMCw5ICszMjc2LDIz
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXROb3QoKQogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAg
ICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJpY2sgcmVsaWVzIG9uIGRldGFpbHMgb2YgdGhlIHJl
cHJlc2VudGF0aW9uIG9mIEJpZ0ludDMyLCBhbmQgd2lsbCBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYg
d2UgbW92ZSBiaXRzIGFyb3VuZC4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6
QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6
OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAwMTIpOworICAgICAgICAgICAgdWludDY0
X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZmZmZmZmZmMDAwMDsKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Iob3BlcmFuZCwgbV9vdXQuY29uc3RJbnQ2NCht
YXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgICAgICBM
VmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5v
dEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG9wZXJhbmQpOwogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zMjIwLDExICszMzEwLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVC
aXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7
CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBp
cyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9v
dXQuYml0QW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkJpdEFuZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0
LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNDAsMTEgKzMzNDIsMjMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7
Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsK
IAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25CaXRPckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMiht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveCwgc2lu
Y2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVkIGJ5IGJpdEFuZAorICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0zMjYwLDExICszMzc0LDIzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0lu
dDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdE1pc3NpbmdU
YWcgPSBtX291dC5iaXRYb3IobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LmJpdE9yKHJlc3VsdE1pc3NpbmdUYWcsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFhvckhlYXBC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMzI4MCwxMSArMzQwNiwyOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0
UlNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRV
c2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgLy8gRklYTUU6IGRvIHNvbWV0aGluZyBzbWFydGVyIGhlcmUKKyAgICAgICAgICAgIC8vIFRo
aW5ncyBhcmUgYSBiaXQgdHJpY2t5IGJlY2F1c2UgYSByaWdodC1zaGlmdCBieSBhIG5lZ2F0aXZl
IG51bWJlciBpcyBhIGxlZnQtc2hpZnQgZm9yIEJpZ0ludHMuCisgICAgICAgICAgICAvLyBTbyBl
dmVuIGEgcmlnaHQgc2hpZnQgY2FuIG92ZXJmbG93LgorCisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25v
ZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9u
b2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjk2LDI0ICszNDQwLDI1IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5hU2hyKAogICAgICAgICAgICAgbG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9u
b2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9v
dXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMx
KSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwg
aXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEJpdExTaGlmdCgpCiAgICAgewogICAgICAgICBzZXRJ
bnQzMihtX291dC5zaGwoCiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwK
LSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9v
dXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIo
bV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBk
b24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0
aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZVZhbHVlQml0TFNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVy
ZS4KKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7
CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMzMzAsNyArMzQ3
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgc2V0SW50MzIobV9vdXQubFNocigK
ICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9v
dXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMx
KSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigp
KSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQg
dGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Yg
c2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIo
KQpAQCAtNzM1NSw2ICs3NTAwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmIChh
YnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIChTcGVjQnl0ZWNvZGVOdW1i
ZXIgfCBTcGVjQmlnSW50KSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyID0g
bV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBMQmFzaWNC
bG9jayBub3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGlzQ2VsbFBhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTczNjQsMTAgKzc1
MTIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgLy8gbm90TnVtYmVyIGNhc2UuCiAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlciwg
Y29udGludWF0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3Vy
ZShjb250aW51YXRpb24pLCB1bnN1cmUobm90QmlnSW50MzIpKTsKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRpZgogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShpc0Nl
bGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50KHZhbHVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3Vy
ZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSGVhcEJpZ0ludCh2YWx1
ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1
bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRv
IHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVyaWMgc3RpbGwgZXhpc3RzLgpAQCAtODMyNCw3
ICs4NDc2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
U3ltYm9sVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5n
SWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdV
c2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2Up
CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpCisgICAg
ICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CiAgICAg
ICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVxKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTgzNjcsNyArODUyMiw5NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUt
PmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIo
bV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3ggc2lu
Y2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBib3RoIHNpZGVzCisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0
Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0IHdpdGggaWYgKGxlZnQgPT0gcmlnaHQpLCBi
ZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdodCBjaGVja3MgKHNlZSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAgICAvLyBUaGUgY29kZSB0aGF0IHdlIGdlbmVy
YXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29kZToKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIobGVmdCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ID09
IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChyaWdodCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHNUb0ludDMyKHJpZ2h0LCB1
bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFw
QmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihsZWZ0
LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KHJpZ2h0
KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFscyhsZWZ0LCByaWdo
dCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0JpZ0lu
dDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVC
aWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBvbmx5
TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNOb3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihsZWZ0LCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGxlZnRJc0JpZ0ludDMyKSwgdW5zdXJlKGxl
ZnRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgdGhlIG9yZGVy
IG9mIHRoZSBibG9ja3MgdG8gbWF4aW1pemUgZmFsbHRocm91Z2gKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0Jp
Z0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKGJvdGhB
cmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmlnSW50MzIpKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5lcXVhbChsZWZ0
LCByaWdodCkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhvbmx5TGVmdElzQmlnSW50MzIpOworICAgICAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7Cisg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0LmFu
Y2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJl
RXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgcmlnaHQsIHVu
Ym94ZWRMZWZ0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNOb3RCaWdJbnQzMik7CisgICAgICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSwgdW5z
dXJlKGxlZnRFcXVhbHNSaWdodCksIHVuc3VyZShsZWZ0SXNIZWFwQmlnSW50KSk7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRFcXVhbHNSaWdodCk7CisgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayByZXN1bHRMZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9v
bGVhblRydWUpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkp
KSwgdW5zdXJlKHJpZ2h0SXNCaWdJbnQzMiksIHVuc3VyZShyaWdodElzTm90QmlnSW50MzIpKTsK
KworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRJc0JpZ0ludDMyKTsKKyAgICAgICAg
ICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKyAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvciht
X291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFw
QmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJp
Z2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2
ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCisgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CisgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayByZXN1bHRCb3RoSGVhcEJpZ0ludCA9IG1fb3V0LmFuY2hvcihtX291dC5u
b3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSkpOworICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24pOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIHJlc3Vs
dEJvdGhBcmVCaWdJbnQzMiwgcmVzdWx0TGVmdElzQmlnSW50MzIsIHJlc3VsdExlZnRFcXVhbHNS
aWdodCwgcmVzdWx0UmlnaHRJc0JpZ0ludDMyLCByZXN1bHRCb3RoSGVhcEJpZ0ludCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAg
ICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGlj
aGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKQEAgLTg0NTAsMTEgKzg2OTIsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9u
IG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVzZQorICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNO
ZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMg
Zm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludCht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludCht
X25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRy
aXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtODU0MCw2ICs4NzgyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIC8v
IEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2ggc21hcnRlciBoZXJlLCBzZWUgdGhlIERG
R1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4gU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAgICAgICAgIG5vblNwZWN1
bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsmXSAoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgewpAQCAtMTA1MDQsNyArMTA3NDcsMzEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwgcGF0Y2hwb2ludFJlc3VsdCkpOwog
ICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAg
IC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIEJpZ0ludDMyLCB3ZSBzaG91bGQganVzdCBl
bWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQpCisgICAgICAgIEFTU0VSVChVU0VfQklHSU5U
MzIpOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNl
LCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkp
KSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlzQ2VsbFdpdGhUeXBlKHZhbHVlLCBtX25vZGUt
PnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgpLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1
bHQpKTsKKyAgICB9CiAgICAgdm9pZCBjb21waWxlSXNDZWxsV2l0aFR5cGUoKQogICAgIHsKICAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKQEAg
LTE0MjE0LDkgKzE0NDgxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0QmluYXJ5U25pcHBl
dChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVl
KG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBT
bmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQyODIsOCArMTQ1NTEsMTEgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50
VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNW
YWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIFNu
aXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkp
LnJlc3VsdFR5cGUoKSk7CkBAIC0xNDg5NSw3ICsxNTE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZs
b3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAg
ICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAg
ICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJ
bnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAg
ICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAgICAgLy8gICAgICAgICBkbyBldmlsIHRo
aW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC0xNDkwNSw2ICsxNTE3Nyw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVl
KQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAgICAg
ICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgICAgICAgICAgLy8g
fSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgICAgICAgICAgLy8gICAgIHJlc3Vs
dCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgICAgICAgICAvLyB9
CkBAIC0xNDkxMiwxMyArMTUxODYsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxvY2sgYmlnSW50MzJD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0lu
dDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4gcmVzdWx0czsKQEAgLTE0OTMyLDIwICsxNTIx
MCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgK
LSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIChTcGVj
Q2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSks
IHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2UpKTsKKyAgICAgICAgICAgICAgICBpc0hlYXBC
aWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3BlY0NlbGwgLSBTcGVjU3RyaW5nKSks
CisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBCaWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0cmlu
Z05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0cmlu
Z0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2Fz
ZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5j
aG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFrUG9pbnRlcihqc0VtcHR5U3RyaW5nKG1fZ3Jh
cGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCi0g
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBub3RTdHJpbmdPckJpZ0ludENh
c2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGVhcEJpZ0ludENhc2UsIG5vdFN0cmlu
Z05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBub25aZXJvQmlnSW50ID0g
bV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZl
KHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0aCkpOwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJbnQpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOwogICAg
ICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0OwogICAgICAgICAgICAgaWYgKG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICAgICAg
aXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFuVHJ1ZTsKQEAgLTE0OTg4LDggKzE1MjY2LDIy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodmFsdWUpLCBtX291dC5j
b25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Io
ZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERvdWJs
ZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAg
ICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIH5TcGVjQ2VsbCks
CisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMyQ2FzZSksIHVuc3VyZShub3RCaWdJbnQz
MkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50MzJDYXNlLCBub3RC
aWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZhbHVlIGJpZ0ludDMyTm90WmVybyA9IG1fb3V0
Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7
CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYmlnSW50MzJOb3RaZXJv
KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgY29udGludWF0aW9u
KTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3VibGVDYXNlLCBjb250
aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAgICBMVmFsdWUgbWlzY0lzVHJ1dGh5ID0gbV9v
dXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAgLTE1NTk0LDEzICsxNTg4NiwxNSBAQCBw
cml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAo
aXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAv
LyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAo
aXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAg
ICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbAogICAg
ICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIG51bWJlcikgewogICAgICAg
ICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMy
KSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0gZWxzZSBpZiAo
aXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVs
c2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NjI4LDYgKzE1OTIyLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJh
c2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9j
aygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYm9vbGVhbkNhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRlZmluZWRDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKQEAgLTE1NjgwLDcgKzE1OTc3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgKFNwZWNDZWxs
IC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAgICAgIGlzSGVhcEJpZ0ludCh2
YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0
cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2UpLCB1bnN1cmUoc3ltYm9sQ2Fz
ZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIHN5bWJvbENhc2UpOwpA
QCAtMTU2OTYsOCArMTU5OTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJlckNhc2UpOwogICAgICAgICBmdW5jdG9yKFR5
cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAg
ICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiB+U3Bl
Y0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2UsIG5vdE51bGxDYXNlKTsKKyNl
bHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdE51bGxDYXNlKTsK
KyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwogICAgICAgICBpZiAocHJvdmVuVHlwZShj
aGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBpc051bGwgPSBtX291dC5lcXVhbCh2YWx1
ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKQEAgLTE2Mzg4LDE1ICsx
NjY5MiwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0hlYXBCaWdJbnQo
RWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5k
U3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0g
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludFVzZSk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSk7CiAKICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0lu
dChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIHJlc3Vs
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlv
bk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwg
ZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworCisgICAgICAgIExvd2VyZWROb2RlVmFs
dWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdmFsdWUudmFs
dWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShyZXN1bHQpLCBl
ZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIocmVzdWx0KSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2so
ZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVybzsKKyAgICB9CisjZW5kaWYKKwogICAgIExW
YWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY1ODIsNyArMTY5MDQsNzIgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50
NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0g
U3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVu
VmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47Cisg
ICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChqc1Zh
bHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykpLAorICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBM
VmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3Zl
blZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
KyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAorICAgICAgICAgICAgbV9vdXQuYml0QW5k
KGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAg
ICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQor
ICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoanNWYWx1ZSwgbV9vdXQuY29uc3RJ
bnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVlIGJveEJpZ0ludDMyKExWYWx1ZSBpbnQzMlZh
bHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE9yKAorICAgICAgICAgICAgbV9v
dXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1ZSwgQjM6OkludDY0KSwgbV9vdXQuY29uc3RJ
bnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQz
MlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RBbnlCaWdJbnQoTFZhbHVlIGpzVmFsdWUs
IFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChM
VmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0JpZ0ludCkpCisgICAgICAg
ICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIC8vIGlmIChpc0JpZ0ludDMyKQorICAgICAg
ICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAvLyBpZiAoIWlzQ2VsbCkKKyAgICAgICAgLy8g
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0dXJuICFpc0hlYXBCaWdJbnQKKyAgICAgICAg
TEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFz
aWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5i
cmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQmlnSW50MzJDYXNlKSwg
dW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNC
aWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5GYWxzZSA9IG1fb3V0
LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RCaWdJbnQzMkNhc2UpOworICAg
ICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNDZWxsQ2Fz
ZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNO
b3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVyblRydWUgPSBtX291dC5h
bmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0ludCA9IG1fb3V0LmFuY2hvcihpc05vdEhlYXBC
aWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRydWUsIHJldHVybklzTm90SGVhcEJpZ0lu
dCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgIExWYWx1ZSBpc0NlbGxP
ck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
ICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBT
cGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTY4OTQsOCArMTcyODEsMTYgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVh
bihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKLSAg
ICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworI2Vu
ZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAg
ICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmlu
Z1ZhcihlZGdlKTsKQEAgLTE3MDgxLDE4ICsxNzQ3NiwzOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0K
IAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhl
ckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAg
ICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNw
ZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQpKQorICAgICAgICAgICAgcmV0dXJuIHByb3Zl
bjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0VG9GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291
dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCB0eXBl
KSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51
YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5Gb3JDZWxsID0gbV9vdXQuYW5j
aG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50MzIsIGRlZmF1bHRUb0Zh
bHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAg
cmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAg
ICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5iaWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAg
ICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZh
bHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkK
KyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2Vs
bCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAg
cmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3NTUwLDE2ICsxNzk2NSwzNSBAQCBwcml2YXRl
OgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2
b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7Cisg
ICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBC
aWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7CisgICAgfQorICAgIHZvaWQgc3BlY3VsYXRl
SGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1Zh
bHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAg
ICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAK
LSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVI
ZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBG
VExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjSGVhcEJpZ0ludCwg
aXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKHZhbHVlKSk7CiAgICAgfQogCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIodmFsdWUpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBMVmFs
dWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJ
bnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHNw
ZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7CiAgICAg
ICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY09iamVjdCwg
aXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDIxNzE1ZDNkZDIyLi45YmJhNzQzOWJjYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAt
MjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQg
ZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlKQotICAgICAgICAgICAg
ZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRv
ci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5m
bzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQogCiAgICAgLy8gTWF0ZXJpYWxpemUg
YWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXplIGFuIG9iamVjdCB1bnRpbCBhbGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5k
ZXggZDViOWFkMjJmOTUuLjdhZDA2NWRjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIFN0
cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBT
bmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAgICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSAw
OwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gMDsKLSAgICAgICAgaWYgKCFub2RlLmNl
bGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNCaWdJbnQoKSkgeworICAgICAgICBpZiAo
IW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0hlYXBCaWdJbnQoKSkgewog
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2
bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCAhc3RydWN0dXJlLT5nbG9iYWxPYmpl
Y3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9k
ZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGViYjQ0Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgog
I2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1
ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0u
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9j
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24u
Y3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0NjlmZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2Ny
aWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5z
cGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAvLyBCaWdJbnQgcHJldmlldy4KLSAgICBpZiAo
Y2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5
R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwgMTApOworICAgIGlmIChjZWxsLT5pc0hlYXBC
aWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5n
KHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggYmYyOTg0YTEyODkuLmRmMTAzMjQzNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1
bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5
cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAgIGNhc2UgQmlnSW50VHlwZToKKyAgICBjYXNl
IEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVj
dCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZWI4MDgyZTliN2Iu
LjQ4ZWFhNDAzZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7
CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6
CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0
cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcg
b3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUt
Pmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdz
IGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFz
c2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUp
CiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0
ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0lu
dDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAv
LyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9
CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFs
dWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8g
bm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJy
YW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJy
YW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQg
PSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJ
ZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRv
Qm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIo
aW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJl
c3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhp
cyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFs
dWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAg
ICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZElt
bTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CkBAIC03NTIsNiArNzU0
LDE1IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZN
JiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsK
IAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRv
IGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUu
Z3ByKCksIHJlc3VsdCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8g
RXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAg
ZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjb21wYXJlNjQo
aW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vsc2UKQEAgLTc2Nyw3ICs3NzgsNyBAQCBBc3Nl
bWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBj
b250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAg
Ly8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAg
ICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAg
ICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8g
ICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC03
NzcsNiArNzg4LDggQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6
OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAvLyAgICAgcmVzdWx0
ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVy
KSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94
QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFs
dWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5OSw3IEBAIEFzc2VtYmx5SGVscGVy
czo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwog
ICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwot
ICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwor
ICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRH
UFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAg
ICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
IT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyArODMwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVx
dWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIoanNFbXB0eVN0cmluZyh2bSkp
KSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7
CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hU
ZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigp
LCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkp
OwogCkBAIC04NDIsNiArODU1LDE1IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1i
bHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgfQog
CiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8g
aXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5n
cHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJh
bmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5h
cHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAv
LyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB0cnV0aHkuYXBwZW5kKGJy
YW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNjY4ZjBlNWFjMTUuLmRi
NjQ4YWJiYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05MjksNyArOTI5LDM3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElm
Tm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAK
KworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdw
ciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3Rl
cnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9k
ZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJl
dHVybiBiaWdJbnQzMjsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzJLbm93bk5v
dE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFTU0VS
VCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7
CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBH
UFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90Qmln
SW50MzJLbm93bk5vdE51bWJlcihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVn
cy5ncHIoKSwgdGVtcEdQUik7CisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktu
b3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUoZ3ByLCB0ZW1w
R1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwg
dGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorI2VuZGlmIC8vIFVTRShC
SUdJTlQzMikKKworICAgIC8vIEZJWE1FOiByZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0
aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFu
Y2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2g4
KApAQCAtOTUxLDEzICs5ODEsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJy
YW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAgICAgfQotICAgIAorCisgICAgLy8gRklYTUU6
IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlu
cHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmU3RyaW5nKEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1w
IGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5
cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmU3ltYm9sKEdQUlJl
ZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0K
ICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmQmln
SW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgQmlnSW50
VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJy
YW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNl
bGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RIZWFwQmlnSW50
KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSGVhcEJp
Z0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7
IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9CiAgICAgSnVt
cCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5v
dFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9CiAgICAgCkBAIC0xMzM4LDYgKzEzNjks
MTkgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQg
dW5ib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgdXJzaGlmdDY0KHRydXN0
ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgfQorCisgICAgdm9pZCBib3hC
aWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgbHNoaWZ0NjQodHJ1c3RlZEltbTMy
Rm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICAgICAgb3I2NChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6QmlnSW50MzJUYWcpLCBncHIpOworICAgIH0KICNlbmRpZgogCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKQEAgLTE3MTgsNyArMTc2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgICAg
ICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIHN0cmluZykgewogICAgICAgICAvLyAg
ICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50
KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vICAgICB9IGVsc2UgewogICAgICAg
ICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKQEAgLTE3MjksNiArMTc3Myw4IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QKICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBi
b29sZWFuKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gYm9vbGVhbgorICAgICAgICAvLyB9IGVs
c2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAg
ICAgIC8vIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAg
IC8vIH0KQEAgLTE3NjAsMTAgKzE4MDYsMTAgQEAgcHVibGljOgogCiAgICAgICAgIG5vdFN0cmlu
Zy5saW5rKHRoaXMpOwogCi0gICAgICAgIEp1bXAgbm90QmlnSW50ID0gYnJhbmNoSWZOb3RCaWdJ
bnQoY2VsbEdQUik7CisgICAgICAgIEp1bXAgbm90SGVhcEJpZ0ludCA9IGJyYW5jaElmTm90SGVh
cEJpZ0ludChjZWxsR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCaWdJbnQsIGZh
bHNlKTsKIAotICAgICAgICBub3RCaWdJbnQubGluayh0aGlzKTsKKyAgICAgICAgbm90SGVhcEJp
Z0ludC5saW5rKHRoaXMpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlN5bWJvbCwgZmFs
c2UpOwogICAgICAgICAKICAgICAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtMTc3OSw2ICsx
ODI1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgSnVtcCBub3RCb29sZWFuID0gYnJhbmNoSWZOb3RC
b29sZWFuKHJlZ3MsIHRlbXBHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJvb2xl
YW4sIGZhbHNlKTsKICAgICAgICAgbm90Qm9vbGVhbi5saW5rKHRoaXMpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBKdW1wIG5vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktu
b3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6
OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RCaWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlm
CiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlVuZGVmaW5lZCwgdHJ1ZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5YmY5Li5kNWVh
OTlmMzNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzcwLDYgKzM3MCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X2lzX3VuZGVmaW5lZF9vcl9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfYm9vbGVhbikK
ICAgICAgICAgREVGSU5FX09QKG9wX2lzX251bWJlcikKKyAgICAgICAgREVGSU5FX09QKG9wX2lz
X2JpZ19pbnQpCiAgICAgICAgIERFRklORV9PUChvcF9pc19vYmplY3QpCiAgICAgICAgIERFRklO
RV9PUChvcF9pc19jZWxsX3dpdGhfdHlwZSkKICAgICAgICAgREVGSU5FX09QKG9wX2plcV9udWxs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjcxNjY2MWRmNGYuLjQxZjZiZjg0OGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUyNyw2ICs1MjcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCAzYTMyYzMyNjE4
OS4uZjUwYzMwMzA2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcApAQCAtNDc2LDYgKzQ3Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRh
ZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlD
ID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVj
dGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKKyAgICAvLyBG
SVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdh
dGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVtaXRNYXRoSUNGYXN0
PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5l
Z2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9CiAKQEAgLTQ4NCw2ICs0ODUs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKICAgICBKSVROZWdJQyogbmVnSUMgPSBiaXR3aXNlX2Nhc3Q8SklUTmVnSUMqPihtX2luc3Ry
dWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbikpOworICAgIC8vIEZJWE1FOiBp
dCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2lu
Y2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAgZW1pdE1hdGhJQ1Nsb3c8T3BOZWdh
dGU+KG5lZ0lDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmls
ZWRPcHRpbWl6ZSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhO
ZWdhdGVPcHRpbWl6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCmluZGV4IGZkZTAwYmNjOGM5Li5iY2IzZWI4Y2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0yODMsNiArMjgzLDM0IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251
bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQmlnSW50
PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQ7CisKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgSnVtcCBpc0NlbGwgPSBicmFuY2hJZkNl
bGwocmVnVDApOworCisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNr
KSwgcmVnVDEpOworICAgIGFuZDY0KHJlZ1QxLCByZWdUMCk7CisgICAgY29tcGFyZTY0KEVxdWFs
LCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgcmVnVDApOworICAg
IGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CisgICAgSnVtcCBkb25l
ID0ganVtcCgpOworCisgICAgaXNDZWxsLmxpbmsodGhpcyk7CisgICAgY29tcGFyZTgoRXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoSGVhcEJpZ0ludFR5cGUpLCByZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1
ZVJlZ3MgeyByZWdUMCB9KTsKKworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCk7CisjZWxzZQorICAgIC8vIElmIHdlIG9ubHkgaGF2ZSBIZWFwQmln
SW50cywgdGhlbiB3ZSBlbWl0IGlzQ2VsbFdpdGhUeXBlIGluc3RlYWQgb2YgaXNCaWdJbnQuCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SXNDZWxsV2l0aFR5cGU+KCk7CkBAIC01NzAsMjggKzU5OCw1MSBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGls
ZU9wU3RyaQogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwotICAg
IAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncyku
CisKKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBT
dHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAg
ICAgICAgZ290byBzbG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwg
cmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJl
dHVybiByZXN1bHQ7CisgICAgKi8KKworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAo
bGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2gg
aW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNl
ZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQg
aWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1h
a2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQg
aXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2gg
Yml0IHNldAorICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUw
LgorICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAg
bW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAg
ICBhZGQ2NChyZWdUNSwgcmVnVDIpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCByZWdUNSk7CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisK
KyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDUpOworICAgIEp1bXAgZG9u
ZSA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUNSk7CisKICAgICBtb3ZlKHJlZ1QwLCByZWdU
Mik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUg
aXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdU
MSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVj
aXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBz
bG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworI2Vsc2UKKyAgICAvLyBKdW1wIHNsb3cgaWYg
Ym90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgogICAgIG9yNjQocmVnVDEsIHJlZ1Qy
KTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwotICAgIAot
ICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQn
cyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0Ci0gICAgLy8gaWYgaXQn
cyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9IGJyYW5jaElmSW50MzIocmVnVDApOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1QwKSk7Ci0gICAgbGVmdE9LLmxpbmsodGhp
cyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsKLSAgICByaWdodE9LLmxpbmsodGhpcyk7CiAK
LSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQotICAgICAg
ICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGVsc2UKLSAgICAg
ICAgY29tcGFyZTY0KE5vdEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKLSAgICBib3hCb29s
ZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwotCi0gICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QpOworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBpZiAodHlwZSA9PSBDb21w
aWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkKKyAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTY0
KDEpLCByZWdUNSk7CisgICAgYm94Qm9vbGVhbihyZWdUNSwgSlNWYWx1ZVJlZ3MgeyByZWdUNSB9
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDUpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNjE0LDI0ICs2NjUsNDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3AKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7CiAKLSAgICAv
LyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgorICAgIC8q
IEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5cGUnIHRvIGJlIFN0cmljdEVxKToK
KyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgIGdvdG8g
c2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgZ290byB0YWtlbjsKKyAg
ICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgZ290byBzbG93UGF0
aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICovCisKKyAgICAvLyBUaGlzIGZyYWdtZW50IGlt
cGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5n
bGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVk
IGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmlj
ayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8g
aXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAg
IC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMg
b25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBl
cXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShyZWdUMSwgcmVn
VDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBy
ZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDMp
OworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9yNjQocmVnVDIs
IHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJlZ1QzLCBy
ZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9IGJyYW5jaDY0KEVxdWFsLCByZWdUMCwgcmVn
VDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCisg
ICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdldCk7CisKICAgICBtb3ZlKHJlZ1QwLCByZWdU
Mik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUg
aXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdU
MSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVj
aXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBz
bG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworI2Vsc2UKKyAgICAvLyBKdW1wIHNsb3cgaWYg
Ym90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgogICAgIG9yNjQocmVnVDEsIHJlZ1Qy
KTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOwogCi0gICAg
Ly8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFu
IGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRlc3QKLSAgICAvLyBpZiBpdCdzIGEg
ZG91YmxlLgotICAgIEp1bXAgbGVmdE9LID0gYnJhbmNoSWZJbnQzMihyZWdUMCk7Ci0gICAgYWRk
U2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDApKTsKLSAgICBsZWZ0T0subGluayh0aGlzKTsK
LSAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwotICAgIHJpZ2h0T0subGluayh0aGlzKTsKLQotICAg
IGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCi0gICAgICAgIGFk
ZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdldCk7Ci0gICAgZWxzZQot
ICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMSwgcmVnVDApLCB0YXJnZXQp
OworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6TlN0cmljdEVxKSB7Cisg
ICAgICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOworICAgICAgICBhcmVFcXVhbC5saW5rKHRo
aXMpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02ODYsNyArNzYxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVt
cCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFw
QmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90
Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCmluZGV4IGIxMWY2NTVmY2I2Li41NmViZmIwODcxNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMjg4LDYgKzI4OCwxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgLy8gV2UgZW1pdCBpc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkLCBzaW5jZSBC
aWdJbnQzMiBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93
aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigp
OwpAQCAtODY2LDcgKzg3Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1Qx
LCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7
Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0g
anVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAyMmI5YTFkMWU5Yy4uODAwODE0ODEwMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTI5
Niw2ICsxMjk2LDE5IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiAgICAgcmV0dXJuIEpTVmFs
dWU6OnN0cmljdEVxdWFsKGdsb2JhbE9iamVjdCwgc3JjMSwgc3JjMik7CiB9CiAKKyNpZiBVU0Uo
QklHSU5UMzIpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmln
SW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGhlYXBCaWdJ
bnQsIGludDMyX3Qgc21hbGxJbnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisKKyAgICBBU1NFUlQoaGVhcEJpZ0ludC0+aXNIZWFwQmlnSW50KCkpOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4oaGVhcEJpZ0ludCktPmVxdWFsc1RvSW50MzIoc21h
bGxJbnQpOworfQorI2VuZGlmCisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXJyYXlXaXRoUHJvZmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBz
aXplKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4MTUsNiArMjgy
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9m
aWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGds
b2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CiAK
Ky8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1
ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4MjcsOCArMjg0MSwxNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNC
aWdJbnQocHJpbVZhbHVlKSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFs
dWUpKTsKKyAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVl
KTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmlt
VmFsdWUuYXNIZWFwQmlnSW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4MzYsNiArMjg1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKIAogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ug
b3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVy
YW5kLCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0
aFByb2ZpbGUpOwpAQCAtMjg1MCwxMCArMjg3MywyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmpl
Y3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlm
ICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hl
YXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5
TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTI4NjQsNiArMjg5Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBG
SVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdh
dGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5l
Z0lDKiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODg0
LDkgKzI5MTgsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAo
cHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90
IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUg
IT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6
OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVS
ZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKyAgICAgICAgfQorICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50
KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZt
LCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpOwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2Vy
dmVSZXN1bHQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogICAgIH0KQEAgLTI4OTgsNiArMjk0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291
bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRo
ZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjkxNyw5ICsyOTYzLDE4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9Q
cmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFz
QmlnSW50KHByaW1WYWx1ZSkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTog
d2h5IGRvZXMgdGhpcyBmdW5jdGlvbiBwcm9maWxlIHRoZSBhcmd1bWVudCBidXQgbm90IHRoZSBy
ZXN1bHQ/CisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJf
dCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVl
ICE9IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1W
YWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBk
b3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYwMGZjYTI5ZGMyLi4yMDliM2MzZjhj
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNSw2
ICsyMDUsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogaGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lO
VEVSTkFMOwogI2Vsc2UKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJp
bmdFcShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogbGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lO
VEVSTkFMOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNTI0MzVhNjYxMjAuLjJhMmJiOTlmOTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCkBAIC0xMzYsNiArMTM2LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAw
CiAjZW5kaWYKIAorI2lmIFVTRShCSUdJTlQzMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5U
MzIgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAorI2VuZGlmCisKICNp
ZiBDUFUoQUREUkVTUzY0KQogI2RlZmluZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMQogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCAxMDI5NTU0MjE4OS4uMWRkMGRlZjljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5Niw2ICsx
OTYsMTEgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgVmFsdWVOdWxsICAgICAgID0gY29uc3Rl
eHByIEpTVmFsdWU6OlZhbHVlTnVsbAogICAgIGNvbnN0IFRhZ051bWJlciAgICAgICA9IGNvbnN0
ZXhwciBKU1ZhbHVlOjpOdW1iZXJUYWcKICAgICBjb25zdCBOb3RDZWxsTWFzayAgICAgPSBjb25z
dGV4cHIgSlNWYWx1ZTo6Tm90Q2VsbE1hc2sKKyAgICBpZiBCSUdJTlQzMgorICAgICAgICBjb25z
dCBUYWdCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMlRhZworICAgICAgICBj
b25zdCBNYXNrQmlnSW50MzIgPSBjb25zdGV4cHIgSlNWYWx1ZTo6QmlnSW50MzJNYXNrCisgICAg
ZW5kCisgICAgY29uc3QgTG93ZXN0T2ZIaWdoQml0cyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpMb3dl
c3RPZkhpZ2hCaXRzCiBlbHNlCiAgICAgY29uc3QgSW50MzJUYWcgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6SW50MzJUYWcKICAgICBjb25zdCBCb29sZWFuVGFnID0gY29uc3RleHByIEpTVmFsdWU6OkJv
b2xlYW5UYWcKQEAgLTUyMSw2ICs1MjYsNyBAQCBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0
ZXhwciBKU0Z1bmN0aW9uVHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlw
ZQogY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCiBj
b25zdCBQcm94eU9iamVjdFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmplY3RUeXBlCitjb25zdCBI
ZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQogCiAjIFRoZSB0eXBlZCBh
cnJheSB0eXBlcyBuZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBiZWNh
dXNlIG9mIHRoZSBtYW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5
X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMzQxNjgwYWJlZTguLjc0NjNhZmQx
YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTg0NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3Vu
ZGVmaW5lZF9vcl9udWxsLCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0CiBl
bmQpCiAKIAotbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFs
aXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IGNyZWF0ZUJvb2xlYW4pCiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBv
cGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAg
IGdldChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQyLCB0MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAg
ICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMg
ICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOwor
ICAgICAgICAjIGlmIChyZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAgICAg
IyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8g
c2xvd1BhdGg7CisgICAgICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0OworCisg
ICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQg
d291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNo
SWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4g
SW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVh
dmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIg
YXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAg
ICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCiAgICAgICAgIG1v
dmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAg
ICAgbW92ZSBMb3dlc3RPZkhpZ2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAg
ICBhZGRxIHQ1LCB0MworICAgICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgMSwgdDUK
KyAgICAgICAgYnFhZXEgdDMsIHQ1LCAuc2xvdworCisgICAgICAgIGNxZXEgdDAsIHQxLCB0NQor
ICAgICAgICBidHFueiB0NSwgdDUsIC5kb25lICNpcyB0aGVyZSBhIGJldHRlciB3YXkgb2YgY2hl
Y2tpbmcgdDUgIT0gMCA/CisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlzIGFu
ZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBp
dCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisg
ICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwot
ICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBu
dW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRh
ZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmln
aHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKLSAgICAgICAgb3Jx
IFZhbHVlRmFsc2UsIHQwCi0gICAgICAgIHJldHVybih0MCkKKworICAgIC5kb25lOgorICAgICAg
ICBjcmVhdGVCb29sZWFuKHQ1KQorICAgICAgICByZXR1cm4odDUpCiAKICAgICAuc2xvdzoKICAg
ICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtODcxLDMzICs4
OTUsNTMgQEAgZW5kCiAKIAogc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkK
KyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAogCiBz
dHJpY3RFcU9wKG5zdHJpY3RlcSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCByZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVy
YW5kKSB4b3JxIFZhbHVlVHJ1ZSwgb3BlcmFuZCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxp
dHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21h
Y3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwganVtcElm
RXF1YWwsIGp1bXBJZk5vdEVxdWFsKQogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFt
ZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAg
ICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQzLCB0MSkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbwor
ICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
ICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAg
ICAgICMgICAgIGdvdG8ganVtcFRhcmdldDsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8
IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMg
Z290byBvdGhlckp1bXBUYXJnZXQKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50
cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFu
Y2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2Ug
dXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlz
IHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3
aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAg
ICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBv
bmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9y
IGVxdWFsIDE8PDUwLgogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCisg
ICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAg
ICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0
MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKwor
ICAgICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAg
ICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5j
ZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEg
bm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxN
YXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAg
IGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEg
dDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNs
b3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVt
cFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAg
IGp1bXAobV90YXJnZXRMYWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90YXJn
ZXRMYWJlbCwgZGlzcGF0Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1
bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywzMyArOTUxLDM2
IEBAIGVuZAogCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEs
Ci0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQpCi0KKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRh
cmdldExhYmVsKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
ZGlzcGF0Y2goKSBlbmQpCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5z
dHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQpCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
ZGlzcGF0Y2goKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
anVtcCh0YXJnZXRMYWJlbCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAg
ICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQKIAotICAgICAgICBnZXQobV9zcmNEc3QsIHQw
KQotICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0
MikKLSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0
MywgbnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykK
LSAgICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwg
OF0KLSAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKLSAgICAgICAg
ZGlzcGF0Y2goKQorICAgIGdldChtX3NyY0RzdCwgdDApCisgICAgbG9hZHEgW2NmciwgdDAsIDhd
LCB0MQorICAgIG1ldGFkYXRhKHQyLCB0MykKKyAgICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRhdGEg
aW4gdDIKKyAgICAjIEZJWE1FOiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGgg
Zm9yIEJpZ0ludDMyLiBXZSBjb3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBo
ZXJlIGZvciB0aGVtLgorICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgIGludGVnZXJP
cGVyYXRpb24odDEsIC5zbG93KQorICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgc3RvcmVxIHQx
LCBbY2ZyLCB0MCwgOF0KKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQor
ICAgIGRpc3BhdGNoKCkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCisKIGVuZAog
CiBsbGludE9wV2l0aFByb2ZpbGUob3BfdG9fbnVtYmVyLCBPcFRvTnVtYmVyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQpAQCAtMTI3OSw2ICsxMzI2LDE5IEBAIGxsaW50T3BX
aXRoUmV0dXJuKG9wX2lzX251bWJlciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIHJldHVybikKICAgICByZXR1cm4odDEpCiBlbmQpCiAKK2xsaW50T3BXaXRoUmV0dXJu
KG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKKyAgICBnZXQobV9vcGVyYW5kLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQxLCB0MCkKKyAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQor
ICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBIZWFwQmlnSW50VHlwZSwgdDEKKyAgICBvcnEg
VmFsdWVGYWxzZSwgdDEKKyAgICByZXR1cm4odDEpCisubm90Q2VsbENhc2U6CisgICAgYW5kcSBN
YXNrQmlnSW50MzIsIHQwCisgICAgY3FlcSB0MCwgVGFnQmlnSW50MzIsIHQwCisgICAgb3JxIFZh
bHVlRmFsc2UsIHQwCisgICAgcmV0dXJuKHQwKQorZW5kKQogCiBsbGludE9wV2l0aFJldHVybihv
cF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXR1KHNpemUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fdHlw
ZSwgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmlu
ZGV4IDg0ZmUzOTljZDhjLi40Yjk0NDUwNWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKQEAgLTgzLDYgKzgzLDEwIEBAIGNvbnN0IElkZW50aWZp
ZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwg
Y29uc3QgSWRlCiAgICAgaWYgKHJhZGl4ID09IDEwKQogICAgICAgICByZXR1cm4gaWRlbnRpZmll
cjsKIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU1Zh
bHVlIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5z
dHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25z
LCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7CisgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKKwogICAgIC8vIEZJWE1FOiBXZSBhcmUgYWxsb2NhdGluZyBhIEpTQmlnSW50
IGp1c3QgdG8gYmUgYWJsZSB0byB1c2UKICAgICAvLyBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nIHdo
ZW4gcmFkaXggaXMgbm90IDEwLgogICAgIC8vIFRoaXMgY3JlYXRlcyBzb21lIEdDIHByZXNzdXJl
LCBidXQgc2luY2UgdGhlc2UgaWRlbnRpZmllcnMKQEAgLTkwLDExICs5NCwxNSBAQCBjb25zdCBJ
ZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihW
TSYgdm0sIGNvbnN0IElkZQogICAgIC8vIGl0IHdvbnQgYmUgbXVjaCBwcm9ibGVtYXRpYywgZ2l2
ZW4gc3VjaCBjYXNlcyBhcmUgdmVyeSByYXJlLgogICAgIC8vIFRoZXJlIGlzIGEgbG90IG9mIG9w
dGltaXphdGlvbnMgd2UgY2FuIGFwcGx5IGhlcmUgd2hlbiBuZWNlc3NhcnkuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYyNwotCi0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBK
U0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4
LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBh
cnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0g
ICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJ
bnQ6OnRyeUdldFN0cmluZyh2bSwgYmlnSW50LCAxMCkpKTsKKyAgICBKU0JpZ0ludCogaGVhcEJp
Z0ludDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIGhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYmlnSW50LmJpZ0lu
dDMyQXNJbnQzMigpKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgaGVhcEJpZ0ludCA9IGJp
Z0ludC5hc0hlYXBCaWdJbnQoKTsKKworICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGhlYXBCaWdJbnQs
IDEwKSkpOwogICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDdhNjQy
YzAyNmZkLi4xZTRkOWZiMGUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJv
dG90eXBlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENv
bnN0cnVjdG9yLmNwcAppbmRleCAyZmYzZjc5NzIwYi4uNWYwZDU0ODQ4MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlv
bGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NSwx
OCArNzUsNiBAQCB2b2lkIEJpZ0ludENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1z
dGF0aWMgYm9vbCBpc1NhZmVJbnRlZ2VyKEpTVmFsdWUgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFy
Z3VtZW50LmlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWFyZ3Vt
ZW50LmlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRvdWJsZSBudW1i
ZXIgPSBhcmd1bWVudC5hc0RvdWJsZSgpOwotICAgIHJldHVybiB0cnVuYyhudW1iZXIpID09IG51
bWJlciAmJiBzdGQ6OmFicyhudW1iZXIpIDw9IG1heFNhZmVJbnRlZ2VyKCk7Ci19Ci0KIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGFyZ3VtZW50KQogewogICAgIEFTU0VSVChhcmd1bWVudC5pc1ByaW1pdGl2ZSgpKTsK
QEAgLTk0LDIwICs4MiwyNCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICAKICAgICBpZiAo
YXJndW1lbnQuaXNCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1
bWVudCk7Ci0gICAgCisKKyAgICBpZiAoYXJndW1lbnQuaXNCb29sZWFuKCkpIHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNC
b29sZWFuKCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChhcmd1bWVudC5pc1N0cmluZygp
KSB7CisgICAgICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCwg
WyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBBU1NFUlQoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1
bWVudC5pc051bWJlcigpIHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAoYXJndW1lbnQuaXNCb29s
ZWFuKCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpKTsKLSAgICAK
LSAgICBpZiAoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1bWVudC5pc051bWJl
cigpIHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJ
bnQgb3BlcmF0aW9uIl9zKTsKLSAgICAKLSAgICBBU1NFUlQoYXJndW1lbnQuaXNTdHJpbmcoKSk7
Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1N0cmluZ1ZpZXcoZ2xvYmFs
T2JqZWN0LCBhcmd1bWVudCwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7
Ci0gICAgfSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9zKTsKIH0K
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpA
QCAtMTE5LDIwICsxMTEsMjIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVl
IHByaW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbWl0
aXZlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgaWYgKCFpc1NhZmVJbnRlZ2VyKHByaW1pdGl2ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IHNhZmUgaW50ZWdlciJfcykpOwotICAg
ICAgICAKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBpZiAocHJpbWl0aXZlLmlz
SW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlz
SW50MzIoKSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsK
KyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKKyNlbmRpZgorICAgIH0KIAotICAgICAgICBp
ZiAocHJpbWl0aXZlLmlzVUludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNVSW50MzIoKSkpOworICAg
IGlmIChwcmltaXRpdmUuaXNEb3VibGUoKSkgeworICAgICAgICBkb3VibGUgbnVtYmVyID0gcHJp
bWl0aXZlLmFzRG91YmxlKCk7CisgICAgICAgIGlmICh0cnVuYyhudW1iZXIpICE9IG51bWJlciB8
fCBzdGQ6OmFicyhudW1iZXIpID4gbWF4U2FmZUludGVnZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsICJOb3QgYSBzYWZlIGludGVnZXIiX3MpKTsKIAotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzJPckhlYXAsIHZtLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsKICAgICB9Ci0gICAgCisKICAgICBFbmNvZGVk
SlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0ludChnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3Qu
Y3BwCmluZGV4IGVlMDA0NWRhYzk2Li5lNjE5ODJiOTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEJpZ0ludE9iamVjdCk7CiBjb25zdCBDbGFz
c0luZm8gQmlnSW50T2JqZWN0OjpzX2luZm8gPSB7ICJCaWdJbnQiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJpZ0ludE9iamVjdCkgfTsKIAog
Ci1CaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGJpZ0ludCkKK0JpZ0ludE9iamVjdCogQmlnSW50
T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGJpZ0ludCkKIHsKICAgICBCaWdJbnRPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0uaGVhcCkpIEJpZ0ludE9iamVjdCh2bSwgZ2xv
YmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hD
cmVhdGlvbih2bSwgYmlnSW50KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgQmlnSW50T2JqZWN0OjpCaWdJ
bnRPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBCaWdJ
bnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNCaWdJbnQqIGJpZ0ludCkKK3ZvaWQg
QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgYmlnSW50KQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApp
bmRleCA0NGZjNzZmYmRmOS4uYTYzNTRhMTZlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTV3JhcHBlck9iamVjdC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTQxLDExICs0MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2bS5iaWdJbnRPYmplY3RTcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIHN0YXRpYyBCaWdJ
bnRPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNCaWdJbnQqKTsKKyAgICBz
dGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIEpTQmlnSW50KiBpbnRlcm5hbFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gYXNCaWdJbnQoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZh
bHVlKCkpOyB9CisgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gSlNX
cmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCk7IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTU3LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KTsKIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0JpZ0ludCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU1ZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBCaWdJbnRPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCmluZGV4IGRiNGE2MTg4OTlkLi5mYjViOWZhYjEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzksMTIgKzc5LDI0IEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNC
aWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1FOiBoZWFwLWFsbG9jYXRpbmcgYWxsIGJpZyBp
bnRzIGlzIGlubmVmaWNpZW50LCBidXQgcmUtaW1wbGVtZW50aW5nIHRvU3RyaW5nIGZvciBzbWFs
bCBCaWdJbnRzIGlzIGVub3VnaCB3b3JrIHRoYXQgSSdtIGRlZmVycmluZyBpdCB0byBhIGxhdGVy
IHBhdGNoLgorICAgIGlmICh0aGlzVmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHRoaXNWYWx1ZS5iaWdJbnQzMkFzSW50MzIoKSk7Cisj
ZW5kaWYKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKEpTQmln
SW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5hc0Nl
bGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAgICAgaWYg
KEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3Qq
Pih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRPYmpl
Y3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJbnRP
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxs
KCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+aW50ZXJu
YWxWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChiaWdJbnQuaXNC
aWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtOTksOCArMTExLDYgQEAgc3RhdGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5j
VG9TdHJpbmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7
CiAKLSAgICBBU1NFUlQodmFsdWUpOwotCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBz
Y29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTE4LDYg
KzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUp
KTsKIH0KIAorLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmln
aHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNhbmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRiNDIyLi4yNGU4ODM3ZDM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjksNyArNjksNiBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUg
IlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NzAsMTMg
KzQ2OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbmMpCiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5jPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQg
PSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJ
bnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzSW5jKGdsb2JhbE9iamVjdCwgYXJndW1lbnQp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAg
IHJlc3VsdCA9IEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdU
Rjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgKyAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9G
SUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTQ4
NSwxMyArNDc5LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYykKICAgICBCRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1
bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxK
U0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEZWMoZ2xvYmFsT2JqZWN0LCBhcmd1
bWVudCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAg
ICAgICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1i
ZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSAtIDEpOwogICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApA
QCAtNTA4LDcgKzQ5NywxNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFy
eUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYQogICAgIFVuYXJ5QXJp
dGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CiAgICAgcHJvZmls
ZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8fCBy
ZXN1bHQuaXNCaWdJbnQoKSk7Ci0gICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CisKKyAgICBp
ZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSGVh
cEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChyZXN1bHQuaXNCaWdJ
bnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsKKyNlbmRpZgor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSW50MzIo
KSkKICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpOwpA
QCAtNTI4LDEwICs1MjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFy
eUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYQogICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQoKSkKLSAgICAgICAg
cHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludCgpOwotICAgIGVsc2UKLSAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKKyAgICB9CiB9CiAjZWxzZQogc3RhdGljIHZvaWQgdXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYsIEpTVmFs
dWUsIEpTVmFsdWUpIHsgfQpAQCAtNTQ2LDggKzU0MCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmVnYXRlKQogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2
ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAK
LSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYg
KHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HKHJlc3VsdCwgeworICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVu
YXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlN
aW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgUkVUVVJOX1dJVEhf
UFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5h
cnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9wZXJhbmQpOwogICAgICAgICB9KTsKQEAgLTU4
NSw4ICs1OTIsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJp
dGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUIKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKKyAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJv
ZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYKICAgICBlbHNlIAogICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygpOwogfQpAQCAtNjA4LDEzICs2MTksOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVtZXJpYykKICAgICBCRUdJTigpOwogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUb051bWVyaWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVu
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNC
aWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0g
ICAgICAgIHJlc3VsdCA9IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCk7Ci0gICAg
ZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZh
cmlhbnQpKTsKICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIApAQCAtNjUwLDcgKzY1
Niw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiB9CiAKIC8vIFRoZSBmb2xsb3dp
bmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIG5lZWQgdG8gYmUgc3VyZSB0byBy
dW4KLS8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3BlcmFuZHMgaW4gb3JkZXIuICAoQSBjYWxsIHRv
IHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAorLy8gdG9OdW1lcmljL3RvQmlnSW50T3JJbnQzMigp
IG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0aGVzZSBpcyBpZGVtcG90
ZW50CiAvLyBpZiBhbiBleGNlcHRpb24gaXMgYWxyZWFkeSBzZXQgb24gdGhlIENhbGxGcmFtZS4p
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tdWwpCkBAIC02NzIsMjQgKzY3OCw4IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cFN1Yj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lU
SF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxl
Rm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVm
dCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpIC0gV1RGOjpnZXQ8ZG91
YmxlPihyaWdodE51bWVyaWMpKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7
CiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKICAgICB9KTsKQEAgLTcwMSwy
NiArNjkxLDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RpdikKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wRGl2PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1f
cmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0RpdihnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAg
ICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKLSAgICAgICAgICAgICAgICB1
cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24uIikpOwotICAgIH0KLQotICAg
IGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIg
PSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihhIC8gYik7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAg
ICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MzIsMjQgKzcw
NCw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9tb2QpCiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcE1vZD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xo
cykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3Jocyku
anNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1Jl
bWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpyZW1haW5kZXIo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJP
VyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAg
ICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBi
ID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIFJFVFVSTihqc051bWJlcihq
c01vZChhLCBiKSkpOworICAgIFJFVFVSTihyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcG93KQpAQCAtNzU4LDI1ICs3MTUsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcG93KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BQb3c+KCk7CiAgICAgSlNWYWx1
ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJp
Z2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1l
cmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNQb3coZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAg
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJh
dGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihs
ZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
Yyk7Ci0KLSAgICBSRVRVUk4oanNOdW1iZXIob3BlcmF0aW9uTWF0aFBvdyhhLCBiKSkpOworICAg
IFJFVFVSTihyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQpA
QCAtNzg1LDIyICs3MjYsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTHNoaWZ0PigpOwogICAgIEpTVmFsdWUgbGVmdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxl
ZnQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVz
dWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlm
dCBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihX
VEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPDwgKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0
TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTFNoaWZ0KGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQpA
QCAtODA5LDIyICs3MzgsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUnNoaWZ0PigpOwogICAgIEpTVmFsdWUgbGVmdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxl
ZnQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNp
Z25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKSk7Ci0gICAgfQotCi0gICAgUkVUVVJOX1BS
T0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSA+PiAoV1RGOjpn
ZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSAmIDMxKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF91cnNoaWZ0KQpAQCAtODUwLDc5ICs3NjcsNDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2JpdG5vdCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BCaXRub3Q+KCk7Ci0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fb3BlcmFuZCkuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAg
IENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihvcGVyYW5kTnVtZXJpYykpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpOwotICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgfQorICAgIGF1dG8gb3BlcmFuZCA9IEdFVF9DKGJ5dGVj
b2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOwogCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVy
KH5XVEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmQpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfYml0YW5kKQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEJpdGFuZD4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1f
cmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lz
ZUFuZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIikp
OwotICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgp
OworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0g
ICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmlj
KSAmIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQml0d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19F
WENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdG9yKQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IHBjLT5hczxPcEJpdG9yPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpi
aXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAg
IH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOworICAg
IGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgICAg
IFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQot
Ci0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1l
cmljKSB8IFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcEJpdHhvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5
dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVy
YXRpb24uIikpOwotICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocyku
anNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpOwogCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxl
ZnROdW1lcmljKSBeIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzQml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVvZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcAppbmRleCA5YzM0NTQ0MmY1NC4uNDZhOWIxMDE1M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUgaW5pdFR5cGUp
CiAKIFN0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJp
Z0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhIZWFwQmlnSW50
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6
OmNyZWF0ZVplcm8oVk0mIHZtKQpAQCAtMTg4LDM0ICsxODgsMjEgQEAgSlNWYWx1ZSBKU0JpZ0lu
dDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CiB9CiAKLU9wdGlv
bmFsPHVpbnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkKLXsKLSAg
ICBpZiAoaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChsZW5ndGgo
KSA9PSAxICYmICFzaWduKCkpIHsKLSAgICAgICAgRGlnaXQgckRpZ2l0ID0gZGlnaXQoMCk7Ci0g
ICAgICAgIGlmIChyRGlnaXQgPD0gOSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50OF90PihyRGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1KU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1Zp
ZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJz
ZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJu
IHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBwYXJz
ZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnMx
NigpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50Ojpw
YXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcg
cywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWdu
IHNpZ24pCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1v
ZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkp
CiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnM4
KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJzZUludE1vZGU6
OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwg
c2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKIH0KIAotSlNCaWdJbnQq
IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJpbmdWaWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCiB7CiAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgcywgRXJyb3JQYXJzZU1vZGU6Oklnbm9yZUV4Y2VwdGlvbnMpOwogfQpA
QCAtNDU0LDE2ICs0NDEsMjMgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW4KIAogSlNCaWdJbnQq
IEpTQmlnSW50OjppbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgp
CiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJp
dCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIHJldHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQo
KSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShn
bG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlVuc2lnbmVkKTsKKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAg
cmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEpTQmlnSW50
KiBKU0JpZ0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4
KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBi
aXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
LSAgICByZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0
KCkpOworICAgIGlmICh4LT5pc1plcm8oKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAgICAgICByZXN1bHQtPnNldFNp
Z24odHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmICgheC0+c2ln
bigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2ln
bk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQpAQCAtNTMyLDcg
KzUyNiw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAgaWYgKHgtPnNpZ24oKSkKICAg
ICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHggJiAoLXkpID09IHggJiB+KHkt
MSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkKICAgICBKU0Jp
Z0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHksIHktPmxlbmd0aCgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICByZXR1cm4gYWJz
b2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTYzOCw3IEBAIFN0cmluZyBKU0Jp
Z0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkK
IHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0Jp
Z0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7CiAKICAgICBBU1NFUlQo
cmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcgKzE3OTYsNyBAQCBib29sIEpT
QmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VN
b2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVy
cm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAt
MTgxMCw3ICsxODA0LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKICAgICB3aGlsZSAocCA8
IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsKIAotICAg
IC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgIC8vIENoZWNrIFJhZGl4
IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkg
KyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsK
ICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdiJykp
CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVu
Z3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5zaWduZWQsIFBh
cnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0xODI0LDI0ICsxODE4LDE4IEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUludFNpZ24gc2lnbiA9IFBhcnNl
SW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGRh
dGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlIGlmIChkYXRhW3Bd
ID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScpIHsKICAgICAgICAgICAgIHNp
Z24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAgKytwOwogICAg
IH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBk
YXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7Ci0KLSAgICBpZiAocmVz
dWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9
PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBh
cnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50
U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwg
RXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUlu
dE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAgdW5zaWdu
ZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4NDAsNyBAQCBKU0JpZ0ludCogSlNCaWdJ
bnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5
cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGVycm9y
UGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAgICAgICAgICAg
ICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xv
YmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAg
IC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjYsNDQgKzE4NTQsODQgQEAgSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIENoYXJUeXBlKiBkYXQKIAogICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsKIAotICAgIGlm
IChwID09IGxlbmd0aCkKKyAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDApOworI2Vsc2UK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotCi0gICAgdW5zaWduZWQgbGltaXQwID0g
JzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBsaW1pdGEgPSAn
YScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0g
MTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwg
dm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2
ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFu
IGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6
V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBw
KyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRhW2ldID49ICcw
JyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAn
OwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRhKQot
ICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAgIGVsc2UgaWYg
KGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAgICBkaWdpdCA9
IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KHJh
ZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisjZW5kaWYKICAgICB9CiAKLSAgICBy
ZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRydWUgOiBmYWxz
ZSk7Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRy
aW0odm0pOworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgbnVtYmVyIHN1
Y2ggdGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMyX01BWAorICAg
IHVuc2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChyYWRpeCkgewor
ICAgIGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMwOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAx
MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JC
aWdJbnQzMiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAgIGxlbmd0
aExpbWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwogCi0gICAgQVNTRVJUKGdsb2Jh
bE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJv
d0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRv
IEJpZ0ludCIpKTsKKyAgICB1bnNpZ25lZCBsaW1pdDAgPSAnMCcgKyAocmFkaXggPCAxMCA/IHJh
ZGl4IDogMTApOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNfY2FzdDxpbnQz
Ml90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHN0YXRpY19j
YXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0g
bGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBpbnQzMl90IGRp
Z2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZsb3c+IG11bHRp
cGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoTGltaXRG
b3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAgICAgIGRpZ2l0
ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAgICAgICAgICAg
IGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAgICAgICAgICAg
IGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49
ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFb
cF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ0EnICYmIGRh
dGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdBJyAr
IDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yUGFyc2VN
b2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3Qs
ICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdldCgpKTsKKwor
ICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChwID09IGxlbmd0aCkg
eworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKQorICAg
ICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgZGlnaXQpOworI2Vs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZGlnaXQpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgaGVhcFJl
c3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBpbml0aWFsTGVuZ3Ro
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Cisg
ICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2ZSBh
Y2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFuIGV4
Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICBpZiAoIWhlYXBSZXN1bHQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIGhlYXBSZXN1bHQtPmlu
aXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CisgICAgICAgIH0KKyAgICAg
ICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihtdWx0
aXBsaWVyLnVuc2FmZUdldCgpKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisgICAgfQog
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBh
cnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3VsdC0+cmlnaHRUcmltKHZt
KTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQg
bikKQEAgLTE5MjcsMTggKzE5NTUsMjAgQEAgYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIo
SlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CiAg
ICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICBpbnQgdmFsdWUgPSBu
dW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1
cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAx
KSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0g
c3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkp
KTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGVx
dWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAgICBkb3VibGUgdmFsdWUg
PSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21wYXJlVG9Eb3VibGUodGhpcywg
dmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCitib29sIEpTQmlnSW50Ojpl
cXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAg
cmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkg
JiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0
YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7
Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3Vi
bGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMgYWxnb3JpdGhtIGV4cGVj
dCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uOTdmYzkxNjUzNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDEzICs5MCwxMiBAQCBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUludE1vZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBB
bGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51bSBjbGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25l
ZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVy
cm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2ln
bjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4
Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2Jh
bE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUg
PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUlu
dFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9i
amVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93
RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpTVmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZN
JiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRpeCk7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBz
aW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwogICAgIAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNv
bk1vZGUgewpAQCAtMTEzLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJv
b2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBl
cXVhbHNUb0ludDMyKGludDMyX3QpOwogICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBh
cmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVt
YmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29u
c3Q7CkBAIC0yMjIsMTAgKzIyMiwxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VN
b2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJU
eXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChK
U0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUlu
dFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2Rl
OjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2Jh
bE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24g
PSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxv
d0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9i
YWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBA
IC0yNTgsOSArMjU4LDkgQEAgcHJpdmF0ZToKICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6
UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwogfTsKIAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0lu
dChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFT
U0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8
SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNTQ4MDEwZWIxYzAuLjVjNWEzMmFjZTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKKyNpbmNsdWRl
ICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgi
CkBAIC03MSw2ICs3MiwxNCBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIEFTU0VSVCghaXNJbnQzMigpICYm
ICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwo
KS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlz
QmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0
byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4wOworICAg
IH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKICAgICBy
ZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNv
bnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTAsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2Jq
ZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYg
KGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5G
cm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJbnRPYmpl
Y3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7CisjZW5kaWYKIAogICAgIEFTU0VS
VChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAg
LTExOCw2ICsxMzEsMTQgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1
ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1t
ZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0g
c3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52
bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAgICAgICAvLyBGSVhNRTogdGhlcmUgbXVzdCBi
ZSBhIHNpbXBsZXIgd2F5IHRvIGZpbmQgdG9UaGlzIGZvciBKU0JpZ0ludCwgYnV0IEkgY2FuJ3Qg
ZXZlbiBmaW5kIHdoZXJlIGl0IGlzIGRlZmluZWQuCisgICAgICAgIHJldHVybiBoZWFwQmlnSW50
LT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3QpKS0+dG9UaGlzKGhlYXBCaWdJbnQsIGds
b2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJUKGlzVW5k
ZWZpbmVkT3JOdWxsKCkpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsK
IH0KQEAgLTEzMCw3ICsxNTEsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3Rv
dHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIGlmIChpc0NlbGwo
KSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxP
YmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwotICAgICAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAg
ICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
YmlnSW50UHJvdG90eXBlKCk7CiAgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7CkBAIC0xNDAsNiArMTYxLDEw
IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJl
clByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
aXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5
cGUoKTsKKyNlbmRpZgogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3Io
Z2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMjg2LDYgKzMxMSw4IEBAIHZvaWQgSlNWYWx1ZTo6
ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgb3V0LnByaW50KCJT
eW1ib2w6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0
dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAg
ICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1
cmUqPihhc0NlbGwoKSksIGNvbnRleHQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50
KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9
IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAg
IG91dC5wcmludCgiT2JqZWN0OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAg
ICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRlcmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2Vs
bCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAgLTMwNSw2ICszMzIsMTAgQEAgdm9pZCBKU1ZhbHVlOjpk
dW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgiTnVsbCIp
OwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZp
bmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAg
ICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkp
OworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAg
LTM0Nyw2ICszNzgsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYg
KGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50
ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAg
ZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM4NCwxOCArNDE5LDI1
IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGJvb2wgcmV0dXJuRW1wCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmlu
Z3MubnVsbFN0cmluZygpOwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4g
dm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlmIChpc1N5bWJvbCgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29u
dmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7Ci0gICAgICAgIHJldHVybiBlcnJvclZhbHVl
KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
YXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGludGVnZXIgKyAnMCcpOworICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoaW50ZWdlcikp
OwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50
ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byBkaWdpdCA9IGJpZ0ludC0+c2lu
Z2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKLSAgICAgICAgSlNTdHJp
bmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYmlnSW50LT50b1N0cmlu
ZyhnbG9iYWxPYmplY3QsIDEwKSk7CisjZW5kaWYKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpIHsK
KyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzSGVhcEJpZ0ludCgpOworICAgICAgICAvLyBG
SVhNRTogd2Ugc2hvdWxkIHJhdGhlciBoYXZlIHR3byBjYXNlcyBoZXJlOiBvbmUtY2hhcmFjdGVy
IHN0cmluZyB2cyBqc05vblRyaXZpYWxTdHJpbmcgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyAgICAg
ICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUodm0sIGJpZ0ludC0+
dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkucmVsZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKICAg
ICAgICAgcmV0dXJuIHJldHVyblN0cmluZzsKICAgICB9CisgICAgaWYgKGlzU3ltYm9sKCkpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252
ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9zKTsKKyAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUo
KTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBh
c0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDU4NmFmM2ZhYjM3Li5h
OTExNDMwZTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE3Niw2
ICsxNzYsMTAgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAg
ZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxs
VHlwZSB9OworICAgIGVudW0gSlNCaWdJbnRUYWcgeyBKU0JpZ0ludDMyT3JIZWFwIH07CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGVudW0gSlNCaWdJbnQzMlRhZyB7IEpTQmlnSW50MzIgfTsKKyNl
bmRpZgogICAgIGVudW0gRW5jb2RlQXNEb3VibGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OwogCiAg
ICAgSlNWYWx1ZSgpOwpAQCAtMTg1LDYgKzE4OSwxMSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShK
U0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0
IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMy
VGFnLCBpbnQzMl90KTsKKyNlbmRpZgorICAgIC8vIFJldHVybnMgZWl0aGVyIGEgQmlnSW50MzIg
b3IgYSBIZWFwQmlnSW50LgorICAgIEpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiwgaW50NjRfdCk7
CiAKICAgICAvLyBOdW1iZXJzCiAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91Ymxl
KTsKQEAgLTIxOCw2ICsyMjcsOSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29u
c3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBj
b25zdDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBj
b25zdDsgLy8gbXVzdCBvbmx5IGJlIGNhbGxlZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAK
ICAgICBpbnQzMl90IGFzSW50MzJGb3JBcml0aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVj
b21lcyBhbiBpbnQsIGJ1dCBvdGhlcndpc2UgbGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzNyw2ICsy
NDksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNT
dHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hl
YXBCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKICAgICBib29s
IGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJv
b2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKQEAgLTI0NSw3ICsyNTksNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0
IENsYXNzSW5mbyogY2xhc3NJbmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAg
Ly8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBXVEY6OlN0cmluZyYpIGNvbnN0OwogICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2
NCw5ICsyNzgsMTAgQEAgcHVibGljOgogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhw
ZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8g
YmVlbiBzZXQgaW4gdGhlIENhbGxGcmFtZSBhbHJlYWR5LgogICAgIGRvdWJsZSB0b051bWJlcihK
U0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3Vi
bGU+IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJ
bnQqLCBpbnQzMl90PiB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKwor
ICAgIEpTVmFsdWUgdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1
ZSB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCog
YXNIZWFwQmlnSW50KCkgY29uc3Q7CiAKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0
IGNhbiBiZSBkb25lIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4g
dG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CkBAIC0zMTUsOCArMzMwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wg
c3RyaWN0RXF1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAg
ICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlu
bGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRp
YyBib29sIHN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBK
U0NlbGwqIHYyKTsKICAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKQEAgLTQxNCwxMSAr
NDI4LDIwIEBAIHB1YmxpYzoKICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5n
IHByb3BlcnRpZXM6CiAgICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZv
dXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5
IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNl
IGludmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVu
ZGVmaW5lZFRhZykgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBi
aXQgMyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpLCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUg
dGhlCiAgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJl
IHF1aWNrbHkgZGV0ZWN0ZWQuCiAgICAgICoKICAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwg
aGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5
CiAgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1Zh
bHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgorICAgICAqCisgICAgICogV2hlbiBV
U0UoQklHSU5UMzIpLCB3ZSBoYXZlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50
cyB0aGF0IGFyZSBzbWFsbCAoMzItYml0IGF0IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhY
OlhYWFg6MDAxMgorICAgICAqIFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0
aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRo
IGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQg
Y2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJp
dCAxIHdoaWNoIGlzIHNldCB0byB0cnVlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQg
d2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZh
bHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1
c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQg
Zm9yIG51bGwvdW5kZWZpbmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8K
IAogICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNo
IHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgd2lsbCBiZWdpbgpAQCAtNDI4LDExICs0NTEsMTkgQEAg
cHVibGljOgogICAgIC8vIElmIGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5k
aWNhdGVzIGFuIGludGVnZXIgbnVtYmVyLAogICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUg
c2V0IHRoaXMgdmFsdWUgaXMgYSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KICAgICBzdGF0aWMg
Y29uc3RleHByIGludDY0X3QgTnVtYmVyVGFnID0gMHhmZmZlMDAwMDAwMDAwMDAwbGw7CisgICAg
Ly8gVGhlIGZvbGxvd2luZyBjb25zdGFudCBpcyB1c2VkIGZvciBhIHRyaWNrIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBzdHJpY3RFcSwgdG8gZGV0ZWN0IGlmIGVpdGhlciBvZiB0aGUgYXJndW1l
bnRzIGlzIGEgZG91YmxlCisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IExvd2VzdE9mSGln
aEJpdHMgPSAxVUxMIDw8IDQ5OworICAgIHN0YXRpY19hc3NlcnQoTG93ZXN0T2ZIaWdoQml0cyAm
IE51bWJlclRhZyk7CisgICAgc3RhdGljX2Fzc2VydCghKChMb3dlc3RPZkhpZ2hCaXRzPj4xKSAm
IE51bWJlclRhZykpOwogCiAgICAgLy8gQWxsIG5vbi1udW1lcmljIChib29sLCBudWxsLCB1bmRl
ZmluZWQpIGltbWVkaWF0ZXMgaGF2ZSBiaXQgMiBzZXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQzMl90IE90aGVyVGFnICAgICAgID0gMHgyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJf
dCBCb29sVGFnICAgICAgICA9IDB4NDsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVW5k
ZWZpbmVkVGFnICAgPSAweDg7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50MzJfdCBCaWdJbnQzMlRhZyAgICA9IDB4MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQ2NF90IEJpZ0ludDMyTWFzayAgID0gTnVtYmVyVGFnIHwgQmlnSW50MzJUYWc7CisjZW5kaWYK
ICAgICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVz
LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFn
IHwgQm9vbFRhZyB8IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRy
dWUgICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4u
MGE3ODgwMzM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI0MCw2ICsyMzksMTMgQEAgaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCiAgICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKIH0KIAoraW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2YWwpCit7
CisgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKKyAgICBhdXRvIHB0ciA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCB2YWwpOworICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJldF9j
YXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PEpTQ2VsbCo+KHB0cikpOworfQorCiBpbmxpbmUgSlNW
YWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHRhZygpICE9IERlbGV0
ZWRWYWx1ZVRhZyk7CkBAIC0zMjksNiArMzM1LDEyIEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBK
U1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2Vs
bCo+KHUuYXNCaXRzLnBheWxvYWQpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1Zh
bHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNCaWdJbnQqPih1LmFzQml0cy5wYXlsb2Fk
KTsKK30KKwogQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFn
LCBkb3VibGUgZCkKIHsKICAgICBBU1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKQEAgLTQ2NCw2ICs0
NzYsMjAgQEAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNGYWxzZVRhZykKICAgICB1LmFzSW50
NjQgPSBWYWx1ZUZhbHNlOwogfQogCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludFRh
ZywgVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
dmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlOKSB7CisgICAgICAgIC8vIFRoZSAm
IH5OdW1iZXJUYWcgcGFydCBpcyBmb3IgbmVnYXRpdmUgbnVtYmVycywgb3RoZXJ3aXNlIHRoZXkg
Z2V0IHNpZ24tZXh0ZW5kZWQuCisgICAgICAgIHUuYXNJbnQ2NCA9ICgodmFsdWUgPDwgMTYpICYg
fk51bWJlclRhZykgfCBCaWdJbnQzMlRhZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCisgICAgSlNDZWxsKiBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOwor
ICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIpOworfQorCiBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0CiB7CiAgICAgLy8g
VW5kZWZpbmVkIGFuZCBudWxsIHNoYXJlIHRoZSBzYW1lIHZhbHVlLCBiYXIgdGhlICd1bmRlZmlu
ZWQnIGJpdCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgpAQCAtNTIyLDggKzU0OCwyMiBAQCBBTFdBWVNf
SU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gdS5wdHI7
CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNCaWdJbnQqPih1LnB0cik7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCisj
aWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnQzMlRhZywg
aW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVtYmVyVGFnIHBhcnQgaXMgZm9yIG5l
Z2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBzaWduLWV4dGVuZGVkLgorICAgIHUu
YXNJbnQ2NCA9ICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpIDw8IDE2KSAmIH5OdW1iZXJU
YWcpIHwgQmlnSW50MzJUYWc7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUg
aW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUgbnVtYmVyKQogewogICAgIGlmIChudW1i
ZXIgIT0gbnVtYmVyKQpAQCAtNjEwLDkgKzY1MCwzMSBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c1N0cmluZygpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0
dXJuIGlzQmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXND
ZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0lu
dDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgcmV0dXJuICh1LmFzSW50NjQg
JiBCaWdJbnQzMk1hc2spID09IEJpZ0ludDMyVGFnOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKK30KKworI2lmIFVTRShCSUdJTlQzMikKK2lubGluZSBpbnQzMl90IEpTVmFsdWU6
OmJpZ0ludDMyQXNJbnQzMigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCA+PiAxNik7Cit9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N5bWJvbCgpOwpAQCAt
NjIwLDcgKzY4Miw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIAog
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBjb25zdAogewotICAgIHJldHVybiAh
aXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkg
fHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwo
KS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+aXNIZWFw
QmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY29u
c3QKQEAgLTc2MCw4ICs4MjIsMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZl
TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnUKICAgICAgICAg
dmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIEFTU0VSVChp
c1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQTmFOOworICAgIGlmIChpc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIG51bWJlciA9IFBOYU47CisgICAgICAgIHZhbHVlID0gKnRoaXM7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3Mp
OworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlzOwogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNzc1LDQ0ICs4NDYsNDUgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6
dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4g
dG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIFZhcmlh
bnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvTnVt
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlmIChpc0lu
dDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91YmxlKCkpCi0g
ICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAgICAgICBy
ZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSB8
fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwot
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHBy
aW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
IChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJl
cihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAg
IHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpT
QmlnSW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9C
aWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAg
aWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICBpZiAoaXNJbnQz
MigpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKICAgICBpZiAoaXNEb3Vi
bGUoKSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJl
dHVybiBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJO
dW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmlt
VmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChwcmltVmFsdWUu
aXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gcHJpbVZh
bHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS50b0ludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVl
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIGpzTnVt
YmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTAzMiwzNyArMTEwNCwxNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGRvIHsKLSAg
ICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICAgICAgYm9vbCBzMSA9
IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwotICAgICAg
ICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFz
U3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyh2MikpKTsKLQotICAgICAg
ICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewotICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5n
ID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBK
U0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7Ci0gICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAo
IW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CisgICAgICAg
ICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3ZSBoYXZlIGEgbnVtYmVyIGl0IGlzIHYyIG1h
a2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNpbXBsZXIuCisgICAgICAgICAgICBzdGQ6OnN3
YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzMSAmJiB2Mi5pc0JpZ0ludCgp
KSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnZhbHVlKGds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChn
bG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYxID0gSlNWYWx1ZShuKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgZGVhbHMgd2l0
aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMsIGFuZCBpcyBhIHNob3J0Y3V0IGZvciBhIGZl
dyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBoYXMgdG8gY29tZSBoZXJlIGFuZCBub3QgYmVm
b3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRoYXQgTmFOID09IE5hTgorICAgICAgICBpZiAo
djEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAodjEuaXNV
bmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCkBAIC0xMDgwLDcgKzExMzIsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1
YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAg
ICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNPYmplY3QoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNseQogICAg
ICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICB2
MSA9IHAxOwpAQCAtMTEwMiw1NiArMTE1NCw4NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1
ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwog
ICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAoc3ltMSB8fCBz
eW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAgICAgICAgIHJl
dHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgczEgPSB2
MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKKyAgICAgICAg
aWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJp
bmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgICAgIC8v
IFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRoZSBuZXh0IGNhc2UsIHNvIGxvc2luZyB0aGUg
aW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBudW1iZXIgaXMgZmluZQorICAgICAgICB9CiAg
ICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAgICAgICAgZG91YmxlIGQxID0gdjEudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVl
ZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5rcyB0byB0aGUgc3dhcCBhYm92ZSkKKyAgICAg
ICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHYyU3Ry
aW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2MiA9
IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKKyAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRo
ZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBCaWdJbnRzICh3aGljaCBpcyBvbmx5IG1pc3Np
bmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2UsIGhlbmNlIHRoZSBjaGVjayBhYm92ZSkKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHYxLmlzTnVtYmVyKCkg
fHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAgICAgICAg
aWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRv
dWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIg
Y29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIG9uZSBtb3JlIHN3
YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25seSB2MiBpcyBhbGxvd2VkIHRvIGJlIGEgbnVt
YmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsK
ICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewotICAgICAgICAgICAgaWYgKHYx
LmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2
MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwor
ICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFy
aXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQo
KSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMo
YXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlz
QmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2
MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2
MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9O
dW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKHYxLmlzQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigpOworICAgICAgICAgICAgaWYg
KHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYyLmFzRG91YmxlKCk7CisgICAgICAgICAgICBz
dGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwor
ICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2MS5h
c0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYx
LmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVtYmVyKHYy
KTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwogfQogCiAvLyBFQ01BIDExLjkuMwotQUxXQVlT
X0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK0FMV0FZU19JTkxJ
TkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpCiB7Ci0gICAgQVNTRVJUKHYxLmlzQ2Vs
bCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAm
JiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICBpZiAodjEtPmlzU3RyaW5nKCkgJiYgdjIt
PmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9i
amVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0lu
dCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmln
SW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi0+aXNIZWFwQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHN0YXRpY19jYXN0PEpTQmlnSW50
Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYyKSk7CiAgICAgcmV0dXJuIHYxID09IHYy
OwogfQogCkBAIC0xMTYzLDEwICsxMjQzLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OnN0cmlj
dEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHYx
LmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwg
IXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50
MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMy
QXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgp
KQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3QsIHYxLmFz
Q2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlu
bGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgcmV0dXJuIHYxID09IHYyOwogfQogCiBp
bmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0CkBAIC0x
MTg0LDE1ICsxMjcxLDIzIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1
YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5p
c051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9PSB2Mi5h
c051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAg
ICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5hc0NlbGwo
KS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAgICBjb25z
dCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7
Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlH
ZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdU
Rjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
IHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJ
bnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkK
KyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMy
KHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYg
djIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwq
IHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAg
IGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUlt
cGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQorICAgICAgICAg
ICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRl
KFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxzKHYxLmFz
SGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAKICAgICByZXR1
cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMzAxLDEwIEBAIGlubGluZSBUcmlT
dGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGlzTm90
WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRl
OyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXND
ZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmln
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKSA/IFRydWVUcmlT
dGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCmluZGV4IDI0ZWQ2NTIzMzc5Li45MGM1YTdmYzEyNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgQ29uc3RydWN0
VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwg
Y2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKQorICAgIGlmIChjZWxsLT5pc1N0
cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgaWRl
bnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxs
LT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgSlNDZWxs
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+
aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9s
KCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGlkZW50aWZpZXIp
LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNDZWxs
Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRo
aXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAgIGlmIChp
c1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhp
cyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7Ci0gICAgaWYgKGlz
QmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBw
cmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0
aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKIH0KQEAgLTE2
OSw3ICsxNjksNyBAQCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLCBKUwogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2Jh
bE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVy
KGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAg
aWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNC
aWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPmdl
dFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogfQpAQCAtMTgw
LDcgKzE4MCw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmlu
Zyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIGlmIChpc1N5bWJvbCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvTnVtYmVy
KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0lu
dCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNP
YmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTE5MCw3ICsxOTAs
NyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwogICAgIGlmIChpc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNI
ZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+
KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDEw
Njc0OWRlM2NlLi43ZjkyNTA0ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVl
cnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgIGJvb2wgaXNC
aWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wg
aXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCmluZGV4IDJkYWY3YmMwZGRiLi5jMjgzODM2ODM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjA1LDkgKzIw
NSw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBt
X3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNDZWxsOjppc0JpZ0ludCgp
IGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzSGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gSGVhcEJp
Z0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25zdApAQCAt
MzQxLDcgKzM0MSw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKTsK
LSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKTsKICAg
ICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmplY3QpKS0+bWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAtMzUwLDcgKzM1MCw3IEBAIGlubGluZSBUcmlT
dGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9C
b29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFs
c2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDIyYzAx
MjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29s
ZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBh
c0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZvciBOYU4KICAg
ICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29sZWFuKGdsb2Jh
bE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAg
ICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCiAgICAgcmV0dXJuIGlzVHJ1
ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBmYWxzZS4K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggYTEzMzdj
NmE0ZWYuLjBkYzViNzRjMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNFKFN0cmlu
Z1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkKKyAgICBD
QVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoU3RydWN0dXJlUmFyZURhdGFUeXBlKQogICAg
IENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSkKICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDBmODY4YTZhZTA3
Li5kMTQ2NDMzZDQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAg
LTI2LDggKzI2LDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBUaGUgQ2VsbFR5
cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBKU0NlbGwuCiAg
ICAgQ2VsbFR5cGUsCiAgICAgU3RyaW5nVHlwZSwKLSAgICBCaWdJbnRUeXBlLAotICAgIExhc3RN
YXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEJpZ0ludFR5cGUsCisgICAgSGVhcEJpZ0ludFR5cGUs
CisgICAgTGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gSGVhcEJpZ0ludFR5cGUsCiAgICAg
U3ltYm9sVHlwZSwKIAogICAgIFN0cnVjdHVyZVJhcmVEYXRhVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBm
bGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBm
bGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNT
RVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQog
Ci0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1f
ZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApp
bmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBA
IC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJhZjA3Li41M2VkMTI0ZTVlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTEgKzM2LDYgQEAgYm9v
bCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9i
YWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQot
ewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEs
IHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4
Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03Mywy
MSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhw
MikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9u
LiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVm
dE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJl
c3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdl
dCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9Owor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9i
amVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAog
SlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdikKQEAgLTEyOCw3ICsxMjUsNyBAQCBib29sIGpzSXNPYmplY3RU
eXBlT3JOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAg
ICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5
cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8
fCB0eXBlID09IEJpZ0ludFR5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBl
ID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2Jq
ZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVj
dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJi
ZTIzYzA3MjUuLjY5MzhlMjY2YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
Mi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIK
ICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0j
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIzOSw2ICsy
MzgsMzUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmUKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIu
cmVsZWFzZSgpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0
IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiB2MSwgSlNWYWx1ZSBwcmltVmFsdWUpCit7CisgICAgQVNTRVJUKHByaW1W
YWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgpKTsK
KworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsK
KyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChn
bG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdDo6VW5kZWZpbmVkKTsKKyAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOworCisgICAgICAg
IGlmIChiaWdJbnRWYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6Y29tcGFyZSh2MSwgYmlnSW50VmFsdWUuYXNIZWFwQmlnSW50KCkpOworCisgICAgICAg
IEFTU0VSVChiaWdJbnRWYWx1ZS5pc0JpZ0ludDMyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgLy8gRklYTUU6IHVzZSBzb21ldGhpbmcgbGVzcyBoYWNreSwgZS5nLiBzb21lIGtpbmQg
b2YgSlNCaWdJbnQ6OmNvbXBhcmVUb0ludDMyCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29t
cGFyZVRvRG91YmxlKHYxLCBzdGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMy
QXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBw
cmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1
cm4gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdB
WVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdCBjb21wYXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNv
bk1vZGUpCiB7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZTo6TGVzc1RoYW4pCkBAIC0yNTUsNTEgKzI4Myw1MCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
YmlnSW50Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBK
U1ZhbAogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAm
JiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2Rl
KTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IHYyOwotICAgICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAg
ICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9i
YWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAg
aWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmln
SW50KHYxKSwgYmlnSW50VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50
Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHBy
aW1WYWx1ZSkpLCBjb21wYXJpc29uTW9kZSk7CiAKLSAgICAgICAgZG91YmxlIG51bWJlclZhbHVl
ID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1
bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MSksIG51bWJlclZhbHVlKSwg
Y29tcGFyaXNvbk1vZGUpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNCaWdJbnQz
MigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0g
SlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAgICAgICAgICAgIHJldHVybiB2
MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBBU1NF
UlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9y
RXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPD0gdjIuYmlnSW50
MzJBc0ludDMyKCk7CiAgICAgfQotICAgIAotICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0g
ICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRW
YWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHBy
aW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworI2VuZGlmCisKKyAgICBKU0JpZ0ludCog
djFIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICBKU0JpZ0ludCogdjJIZWFwQmlnSW50ID0gbnVs
bHB0cjsKKyAgICAvLyBGSVhNRTogaGF2ZSBzb21lIGZhc3QtaXNoIHBhdGggZm9yIGEgY29tcGFy
aXNvbiBiZXR3ZWVuIGEgc21hbGwgYW5kIGEgbGFyZ2UgYmlnLWludAorICAgIGlmICh2MS5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFwQmlnSW50KCk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAg
djFIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQz
MigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2Mkhl
YXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxz
ZSBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAo
djFIZWFwQmlnSW50ICYmIHYySGVhcEJpZ0ludCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBh
cmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUodjFIZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQpLCBj
b21wYXJpc29uTW9kZSk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50KSB7CisgICAgICAgIGF1dG8g
Y29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCwgdjFIZWFwQmlnSW50LCB2Mik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6
Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOworICAg
ICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJp
c29uTW9kZSk7CiAgICAgfQotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAg
ICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJ
bnQocHJpbVZhbHVlKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAg
IGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAorICAgIGF1dG8gY29tcGFy
aXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
djJIZWFwQmlnSW50LCB2MSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhlIHYy
Ci0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCA9IEpTQmln
SW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBudW1iZXJWYWx1ZSk7CiAgICAgaWYg
KGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCiAg
ICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmln
SW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8fCBjb21wYXJpc29uUmVzdWx0ID09
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKKworCiB9CiAKIEFMV0FZU19JTkxJ
TkUgYm9vbCB0b1ByaW1pdGl2ZU51bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2LCBKU1ZhbHVlJiBwLCBkb3VibGUmIG4pCkBAIC0zNTcsNyArMzg0LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAg
ICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5p
c0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpD
b21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3LDcgKzQzNCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlm
ICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmln
SW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBh
cmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzksMzQ4IEBAIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9i
amVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQz
Mk9wIGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQg
dW5ib3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0
eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmln
SW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJP
cCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2
MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVt
ZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51
bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlm
IChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNC
aWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRI
ZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0
LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
IGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCog
cmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5i
aWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCBy
aWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJ
bnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVy
aWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CisjZWxzZQorICAgICh2b2lkKSBiaWdJbnQzMk9w
OworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNI
ZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0lu
dE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVtZXJp
Yy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlmCisKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKK30KIAotICAgIHJldHVybiBqc051
bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmln
aHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdWIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJs
ZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAg
IHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAo
aW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxl
ZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3Vs
dC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgp
KTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisg
ICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJ
bnQ6OnN1YiwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJp
Z2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAqIHJpZ2h0OworICAgIH07Cisg
ICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
SlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJl
Y29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgKj0gcmlnaHQ7Cisg
ICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVz
dWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAo
dm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRpcGx5LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwor
fQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10g
KGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBs
ZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBs
ZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIGlmICghcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBsZWZ0IC8gcmlnaHQpOworI2Vsc2UK
KyAgICAgICAgKHZvaWQpIGxlZnQ7CisgICAgICAgICh2b2lkKSByaWdodDsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4g
YXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRl
LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1h
aW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsK
KyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7
CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5h
cnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3As
IGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVt
YWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAg
YXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAg
ICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cg
aW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAv
LyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRo
YXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJu
IGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9u
ZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNO
dW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRf
dCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMy
QXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3
IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rp
b24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2Jq
ZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBs
ZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIGF1dG8gb3BlcmFu
ZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmlnaHRO
dW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisKKyAgICBpZiAob3BlcmFuZE51
bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmlj
LmFzTnVtYmVyKCkgLSAxKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51
bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgLSAxOworICAg
ICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0
IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdW
YWx1ZSA8IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
Miwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworICAg
IEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMu
YXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU5v
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvQmlnSW50T3JJbnQzMihn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0
aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5p
c0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcih+b3BlcmFuZE51bWVyaWMuYXNJbnQz
MigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJ
bnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCB+b3Bl
cmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQob3Bl
cmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hl
YXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgc2hpZnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgYm9vbCBpc0xlZnQp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
IChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkgeworICAg
ICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAgICAgICAg
aW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOworICAgICAg
ICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQzMikgOiAo
bGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0
KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmln
SW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3Qg
bGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGludDMy
X3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAg
aWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0OworICAg
ICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQgcmVxdWly
ZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEgc2hpZnQg
d2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgYml0LXdp
ZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+IHN0ZDo6
bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBsZWZ0
IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0aW5nIEhl
YXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gZG8g
c29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQgZGV0ZWN0
aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFw
QmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAgICAgIEpT
QmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRJ
bnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0lu
dCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwg
cmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJp
Yy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAgICBhdXRv
IGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdl
KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmln
SW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJ
bnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFz
SW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZWxzZQorICAgIEpTQmln
SW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpT
QmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7Cisj
ZW5kaWYKKworICAgIGlmIChpc0xlZnQpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdo
dEhlYXBCaWdJbnQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50Ojpz
aWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJp
Z0ludCkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNMU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBib29sIGlz
TGVmdCA9IHRydWU7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xl
ZnQpOworfQogCi0gICAgZG91YmxlIGxlZnRWYWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KGxlZnRO
dW1lcmljKTsKLSAgICBkb3VibGUgcmlnaHRWYWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KHJpZ2h0
TnVtZXJpYyk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGxlZnRWYWx1ZSAqIHJpZ2h0VmFsdWUpOwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYm9vbCBpc0xlZnQgPSBmYWxzZTsK
KyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIGlzTGVmdCk7CiB9CiAKLWlu
bGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJ
bnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3Bl
cmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIHJldHVy
biBBU1NFUlRfRU5BQkxFRCB8fCBPcHRpb25zOjpzY3JpYmJsZUZyZWVDZWxscygpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJbnRPckludDMy
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAobGVmdE51bWVy
aWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBq
c051bWJlcihpbnQzMk9wKGxlZnROdW1lcmljLmFzSW50MzIoKSwgcmlnaHROdW1lcmljLmFzSW50
MzIoKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0lu
dDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgaW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50
MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgLy8gRklYTUU6IGFk
ZCBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIC8gSGVhcEJpZ0ludCwgYW5kIGZvciBIZWFwQmlnSW50
IC8gQmlnSW50MzIKKyAgICAvLyBJbiBtYW55IGNhc2VzIHRoZXNlIGNvdWxkIGJlIG1hZGUgbW9y
ZSBlZmZpY2llbnQgdGhhbiBoZWFwLWFsbG9jYXRpbmcgdGhlIHNtYWxsIGJpZy1pbnQgYW5kIGdv
aW5nIHRocm91Z2ggdGhlIGdlbmVyaWMgcGF0aC4KKyAgICAvLyBCdXQgaXQgaXMgcXVpdGUgdHJp
Y2t5LCBub3QgbGVhc3QgYmVjYXVzZSBIZWFwQmlnSW50IHVzZSBhIHNpZ24gYml0IHdoZXJlYXMg
QmlnSW50MzIgdXNlIDItY29tcGxlbWVudCByZXByZXNlbnRhdGlvbi4KKyNlbmRpZgorCisgICAg
aWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkp
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJp
Z0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZt
LCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmlzQmln
SW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJB
c0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAgICBKU0Jp
Z0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBK
U0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOwor
I2VuZGlmCisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludE9wKGdsb2JhbE9i
amVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogfQogCi0jZGVmaW5lIFND
UklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApCitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNCaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0ICYg
cmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBC
aWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJhbmQiIGFuZCByZS1ib3ggdGhlbS4KKyAg
ICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4g
Yml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZUFu
ZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3
aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworfQogCi1pbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZh
bHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlT3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0d2lz
ZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKKyAgICBhdXRvIGludDMyT3AgPSBbXSAo
aW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJu
IGxlZnQgfCByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBh
aXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94IHRo
ZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAg
cmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJp
dHdpc2VPciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKLWlubGluZSB2b2lkIHNjcmliYmxl
KHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lz
ZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQogewotICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsg
aS0tOykgewotICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJl
IHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgotICAgICAgICBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0Nl
bGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAgfQorICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQz
Ml90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVm
dCBeIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMg
b2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAieG9yIiBhbmQgcmUtYm94IHRoZW0u
CisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUsIGFuZCBqdXN0
IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGggMHgxMiBhdCB0aGUgZW5kIHRvIHJlc3RvcmUgdGhl
IHRhZworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpT
QmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi42YmRlZjFjY2RhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5o
IgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29s
IHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0
aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKK30KKworI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0
YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorCitpbmxpbmUgYm9vbCBpc1NjcmliYmxl
ZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JE
KSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQor
eworICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0t
OykgeworICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRo
YXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgorICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVk
SlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwq
PihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggM2RjMTdiNzMzNTkuLjQwMmRh
YTcxNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCkBAIC0zMjEsNyArMzIxLDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3Rv
dHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAg
ICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKQogICAgICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKICAgICAKLSAgICBpZiAo
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQorICAgIGlmIChzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYzVhMWQxMmNmYS4u
ZjJjNzllYjliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDIgIFJvYmluIE1vcmlz
c2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQg
cmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNF
KEJJR0lOVDMyKSBmbGFnLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAt
MDMtMDIgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEpT
QyAzMmJpdCBhbGlnbm1lbnQgaW5jcmVhc2UgZ2NjIHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmlu
ZGV4IDFhZDYxNTA3NmM5Li4xNmM5YmQxMjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzks
NiArMTM5LDEwIEBACiAjZW5kaWYKICNlbmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAm
JiAhZGVmaW5lZChVU0VfSlNWQUxVRTMyXzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNk
ZWZpbmUgVVNFX0JJR0lOVDMyIDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3Vs
ZCBiZSBtb3JlIHNwZWNpZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSog
Ki8KIC8qIFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAq
LwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2
XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392238</attachid>
            <date>2020-03-02 18:32:39 -0800</date>
            <delta_ts>2020-03-03 15:03:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>400344</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVz
dHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4u
ODI1ZTg1ZDZiNjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFu
ZC1vdGhlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIu
anMKQEAgLTU5LDE3ICs1OSwxNyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsK
ICAgICAgICAgICAgIG5vSW5saW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RD
YXNlSW5kZXh9KTsKIAogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7
bGVmdH0sICR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAo
dGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7
bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25v
bW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAg
ICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3Jp
Z2h0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9y
cGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVz
dWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNM
ZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0p
ICE9ICR7bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNS
aWdodENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0p
CiAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENv
bnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRl
c3RQb2x5bW9ycGhpYygke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9
KSI7CisgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9u
KCR7bGVmdH0sICR7b3BlcmF0b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50
UmVzdWx0fSkiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICAr
K3Rlc3RDYXNlSW5kZXg7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEt
b24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9u
LXZhcmlvdXMtdHlwZXMuanMKaW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMKQEAgLTgzLDcgKzgzLDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAi
LCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAg
ICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRD
YXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0
IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0
Q2FzZXNbbGVmdENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkz
LDcgKzk0LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENh
c2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQg
PSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAg
ICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXgg
KyAiKSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3
YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1z
dHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3Qt
ZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAg
IHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAg
IGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFy
ZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJl
LmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBl
dmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNl
cHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDY0ZGEwYjYxNTguLmIx
MDc3ZGNhZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODcgQEAKKzIw
MjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBC
aWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0byBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFu
Y2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFsbCAoMzIgYml0IG9yIGxlc3MpLgorICAg
ICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGludG8gSlNWYWx1ZSBvbiA2NC1iaXQgcGxh
dGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBvZiBhIEpTQmlnSW50LgorICAgICAgICBU
aGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgICAgVGhp
cyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgor
ICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIg
dGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3
aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8g
dHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byB3
YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBj
YW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRv
IGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5l
ZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisKKyAgICAgICAgVGhpcyBlbnRpcmUgY2hh
bmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc2Fi
bGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4KKyAgICAgICAgSXQgc2hvdWxkIGFsc28g
bWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYgYSBnaXZlbiBidWcgY29tZXMgZnJvbSBp
dCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIE5vdGUgdGhhdCBpbiB0aGlzIHBh
dGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMgd2hlbiBwYXJzaW5nIEJpZ0ludCBjb25z
dGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4gQWRkIG9yIEJpdE9yKSBwcm9kdWNlIGEg
QmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5kcyBhcmUgQmlnSW50MzIsCisgICAgICAg
IGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIgZnJvbSBmb3IgZXhhbXBsZSB0aGUgc3Vi
c3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBoZWFwLWFsbG9jYXRlZCBKU0JpZ0ludHMs
IGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJpdHMuCisgICAgICAgIEFzIGEgcmVzdWx0
LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJlIGhlYXAtYWxsb2NhdGVkIG9yIGlubGlu
ZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBhIHNpZ25p
ZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBwYXRocywgd2hpY2ggYXJlIG5vdyBncm91
cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAgICAgICBCZWNhdXNlIHRoaXMgaW5jcmVh
c2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWduaWZpY2FudGx5LCBJIHNwbGl0IHRoZSBw
YXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9ubHkgdXNlZCBieSB0aGUgR0MgaW50byBT
Y3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21waWxlIHRpbWVzLgorCisgICAgICAgIElu
IHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVzZUtpbmRzIGZvciBCaWdJbnRzOiBIZWFw
QmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55QmlnSW50VXNlLgorICAgICAgICBUaGUgbGF0
dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIG5vdyB0aGF0IHdlIGFyZSByZWNlaXZpbmcgQmlnSW50cywg
YnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBvZiBoZWFwLWFsbG9jYXRlZCBhbmQgc21h
bGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGEgbmFpdmUg
aW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWduaWZpY2FudGx5IHJlZ3Jlc3NlcyB0aGUg
cGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMgdmFyaWFudHMpLCBhcyBpdCBpcyBubyBs
b25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24tY2VsbCBjYW5ub3QgYmUgZXF1YWwuCisg
ICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29kZSB3YXMganVtcGluZyB0byBhIHNsb3cg
cGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBkb3Vi
bGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFyZSBjZWxscworICAgICAgICBOb3csIGl0
IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBpcyBh
IGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBwZXJmb3JtYW5jZSBjb3N0LCBJIHNpZ25p
ZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20KKyAgICAgICAgICBpZiAobGVmdCBpcyBD
ZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQor
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQgaXMgSW50MzIpIHsKKyAgICAgICAgICAg
IGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAg
ICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJbnQzMikgeworICAgICAgICAgICAgaWYg
KHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAg
IH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodAorICAgICAgICBUbyB0aGUgZm9sbG93
aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisg
ICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCBy
aWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgdG8gYmUgZmFzdGVyIHRoYW4ganVzdCBy
ZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBieSBhbiB8fCwgYmVjYXVz
ZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBp
cyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVjZSB0aGUgcHJlc3N1cmUgb24gdGhlIGJy
YW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpldFN0cmVhbTIgdGVzdHMgYXBwZWFyIHRv
IGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdobHkgbmV1dHJhbCB3aGlsZSBpdCB3YXMg
YSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0aGlzIHRyaWNrLCBidXQgdGhlIG51bWJl
cnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRvIGRvIG1vcmUgbWVhc3VyZW1lbnRzIGJl
Zm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgSSBkb24ndCB5ZXQgaGF2ZSBwZXJm
b3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9uIGEgQmlnSW50IGJlbmNobWFyaywgSSB3
aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWluZyB0byBsYW5kIGl0LCBidXQgSSdkIGxp
a2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3Jt
YXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyOjptZW1vcnlNb2RSTSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQzMiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoV1RGOjpwcmlu
dEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAgICAg
KEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlTm9uSW50MzIpOgorICAgICAgICAoSlND
OjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQpOgorICAgICAgICAoSlNDOjpPYnNl
cnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2
ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAq
IGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRpb24pOgorICAgICAgICAoSlND
OjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZy
b21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAg
ICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OmxlYXN0VXBw
ZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKToKKyAgICAgICAgKiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc0JpZ0ludDMyU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50
Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
b25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRC
aXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJp
dHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
T3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
UG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjplZGdlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Om5vZGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6Z3ByKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1VzZUtp
bmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZH
VXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAo
SlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZh
bHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29u
c3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmg6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0UlNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0TFNoaWZ0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0TFNoaWZ0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpdFVSU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1lcmlj
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVF
cSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
SXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0Qmlu
YXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRC
aW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YnVpbGRU
eXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dIZWFwQmln
SW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0JpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnVuYm94QmlnSW50MzIpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QW55QmlnSW50KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNIZWFwQmlnSW50KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJ
bnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGhl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1
aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAg
ICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENv
bnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJh
bmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVy
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkhlYXBCaWdJbnQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90SGVhcEJpZ0ludCk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5ib3hCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJl
bmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6Y2FsbEJpZ0ludENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmlnSW50T2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9CaWdJbnRPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc0Jp
Z0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlB
cml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhP
cCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRlYyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRv
U3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb051bWJlcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb0ludDMyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFzSGVhcEJpZ0ludCk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJT
bG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNQcmlt
aXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIp
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVyaWMgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1
YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0
U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0hlYXBCaWdJbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvQm9vbGVhbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0Jvb2xlYW4gY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUlu
Zm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzQWRkU2xv
d0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICog
cnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmNvbXBhcmVCaWdJbnRUb090aGVy
UHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29tcGFyZSk6CisgICAgICAgIChKU0M6
OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0VxKToKKyAgICAgICAgKEpTQzo6YXJpdGht
ZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNTdWIpOgorICAgICAgICAoSlNDOjpqc011
bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAgICAgKEpTQzo6anNSZW1haW5kZXIpOgor
ICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChKU0M6OmpzSW5jKToKKyAgICAgICAgKEpT
Qzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VOb3QpOgorICAgICAgICAoSlNDOjpz
aGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNSU2hpZnQp
OgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc0JpdHdp
c2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VPcik6CisgICAgICAgIChKU0M6OmpzQml0
d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3JpYmJsZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6
c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlNDOjppc1NjcmliYmxlZFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKToKKwog
MjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1YnNjcmlw
dCBhbGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOC4uYmE2
NTFiMGU0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYsNiArODY2LDcg
QEAKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0Uz
ODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkyQUY3MzgyRDE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0
cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0
NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmli
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzEx
MUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyog
QjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRo
c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzNCMkE1NDcy
MjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRGQjFCREFDREFDMDA4MEZGNzQgLyogQjNW
YWx1ZUlubGluZXMuaCAqLzsgfTsKQEAgLTM1MDcsNiArMzUwOCw3IEBACiAJCTJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhBMjM5NzI1NjUw
MEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRp
bWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
T3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBiMy9CM09wdGlt
aXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4
cHJlc3Npb25UcmVlcy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lv
blRyZWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMw
MEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGlt
aW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTQzLDYg
Kzc1NDUsNyBAQAogCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHNUYWJsZS5oICovLAogCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNl
dC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0Lmgg
Ki8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8sCiAJCQkJ
MTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3BwICovLAogCQkJ
CTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi8sCiAJCQkJ
ODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywKQEAgLTg5MDcs
NiArODkxMCw3IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAw
QjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIy
Mzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEx
QzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAppbmRleCBjMTAwMjQwNGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNDY5OCw3ICs0Njk4
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAgICAvLwotICAg
ICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRl
IGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCisgICAgICAgIC8vIEFuIGltbWVkaWF0ZSBz
aG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4g
ZW1pdHRlZC4KICAgICAgICAgLy8gVGhlIHdyaXRlcyBhcmUgdW5jaGVja2VkIHNpbmNlIHRoZSBv
cGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4KIAogICAgICAg
ICB2b2lkIGltbWVkaWF0ZTgoaW50IGltbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggZmVhNjY3NDViNjIuLmYyYzA1ODRkNDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Myw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBU
YWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BS
UmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEVt
aXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1p
dFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRF
bWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYmICFzaG91
bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTggQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IENDYWxsSGVscGVyczo6SnVtcCBub3RCaWdJbnQzMiA9IGppdC5icmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0ludDMyKGppdCk7
CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIubGluaygmaml0
KTsKKyNlbHNlCisgICAgKHZvaWQpIHRlbXBHUFI7CisjZW5kaWYKKwogICAgIG5vbk51bWVyaWMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5vbk51bWVyaWMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIGVt
aXRTZXRCaWdJbnQoaml0KTsKKyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBCaWdJbnQoaml0
KTsKICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVyaWMubGluaygm
aml0KTsKQEAgLTg4LDE5ICs5NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBl
Pjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7Cisg
ICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25z
dAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7Cisg
ICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAg
cmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBC
aXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0Qmln
SW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRU
eXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7Ci0gICAg
aWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQo
aml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVtaXRTZXRIZWFw
QmlnSW50KCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1
bHRzOjpIZWFwQmlnSW50KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBsYXRlPHR5cGVu
YW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRT
ZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkRW1p
dFNldEJpZ0ludDMyKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2
ZWRSZXN1bHRzOjpCaWdJbnQzMik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlwZW5hbWUgQml0
ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFVuY29uZGl0
aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBjb25zdAogewpA
QCAtMTQ5LDggKzE3OCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkludDUyT3ZlcmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsK
ICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50KCkpIHsKLSAg
ICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAgICAgaWYgKHBy
b2ZpbGUuZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIoKSkgeworICAg
ICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAgICAgICAgICBz
ZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdjMWZlNzEzYjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEg
PDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJP
dmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwK
KyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAg
ICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVt
Qml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVl
ZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNp
dCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQog
ICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMg
JiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50
KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQg
fCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2Jp
dHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRP
YnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3Vi
bGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRz
ICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJl
dHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkg
eyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkg
eyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0K
ICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50
MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVy
biBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2Jz
ZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3Qg
eyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9v
bCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygp
LmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2Vy
dmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9i
c2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlk
T2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1pl
cm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9
CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJl
c3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRP
YnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAg
IHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpI
ZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9i
c2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3Zl
cmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAg
dm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6
OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVk
UmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJs
ZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAg
ICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAo
dmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1
bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAg
LTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMg
KEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlm
IGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxs
SGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsK
IAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgp
IGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAot
ICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0
OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldEhl
YXBCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3VsZEVtaXRTZXRC
aWdJbnQzMigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVtaXRTZXRCaWdJ
bnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBlbWl0VW5jb25k
aXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0OwogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCkBAIC0xNzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0aFByb2ZpbGVC
YXNlID0gdWludDE2X3Q7CiBjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFBy
b2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVtQml0c05lZWRl
ZDsKIAotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAi
U2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51
bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxk
IGZpdCBpbiB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBl
Qml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xhc3MgQmluYXJ5
QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNl
PiB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0gc2l6ZW9mKEJp
bmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgs
ICJTaG91bGQgZml0IGluIHRoZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3RhdGljX2Fzc2Vy
dCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNw
ZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJp
dHMgc2hvdWxkIGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzcGVjaWFsRmFzdFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRp
Y19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2spKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0
aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLjQ4Yjc4NzBlY2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTMyNyw2ICszMjcsNyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAgOmlzX3VuZGVm
aW5lZF9vcl9udWxsLAogICAgICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlzX251bWJlciwK
KyAgICAgICAgOmlzX2JpZ19pbnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAgICAgIDppc19v
YmplY3Rfb3JfbnVsbCwKICAgICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmgKaW5kZXggOWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NCw2
ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJc1VuZGVmaW5l
ZE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5kKQogICAgIFVT
RVMoT3BJc051bWJlciwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9wZXJhbmQpCiAg
ICAgVVNFUyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVjdE9yTnVsbCwg
b3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBAIC00MjMsOSAr
NDI0LDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBu
dW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElkZW50aXR5V2l0
aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAgIERFRlMoT3BJ
c1VuZGVmaW5lZCwgZHN0KQotICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQorICAg
IERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jvb2xlYW4sIGRz
dCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJbnQsIGRzdCkK
ICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RPck51bGwsIGRz
dCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTFlZWZhMDA5OGUuLjNjMGVjZmNmMmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NTksNyArNTksNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCmluZGV4IDMyZjU4OGRiZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBAQCBlbnVtIERh
dGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUsCiAgICAgRGF0
YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAgICBEYXRhRm9y
bWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0YUZvcm1hdEpT
ID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3Jt
YXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpT
IHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRp
bmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9y
bWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmlu
ZGV4IDcwMWMzMzA4OWI5Li44MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0
VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0Cit2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUg
bW9kZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgTm9uZToKQEAg
LTY3LDEyICs2NywxMiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRS
ZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0
aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0
ZXJzKTsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0
LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNh
c2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlBcml0aFByb2Zp
bGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsK
KyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVn
cywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKaW5kZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUluZGV4LmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisj
aW5jbHVkZSAiVGFnUmVnaXN0ZXJzTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODMs
NyArODQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1
ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFy
eSByZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3Rpbmcg
QmlnSW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFs
dWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3Rl
cnMpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApp
bmRleCAxMDUzYmE1MmI1NC4uNzcxYzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSArMjM5LDYgQEAg
dm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2YWx1ZSAmIFNw
ZWNCaWdJbnQpCi0gICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAodmFs
dWUgPT0gU3BlY0ludDMyT25seSkKQEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAgIAorCisgICAg
aWYgKCh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IFNwZWNCaWdJbnQpCisgICAgICAgIHN0ck91dC5w
cmludCgiQmlnSW50Iik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgeworICAgICAgICBp
ZiAodmFsdWUgJiBTcGVjQmlnSW50MzIpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0lu
dDMyIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKHZhbHVlICYgU3BlY0hlYXBCaWdJbnQpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQo
IkhlYXBCaWdJbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KyAgICB9CisjZW5kaWYKKwogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCiAg
ICAgICAgIHN0ck91dC5wcmludCgiRG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBAIC00MzEsNyAr
NDQyLDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICAKICAg
ICBpZiAoY2xhc3NJbmZvID09IEpTQmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBTcGVj
QmlnSW50OworICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBpZiAoY2xhc3NJ
bmZvID09IEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9i
amVjdDsKQEAgLTQ5OSw4ICs1MTAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5n
OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpCiAg
ICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IEJpZ0ludFR5cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGlm
IChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQorICAgICAg
ICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gRGVyaXZlZEFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJy
YXk7CiAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpKTsKQEAgLTUzNiw2ICs1NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21WYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0Rv
dWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CisgICAgaWYg
KHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DZWxsKHZh
bHVlLmFzQ2VsbCgpKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01OTUsOCArNjA4
LDggQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBTeW1ib2xUeXBl
OgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5cGU6Ci0gICAg
ICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CisgICAgICAg
IHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0
dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02MzIsNiArNjQ1
LDEwIEBAIFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50
U3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAmIFNwZWNTdHJp
bmcpCiAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBlICYgU3BlY0Jp
Z0ludCkKKyAgICAgICAgdHlwZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJuIHR5cGU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
aW5kZXggNWRiMThjNjQ4MmQuLmRmMGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwxNCBAQCBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNP
dGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRl
ZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Jv
b2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBO
dWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNF
bXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0
MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0
MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9jYXRlZCBvbiB0
aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
c21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBT
cGVjQmlnSW50MzIgfCBTcGVjSGVhcEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDM7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3Ry
aW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0Jp
Z0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlW
aWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3Ry
aW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21p
c2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2Jq
ZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFy
cmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVz
ZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGlj
IGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxP
dGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNh
biBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNE
b3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8
IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTQ2VsbC4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hl
YXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMy
IHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhl
IGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4u
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUlt
cHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2Rl
IGxvY2FsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRvcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1iZXI7
IC8vIEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4b3Rp
YyBlbmNvZGluZ3Mgb2YgbnVtYmVycy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9v
bCBpc1N5bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJ
bnQzMjsKK30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmlnSW50OworfQor
CiBpbmxpbmUgYm9vbCBpc0JpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAhIXZhbHVlICYm
ICh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0FycmF5
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGZh
M2FiYmQxMWFkLi4xNDg0ZGY4OTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2Fy
aWNoQHV3YXRlcmxvby5jYT4KICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAq
CkBAIC0xNjY4LDcgKzE2NjgsMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFs
aXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAi
YmlnaW50IikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAgIE9w
SXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0aGlz
LCBkc3QsIG9wLm1fdmFsdWUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhU
eXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgSGVhcEJpZ0ludFR5cGUpOworI2VuZGlm
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKQEAgLTI4NzYsNyArMjg4MCw3IEBAIEpTVmFsdWUg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIHVpbnQ4CiAgICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBF
bnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUlu
dFNpZ24gPSBzaWduID8gSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6
OlBhcnNlSW50U2lnbjo6VW5zaWduZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9
IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCBy
YWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50
U2lnbik7CisgICAgICAgIEpTVmFsdWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQo
bnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJv
clBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludElu
TWFwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1Li4wYTAwM2I4ZjZmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtMTA4OSw3ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2lu
ZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3Ry
aW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50
TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcg
SWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+Owog
ICAgICAgICB1c2luZyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlw
dG9yTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBX
VEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQ2NF90Pj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNi4uOTgzM2Vh
YzE5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAi
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUNhY2hlLmgiCkBAIC0yMTQsNyArMjEzLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3Vs
dCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RW
YWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFs
dWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5m
bygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9
PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkg
PT0gQmlnSW50VHlwZSk7CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5
cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0
TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAg
ICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUg
c2luY2UgZWl0aGVyOgpAQCAtNTAyLDcgKzUwMSwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUo
bm9kZSwgU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOwor
ICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNl
KQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzIsNyArNTM2LDEzIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEJpbmFy
eUJpdHdpc2VPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogdGhpcyB1
c2Ugb2YgYmluYXJ5VXNlS2luZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVjaWFsaXplIHRvIChm
b3IgZXhhbXBsZSkgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdo
dC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKSB7CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOwor
ICAgICAgICAgICAgQVNTRVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgIH0gZWxzZSBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVy
V29ybGQoKTsKQEAgLTcyMiwxMSArNzMyLDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAK
ICAgICBjYXNlIFZhbHVlU3ViOgogICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8
fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAgICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNwZWNTdHJpbmcgaGVy
ZSBmb3IgVmFsdWVTdWI/IEl0IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0IGZvciBWYWx1ZUFk
ZC4KICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjQnl0
ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg
LTg4Niw2ICs4OTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBWYWx1ZU5lZ2F0ZTogeworICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8g
bXVjaCBzbWFydGVyIHRoaW5ncyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRkL1ZhbHVlU3ViLgog
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTU4LDcg
Kzk3MiwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCB0eXBlT2ZEb3Vi
bGVJbmNPckRlYyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBj
YXNlIEJpZ0ludDMyVXNlOgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTk3NCw3ICs5
OTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkWSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZFggJiYg
Y2hpbGRZICYmIGNoaWxkWC5pc051bWJlcigpICYmIGNoaWxkWS5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIGNhbGwgYGRpZEZvbGRDbG9iYmVyV29ybGRgIGhlcmUgYmVj
YXVzZSB0aGlzIHBhdGggaXMgb25seSBwb3NzaWJsZQotICAgICAgICAgICAgLy8gd2hlbiBub2Rl
LT51c2VLaW5kIGlzIFVudHlwZWRVc2UuIEluIHRoZSBjYXNlIG9mIEJpZ0ludFVzZSwgY2hpbGRy
ZW4gd2lsbCBiZQorICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlwZWRV
c2UuIEluIHRoZSBjYXNlIG9mIEFueUJpZ0ludFVzZSBvciBmcmllbmRzLCBjaGlsZHJlbiB3aWxs
IGJlCiAgICAgICAgICAgICAvLyBjbGVhcmVkIGJ5IGBBYnN0cmFjdEludGVycHJldGVyOjpleGVj
dXRlRWZmZWN0c2AuCiAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAg
ICAgICAvLyBPdXIgYm94aW5nIHNjaGVtZSBoZXJlIG1hdGNoZXMgd2hhdCB3ZSBkbyBpbiBvcGVy
YXRpb25WYWx1ZVBvdy4KQEAgLTk4Miw3ICsxMDAwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5Miw3ICsxMDEyLDEwIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZU11bDogewot
ICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAg
Ly8gRklYTUU6IHdoeSBpcyB0aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRoIFZhbHVlU3ViPworICAg
ICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAg
ICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9k
ZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CkBAIC0xMDU2LDcgKzEwNzksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBpZiAoaGFuZGxlQ29uc3RhbnREaXZPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBp
ZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBA
IC0xMzgwLDYgKzE0MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgSXNV
bmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoK
KyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2Ug
SXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTE0MDgsNiArMTQzNCw5IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzTnVtYmVyOgogICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlz
TnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNC
aWdJbnQ6CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxk
LnZhbHVlKCkuaXNCaWdJbnQoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNoaWxkLnZhbHVl
KCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYyLDcgKzE1OTEsMjIgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBpZiAoIShj
aGlsZC5tX3R5cGUgJiB+U3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBj
b25zdGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpZiB0aGUgU3BlY3VsYXRlZFR5cGUgaW5mb3Jt
cyB1cyB0aGF0IHdlIHdvbid0IGhhdmUgYSBCaWdJbnQzMiAob3IgdGhhdCB3ZSB3b24ndCBoYXZl
IGEgSGVhcEJpZ0ludCksIHRoZW4gd2UgY2FuIHRyYW5zZm9ybSB0aGlzIG5vZGUgaW50byBhIElz
Q2VsbFdpdGhUeXBlKEhlYXBCaWdJbnRUeXBlKSAob3IgYSBoeXBvdGhldGljYWwgSXNCaWdJbnQz
MiBub2RlKS4KIAorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRl
Z2VyOgogICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKSB7
CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKQEAg
LTE5MzYsMTMgKzE5ODAsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjaGVjayBoZXJl
LCBhbmQgbm90IGxhdGVyIChhZnRlciB0aGUgdHlwZS1iYXNlZCByZXBsYWNlbWVudCBieSBmYWxz
ZSkuCisgICAgICAgIC8vIFNhYW0gc2VlbXMgdG8gYWdyZWUgdGhhdCB0aGUgdHdvIGNoZWNrcyBj
b3VsZCBiZSBzd2l0Y2hlZCwgSSdsbCB0cnkgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoCiAgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgY29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50
IHRvIEpTQy4KLSAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQgPSBbXSAo
SlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5p
c0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gaXNOb25TdHJp
bmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygp
ICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAg
IGlmIChpc05vblN0cmluZ0NlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25z
dGFudChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENv
bnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQocmlnaHQpKSB7
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7CiAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29s
ZWFuKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5NTcsMTkgKzIwMDMsMjQgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpID09IG5vZGUtPmNoaWxkMigpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDMyVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQ1MlJlcFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdJZGVudFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3ltYm9sVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChP
YmplY3RVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NV
c2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KFVudHlwZWRVc2UsIE1pc2NVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdWYXJVc2UpIHx8Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2Up
IHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50
eXBlZFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgU3RyaW5nVXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBj
YXNlIG5vdCBpbnZvbHZpbmcgTmFOIHdoZXJlIHggPT09IHggaXMgbm90IGd1YXJhbnRlZWQgdG8g
cmV0dXJuIHRydWU/CisgICAgICAgICAgICAvLyBJZiBub3QgSSBtaWdodCBzbGlnaHRseSBzaW1w
bGlmeSB0aGF0IGNoZWNrLgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChC
b29sZWFuVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQz
MlVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkK
KyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2Up
CisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQor
ICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNj
VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVu
dFVzZSwgTm90U3RyaW5nVmFyVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAg
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpCisgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkK
KyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsK
ICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMWZhMGIzMTc4Ny4uYzhjMjVj
MzBkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC01NTYyLDYgKzU1NjIsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX251bWJl
cik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2lzX2JpZ19pbnQ6IHsKKyAgICAgICAg
ICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIGFkZFRvR3JhcGgoSXNCaWdJbnQsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9pc19iaWdfaW50KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaXNfY2Vs
bF93aXRoX3R5cGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGdldChieXRlY29kZS5tX29wZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZjLi4wM2U4OWIyNmU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQ5LDYg
KzE0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9pc191bmRlZmlu
ZWRfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2Jvb2xlYW46CiAgICAgY2FzZSBvcF9pc19udW1i
ZXI6CisgICAgY2FzZSBvcF9pc19iaWdfaW50OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgogICAg
IGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6CiAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlw
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIzMThm
ZTAzYWUuLmVjMWVmOWYwMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE3NSw2ICsxNzUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJ
c051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgog
ICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgpAQCAtMjYwLDcg
KzI2MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAg
IGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gQmlnSW50VXNlKSB7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8
fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICAg
ICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTY4NSw3ICs2ODYsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNl
IEludDMyVXNlOgogICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBjYXNlIERvdWJs
ZVJlcFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJV
c2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRV
c2U6CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgpAQCAtNzA3LDcgKzcxMCw4IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBWYWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0TFNo
aWZ0OgogICAgIGNhc2UgVmFsdWVCaXRSU2hpZnQ6Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50VXNlKSkgeworICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2Ygc2lu
Z2xlLWFyZ3VtZW50IGlzQmluYXJ5VXNlS2luZCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gc3BlY2lh
bGl6aW5nIChmb3IgZXhhbXBsZSkgZm9yIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEg
QmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBkZWYo
UHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAppbmRleCBiNDNmN2NmNTRlMS4uYWM2ODM0MzMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNp
dCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChK
U1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYg
dmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkg
JiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAg
ICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmln
SW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjLi5lYWE1YjI0MTA3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1
ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRG
R05vZGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIApAQCAtMTQ3LDYgKzE0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNC
b29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RP
ck51bGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCBlOTdkZTEwZjZmNC4uOTI0ODZmYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMSwxNCArMjAxLDM0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAo
c2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8g
Y29tcGlsZSBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9w
dGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4g
dGhhdCBjYXNlLgorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVl
QWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNIZWFwQmlnSW50LCBKU0Nv
bnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENv
bnN0YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENo
aWxkMihFZGdlKG5vZGVDb25zdGFudE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJ
bnRzIGFyZSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVy
ZQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5z
ZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBu
b2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2Nr
LCBTcGVjQmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGgu
ZnJlZXplKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9y
IG5vdy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lh
bCByZXByZXNlbnRhdGlvbiBmb3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAg
fSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2Vm
dWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2Vz
IHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdo
dCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFk
IGluIHRoYXQgY2FzZS4KICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBW
YWx1ZUFkZCA6IFZhbHVlU3ViKTsKLSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0Nv
bnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENv
bnN0YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlND
b25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5z
ZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUg
Y3VycmVudGx5IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBo
ZXJlCisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29k
IGhlcmUKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNCwx
MiArMjU0LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5j
aGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisg
ICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9k
ZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0Uo
QklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNo
aWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPFVudHlwZWRVc2U+KGNoaWxkMik7CkBAIC0yNjcsOCArMjk1LDIxIEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxMiw3ICszNTMsMTcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
KCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+
c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJh
bmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVy
YW5kRWRnZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
b3BlcmFuZEVkZ2UpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdl
Lm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7
CkBAIC00NTcsOSArNTA4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNo
aWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChj
aGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KGNoaWxkMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9k
ZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNo
aWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNo
aWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7Cisj
ZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5
cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hp
bGQyKTsKQEAgLTU0NSw4ICs2MDQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJp
Z2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJ
bnQzMihsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAg
ICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTU4NywxMiArNjU5LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAg
ICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAg
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmln
aHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNl
PihsZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmln
aHRDaGlsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklH
SU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRD
aGlsZCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxl
ZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4obGVmdENoaWxkKTsKQEAgLTY1NiwxMiArNzM2LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1NDAsNiArMjYyOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29s
ZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAg
ICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAg
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMjg4MCw3ICsyOTY5LDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMy
KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTUzLDcgKzMwNTEsMTYgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGls
ZCBpcyBCaWdJbnQsIHdlIGF0dGVtcHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHks
IHNpbmNlIGl0IGNhbiBvbmx5IHJldHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0zNDMzLDEzICszNTQwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5n
VXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVz
ZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToK
ICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJp
bmdPYmplY3RVc2U6CiAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVz
KCkKICAgICAgICAgICAgICAgICB8fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGlj
dGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlh
YmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFu
ZCBBbnlCaWdJbnRVc2UgPworICAgICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91
dCBhbGwgb2YgdGhlIFVzZUtpbmRzIHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNo
PwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5
NDksMTIgKzQwNTgsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVm
YXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BB
bmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkgeworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmlu
Z0lkZW50KCkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4
MTBlMTAxLi5mODE3MGQ5MmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRl
ICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMzQ1NWI1YzI5Zi4uOTdmMTdhMDg5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjU0MSw2ICsyNTQxLDE4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CiAgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlQmlnSW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1
bGF0ZUJpZ0ludCgpCiAgICAgewpAQCAtMjc0MSw3ICsyNzUzLDE5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSog
b3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSog
b3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0lu
dCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0
YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZTIxMWVhNzdkODUuLmFmMGYzZjc0MDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTUsNiArMzk1LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzVW5kZWZpbmVkT3JO
dWxsLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhJc051bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAg
ICAvKiBJc0JpZ0ludCBpcyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIuIE90aGVyd2lzZSB3
ZSBlbWl0IElzQ2VsbFdpdGhUeXBlICovXAorICAgIG1hY3JvKElzQmlnSW50LCBOb2RlUmVzdWx0
Qm9vbGVhbikgXAogICAgIG1hY3JvKE51bWJlcklzSW50ZWdlciwgTm9kZVJlc3VsdEJvb2xlYW4p
IFwKICAgICBtYWNybyhJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJ
c09iamVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDIzZWJlMGQ3YmM3Li5iMjIxMTliOWQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxMyBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUg
c3VyZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdS
ZWdpc3RlciwKICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3Jl
IGl0LgogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNW
YWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAv
LyBXZSBhbHNvIHVzZSB0aGUgbm90Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdp
c3RlciwgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmlu
ZCBhIGxlc3MgZ3Jvc3Mgd2F5IG9mIGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcg
dGhlc2Ugb3BlcmF0aW9ucyB1bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0
ZXJzIGFyb3VuZD8KKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcp
LCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQu
bV9qc1ZhbHVlU291cmNlLmdwcigpKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpO
b3RDZWxsTWFzayksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNB
ZGRyZXNzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2Fu
IHVzZSBpdC4KQEAgLTM5OCw3ICs0MDEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9h
ZCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0
Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRh
Zyk7CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBA
IC00MDcsMTAgKzQxMCwxMCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAg
ICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkp
LCBzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNo
VGFnLCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAg
IHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9q
c1ZhbHVlU291cmNlLnJlZ3MoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmRiOWM5ZDc2Ny4uYTI2NWMwYWE3MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2
LDcgKzg2LDYgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZN
SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMSw1
NiArMjIwLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5s
aW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0
aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVy
YXRpb24mJiBudW1iZXJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50
T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0g
ICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihudW1iZXJPcChXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRp
b24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgYml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwot
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2Nv
cGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQz
Mk9wKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmln
aHROdW1lcmljKSkpKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
cGFyc2VJbnRSZXN1bHQoZG91YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19j
YXN0PGludD4oaW5wdXQpOwpAQCAtNDcwLDcxICs0MTksMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewot
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91
YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQp
OwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2Rl
ZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJh
bmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJs
ZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0luYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAg
ICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpk
ZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsK
LQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0RlYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC01NDMsMTUgKzQ1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0
byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
bGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1
cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRP
cDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikKQEAgLTU2MCwxNSArNDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9
OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAg
IHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5j
b2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpCkBAIC01NzcsMTUgKzQ3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0g
ICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qgcmln
aHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0K
LSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01OTQsMTUgKzQ4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQg
JiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4i
X3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNo
aWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02MTEsMTUgKzQ5MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4g
SlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0
dXJuIGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNl
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50
T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2ln
bmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
KQpAQCAtNjU3LDE1ICs1MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBh
dXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBK
U0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAg
ICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJs
ZSB7Ci0gICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRP
cCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2
aXNpb24gb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NzQsMTUgKzUzOCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdo
dCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3Ag
PSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4g
YmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50
T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4
cG9uZW50aWF0aW9uIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNQb3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aEFicyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxKQpAQCAtMTQ3OSw3ICsxMzM1LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4K
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3Qs
IGlucHV0KSk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNDkxLDcgKzEzNDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJh
bmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTUwMiw3ICsxMzU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE1MTQsNyArMTM3MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAg
cmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogICAgIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MjYsNyArMTM4Miw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MzgsNyArMTM5NCw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1
NTAsNyArMTQwNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmln
SW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NjIsNyArMTQxOCw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExT
aGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc0LDcg
KzE0MzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6
bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0xNTg2LDcgKzE0NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJl
dHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFu
ZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTk4LDcgKzE0NTQsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2
MTAsNyArMTQ2Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmln
SW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE2MjgsNyArMTQ4NCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5l
KGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOworICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVh
bEZvckNlbGxzKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgYXJnMSwgRW5jb2RlZEpTVmFsdWUgYXJnMikKQEAgLTE2NzMsMTAgKzE1Mjks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1Zh
bHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoV1RGOjpnZXQ8SlNCaWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKaW5kZXggMGYxYzg3NTRjZDYuLjNmMDRmODljZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBSZWdFeHBPYmplY3QqLCBKCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0KEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFD
ZWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdExTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRI
ZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwg
dWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBtaW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDI4ODg1OGIzOGMxLi5lM2NmNzk1YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTUzMiw3ICs1MzIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTAwMyw2ICsxMDE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAg
IGNhc2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVt
YmVySXNJbnRlZ2VyOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2Jq
ZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCBiYWRmZTFiMmQxNC4uZDU1OGE3NTc4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAg
ICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBj
YXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBj
YXNlIEJpZ0ludDMyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAg
Y2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJV
c2U6CkBAIC0yNjMsNiArMjY1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1i
ZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBj
YXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC02NzUsMTAgKzY3OCwx
MCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2Fz
ZSBWYWx1ZU1vZDoKICAgICBjYXNlIFZhbHVlUG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSk7CisgICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFs
dWVCaXROb3Q6Ci0gICAgICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmln
SW50VXNlOworICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3RO
b2RlVHlwZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlOGQw
NjgwNzkuLjVlMTkyMzQ0NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYQogCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2Up
KQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9k
ZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwgfHwgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNv
bXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7
CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50
NTJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1Mzcs
NDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUp
CiB7CiAgICAgRWRnZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQx
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNo
aWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50
MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKwor
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSBy
ZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlm
IHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6Qmln
SW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50
MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRf
dCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykp
OworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BS
KTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0lu
dDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhp
cywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwog
Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBz
cGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNo
aWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJl
cXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5k
UmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBA
IC0zNTc4LDE0ICszNjA1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNl
Tm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3Is
IEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2Um
IGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2Rl
LT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJ
bnRVc2UpOworCiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwg
aXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1Zh
bHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVl
UmVncygpOwogCkBAIC0zNjMwLDExICszNjYxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJh
bmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVm
dE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hp
bGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVx
dWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVS
ZWdzKCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAg
ICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNl
KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNw
ZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQog
ICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2
NzAsNTIgKzM3MDMsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lz
ZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAg
ICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGls
ZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7
CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7
CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxk
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCks
IHJlc3VsdEdQUik7CisKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVl
Qml0QW5kOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3Is
IG9wZXJhdGlvblZhbHVlQml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBWYWx1ZUJpdFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0
WG9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMg
bm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAg
bV9qaXQuYW5kNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxK
SVRCaXRPckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9l
cyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAg
ICBtX2ppdC5vcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3Zl
cyB0aGUgdGFnLCBzbyB3ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRp
b24KKyAgICAgICAgICAgIG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgbV9qaXQub3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdo
dENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxl
ZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklY
TUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgor
CisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENo
aWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7
CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFu
ZDoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBl
bWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25W
YWx1ZUJpdEFuZD4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9y
OgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdl
bmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9y
QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCBy
aWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50
Qml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAg
ICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUJpdHdpc2VPcChOb2RlKiBub2RlKQpAQCAtMzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50
eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVy
YXRpb25fR0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJp
dFJTaGlmdAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFs
dWVCaXRVUlNoaWZ0OwpAQCAtMzc2NSw5ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENo
aWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOwogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNL
bm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9k
ZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hp
bGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApA
QCAtMzg1OSwyNyArMzkyNiwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVM
U2hpZnRPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgp
OwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQg
QmlnSW50MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAg
ICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRH
UFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09
IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAg
ZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0
TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNo
aWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4
NywyNyArMzk1NCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hp
ZnQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQz
MgorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlw
ZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hp
ZnRCaXRPcChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3Ao
Tm9kZSogbm9kZSkKQEAgLTM5MTgsNyArMzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50Umln
aHRTaGlmdEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5
ICs0MDE1LDY5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBu
b2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJp
Z2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdl
IHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9y
aWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVy
IHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVu
Ym94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0
byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBy
ZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAg
ICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRS
ZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3Mg
PSByaWdodC5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6
IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQg
QmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIg
PSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAot
ICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3Bl
Y3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50
KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
QWRkQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQwMDYsNDQgKzQxMjMsOTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxk
ID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigp
OwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwot
ICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRj
aEZQUlJlZyA9IHRydWU7Ci0jZW5kaWYKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3
ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8g
UmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29k
ZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5t
b3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7Cisg
ICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CiAKLSAgICAgICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklU
U3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmls
ZSk7Ci0gICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJP
cHRpbWl6ZTsKLSAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZVN1YjsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhl
IG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9q
aXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBH
UFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVl
ZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwg
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNz
IGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2pp
dC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBw
b3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlKTsKKyAgICAvLyBGSVhNRTogd2h5IGRvIGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVN
dWwgdXNlIGlzS25vd25Ob3ROdW1iZXIgYnV0IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAg
ICAgIHNwZWN1bGF0ZUFueUJpZ0ludChyaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
bGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0
UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdwcigp
OwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAotICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAg
ICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxk
LCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CiAKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJp
Z0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOworCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJv
b2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3Jh
dGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7Cisj
ZW5kaWYKKworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgp
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5k
ZXgoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OworICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhh
cml0aFByb2ZpbGUpOworICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVTdWJPcHRpbWl6ZTsKKyAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlv
blZhbHVlU3ViOworCisgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNo
R1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKTsKKyAgICByZXR1cm47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5l
cmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uPgpAQCAtNDYxMyw2ICs0Nzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5j
T3JEZWMoTm9kZSogbm9kZSkKIHsKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUg
c2hvdWxkIGhhdmUgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1
cFBoYXNlCisgICAgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91
bGQgcHJvYmFibHkgaGF2ZSBzb21lIHBhdGggZm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQ2MjgsNiArNDc5NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhN
RTogYWRkIGEgZmFzdCBwYXRoLCBhdCBsZWFzdCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBh
bHNvIGZvciBIZWFwQmlnSW50IGhlcmUuCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgwOCwyOSArNDk3Niw2MyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBu
b2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAK
LSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRo
ZSBjb2RlIGJldHdlZW4gY29tcGlsZVZhbHVlQWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBp
bGVWYWx1ZU11bCBmb3IgQmlnSW50MzIgaXMgbmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdl
dCByaWQgb2YgdGhlIGR1cGxpY2F0aW9uLgorICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJh
bmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMy
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6
IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUg
bGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5k
IG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQu
Z3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BS
KTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1f
aml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21l
IHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJm
bG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6
IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsK
KworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BS
PworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
RklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYK
KworICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRD
aGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxl
ZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11
bEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNL
bm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0
Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwor
ICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3RO
dW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hp
bGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApA
QCAtNTAxMCwyOSArNTIxMiwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVE
aXYoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJl
bnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhl
IGNvZGUgZm9yIERpdiBnZXRzLgorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQ
Uik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
IAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hp
bGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFs
dWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVt
YmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2Rl
KCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxh
dGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVm
dC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5q
c1ZhbHVlUmVncygpOwogCkBAIC01MDQ2LDYgKzUyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0
aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+
IHJpZ2h0OwogCkBAIC01Mjk1LDI5ICs1NTAzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZU1vZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFk
ZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBz
bG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJl
ZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQu
Z3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTW9kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TW9kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9w
ZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMs
IHJpZ2h0Q2hpbGQpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIo
dGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxh
dGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAg
ICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVS
ZWdzIG9wMlJlZ3MgPSBvcDIuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpA
QCAtNTg1OSwzMCArNjA3MSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQ
b3coTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEg
ZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBmb3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxv
dyBwcmV0dHkgb2Z0ZW4uCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSk7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50
VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5
VXNlS2luZCgpKTsKIAotICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsK
LSAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVl
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1
bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQu
anNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVl
UmVncygpOwogCkBAIC02MDMwLDYgKzYyNDUsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29t
cGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJl
KG5vZGUsIGNvbmRpdGlvbik7CkBAIC02MDU3LDYgKzYyNzgsOCBAQCBib29sIFNwZWN1bGF0aXZl
SklUOjpjb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbgogICAgICAgICAgICAgY29tcGlsZVN0cmluZ0lkZW50Q29tcGFyZShub2RlLCBjb25k
aXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIC8vIEZJWE1F
OiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUgKGFuZCBhZGQgYSBjb3JyZXNwb25kaW5nIHRlc3Qs
IHdlIHNob3VsZCByZWFsbHkgaGF2ZSBjYXVnaHQgdGhpcykKIAogICAgIGlmIChub2RlLT5vcCgp
ID09IENvbXBhcmVFcSkgewogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xl
YW5Vc2UpKSB7CkBAIC02MTM2LDcgKzYzNTksMjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCi0jaWYgVVNFKEpTVkFMVUU2NCkgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJh
bmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJy
YW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNo
Tm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21w
aWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5j
aEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0lu
dDMyQ29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorI2VuZGlmCisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKQEAgLTYxODMsOCArNjQyMyw4IEBAIGJvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICBjb21waWxlQmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxl
SGVhcEJpZ0ludEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIApAQCAtNjI3OCw4ICs2NTE4LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0
eShub2RlLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlKSk7CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICBy
ZXR1cm4gbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShub2RlKTsKIH0KIApAQCAtMTA1NDEsMTggKzEw
NzgxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2Up
CiAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcg
Y2VsbCkKIHsKLSAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChj
ZWxsKSwgZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5v
dEJpZ0ludChjZWxsKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0
LmJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxsKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2Us
IFNwZWNCaWdJbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5k
LmdwcigpKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNW
YWx1ZVJlZ3MgcmVncykKQEAgLTEwNzIyLDggKzEwOTYyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAg
ICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmln
SW50VXNlOgotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2Up
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3Vs
YXRlQW55QmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVh
cEJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmlu
Z09iamVjdChlZGdlKTsKQEAgLTEzMDczLDE3ICsxMzMyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1l
bnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7Cisg
ICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0
eXBlT2YsIGFuZCBmb3IgYm9vbGlmeSBvciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBm
aWxlKS4KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3Vt
ZW50UmVncyk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChh
cmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNC
aWdJbnQgPSBtX2ppdC5qdW1wKCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdEhlYXBCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGlzSGVhcEJpZ0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwu
bGluaygmbV9qaXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1i
ZXIoYXJndW1lbnRSZWdzLCBzY3JhdGNoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7
CisgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdz
KGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTQy
LDkgKzE0MTkxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZUJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUg
PSBicmFuY2hOb2RlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1
YWxpdHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50
RXF1YWxpdHkoTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBD
cmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UK
KyAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lv
biBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMzk1Niw4ICsxNDIwNSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQu
dXNlKCk7CiAgICAgcmlnaHQudXNlKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hp
bGQxKCksIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmln
aHRHUFIpOworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIp
OworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5hNjU1
ZGU5ODNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0Niw2ICszNDYsOSBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxh
dGVEb3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCaWdJbnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVy
YXRlZE9wZXJhbmRUeXBlIGNoZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAg
ICAgdm9pZCBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+KTsKQEAgLTExNDgsNiArMTE1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQ
ZWVwSG9sZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24s
IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAg
ICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9k
ZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlSW50NTJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGls
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhv
bGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2go
Tm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUpOwpAQCAtMTE3Miw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1p
c2NTdHJpY3RFcShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2Rl
Kik7Ci0gICAgdm9pZCBjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29t
cGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVT
eW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxl
U3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBl
ZEVkZ2UpOwogCkBAIC0xMjIyLDYgKzEyMjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBj
b21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29t
cGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3Vi
bGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2
b2lkIGNvbXBpbGVTdHJpbmdDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CkBAIC0xMjk3LDExICsxMzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVCaXR3aXNlTm90KE5vZGUqKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRH
ZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQg
ZW1pdFVudHlwZWRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50
Qml0T3AoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVCaXR3aXNlT3AoTm9kZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJp
Z2h0U2hpZnRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRT
aGlmdEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2hpZnRPcChOb2RlKik7CkBAIC0xNTc5LDYgKzE1ODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c3BlY3VsYXRlSW50MzIoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91
YmxlUmVwQW55SW50KEVkZ2UpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVj
dWxhdGVBbnlCaWdJbnQoRWRnZSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQg
c3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjI4LDggKzE2
NDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChF
ZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAg
dm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRn
ZSwgR1BSUmVnIGNlbGwpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZv
aWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVj
dWxhdGVIZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBK
U1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQg
c3BlY3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDcs
NiArMjYyMCw1NiBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAK
KyNpZiBVU0UoQklHSU5UMzIpCitjbGFzcyBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAg
ICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5p
c0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFs
aWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFs
aWQpOworICAgIH0KKworICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9lZGdlOworICAgIH0KKworICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAg
eworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkp
OworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2Uo
KQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVn
IG1fZ3ByT3JJbnZhbGlkOworfTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUg
REZHX1RZUEVfQ0hFQ0tfV0lUSF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlw
ZXNQYXNzZWRUaHJvdWdoLCBqdW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJj
ZSBfZHRjX3NvdXJjZSA9IChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgRWRnZSBfZHRjX2VkZ2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGIwMTlkODVkZjljLi4zZWE5ZjNjOTdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC00MTg1LDcgKzQxODUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgICAgIERGR19D
UkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQ2hlY2tBcnJheU9yRW1wdHkgb25seSB1c2VkIGlu
IDY0LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBJc0Jp
Z0ludDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJJc0JpZ0ludCBp
cyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIsIHdoaWNoIGNhbiBvbmx5IGJlIHRydWUgaW4g
NjQgYml0IG1vZGUiKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggYjA3Y2IyNTc1ZDEuLjNlM2Q4NjY0YWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzgs
NyArMTM4LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2Up
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJs
ZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29s
ZWFuOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1h
dEpTQmlnSW50MzI6IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAg
IG1fZ3Bycy5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0zNDAsOCArMzQxLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAg
IH0KICAgICAKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBBU1NF
UlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5k
IGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
bm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICBH
UFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCkBAIC0zNjMsNDMgKzM2Nyw2NyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGlu
dmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQ
UiwgdGFrZW4pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJn
MkdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3
b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotICAgICAgICAKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcx
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdERvdWJsZSA9IG1faml0LmJyYW5j
aElmTnVtYmVyKGFyZzFHUFIpOwotICAgICAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyR1BS
KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHREb3VibGUgPSBtX2ppdC5icmFuY2hJ
Zk51bWJlcihhcmcyR1BSKTsKLSAgICAgICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAg
IAotICAgICAgICBicmFuY2g2NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRD
b21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHRha2VuKTsKLSAgICAgICAganVtcChu
b3RUYWtlbiwgRm9yY2VKdW1wKTsKLSAgICAgICAgCi0gICAgICAgIHR3b0NlbGxzQ2FzZS5saW5r
KCZtX2ppdCk7CisgICAgICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2lu
dmVydCcgdG8gYmUgZmFsc2UpOgorICAgICAgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICBpZiAobGVm
dCA9PSByaWdodCkKKyAgICAgICAgICAgIGdvdG8gdGFrZW47CisgICAgICAgICBpZiAobGVmdCBp
cyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
ICAgICAgZ290byBub3RUYWtlbjsKKyAgICAgICAgICovCisKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CisKKyAgICAgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBs
ZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xl
IGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBp
ZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgLy8gVGhlIHRy
aWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0
byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisg
ICAgICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBi
ZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMg
YWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OworICAgICAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0
Lm1vdmUoYXJnMkdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0
ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3Jh
dGNoLmdwcigpKTsKKyAgICAgICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIs
IHJlc3VsdEdQUik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdo
Qml0cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICAgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKICAgICAgICAg
YnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBu
b3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCi0gICAgICAgIGxlZnREb3VibGUubGluaygmbV9q
aXQpOwotICAgICAgICByaWdodERvdWJsZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgCisgICAg
ICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBp
ZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJ
bnQzMikKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBo
YXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3Ig
SGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgICAg
IC8vIEluc3RlYWQgb2YgZG9pbmcgdHdvIGJyYW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25l
LCBieSBvYnNlcnZpbmcgdGhhdAorICAgICAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0
IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgICAg
ICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgICAgICAvLyAyLiBT
aW5jZSB3ZSBrbm93IHRoYXQgbmVpdGhlciBpcyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCBy
aWdodCBpcyBDZWxsKSBpcyBlcXVpdmFsZW50IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQor
ICAgICAgICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxs
IGJlIHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgICAgIC8vICAgICAgSWYgYXQgbGVh
c3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgICAg
ICAvLyAgICAgIEFuZCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXIn
IHRhZyB3aWxsIGFsc28gYmUgMCwgbWFraW5nIHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7
CisjZWxzZQorICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7
CisjZW5kaWYKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZDZWxs
KHJlc3VsdEdQUikpOworCisgICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwg
Rm9yY2VKdW1wKTsKKworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAgICAgICAg
IGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpO
b25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9Ci0gICAgCisKICAgICBqdW1wKG5vdFRh
a2VuKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogeworICAgIC8vIEZJWE1FOiBzb21l
IG9mIHRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVhYmxlIHdpdGggbm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxCiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
SlNWYWx1ZVJlZ3MgYXJnMVJlZ3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJl
Z3MgYXJnMlJlZ3MgPSBhcmcyLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGFyZzFHUFIgPSBh
cmcxLmdwcigpOworICAgIEdQUlJlZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKICAgICAKICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CkBAIC00MjgsMzMgKzQ1Niw2MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAg
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAg
bV9qaXQub3I2NChhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7Cisg
ICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxz
ZSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAg
Z290byBzbG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgKi8KIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2Vz
OwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgdHdvQ2VsbHNDYXNlID0gbV9qaXQuYnJhbmNoSWZD
ZWxsKHJlc3VsdEdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5i
cmFuY2hJZkludDMyKGFyZzFSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk51bWJlcihhcmcxUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIGxlZnRPSy5saW5r
KCZtX2ppdCk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElm
SW50MzIoYXJnMlJlZ3MpOwotICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
TnVtYmVyKGFyZzJSZWdzLCBJbnZhbGlkR1BSUmVnKSk7Ci0gICAgcmlnaHRPSy5saW5rKCZtX2pp
dCk7Ci0KLSAgICBtX2ppdC5jb21wYXJlNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFs
IDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJl
c3VsdEdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwot
Ci0gICAgdHdvQ2VsbHNDYXNlLmxpbmsoJm1faml0KTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGFyZzFSZWdzLmdwcigpLCBh
cmcyUmVncy5ncHIoKSkpOworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBp
cyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVh
ZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFu
Y2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBK
U1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQg
b3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90
IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNl
dAorICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIG1faml0Lm1vdmUoYXJnMUdQUiwgcmVz
dWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgIG1f
aml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0
R1BSKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdo
Qml0cyksIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVz
dWx0R1BSLCByZXN1bHRHUFIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZI
aWdoQml0cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICBzbG93UGF0aENh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW02NChuZXh0TG93ZXN0T2ZIaWdoQml0cykpKTsKKworICAgIG1faml0
LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQ
Uik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRD
b21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSKTsKKworICAgIC8vIElmIHdlIHN1cHBvcnQgQmln
SW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBp
cyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAvLyBJZiB3ZSBkb24n
dCBzdXBwb3J0IEJpZ0ludDMyLCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYg
Ym90aCBvcGVyYW5kcyBhcmUgY2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFu
ZCBTdHJpbmcgPT09IFN0cmluZykKKyAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hl
cywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAvLyAxLiAo
bGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJp
Z2h0KSBpcyBDZWxsKQorICAgIC8vICAgICAgQm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAi
CisgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0
IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdo
dCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3Ag
Yml0cyB3aWxsIGJlIHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgLy8gICAgICBJZiBh
dCBsZWFzdCBvbmUgaXMgbm90IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisg
ICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVy
JyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Cisj
ZWxzZQorICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRp
ZgorICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIp
KTsKIAotICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCghaW52ZXJ0KSwg
cmVzdWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BSKTsK
IAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0
aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CiAKKyAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tNjQoaW52ZXJ0KSwgcmVzdWx0R1BSKTsK
KwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCkBAIC0xMDAzLDYgKzEwNTgsOCBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRn
ZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQz
MjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQg
ZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzQsNiArMTI5MSw4
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQog
ICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50
MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1f
aml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAg
CiAgICAgZGVmYXVsdDoKQEAgLTEzMTEsNiArMTM3MCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0
b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9y
bWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVu
dE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEz
MTksNiArMTM4MCwxMDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bGVhbihFZGdlIGVkZ2UpCiAgICAgfQogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVl
ZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
KFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYg
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFs
dWVSZWdzKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7
CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQorewor
ICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZp
bHRlcih2YWx1ZSwgU3BlY0JpZ0ludDMyKTsKKyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7Cisg
ICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewor
ICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRl
KCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJl
dGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNWYWx1ZSkpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICAgICAgfQorCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIs
IFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0JpZ0ludDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAg
ICAgICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxv
Y2sodGVtcEdQUik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpT
QmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBE
YXRhRm9ybWF0SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAg
IG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgewor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBl
ZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1w
R1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90
TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAg
ICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3Jt
YXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERh
dGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNl
IERhdGFGb3JtYXRKU0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNl
IERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERh
dGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0
YUZvcm1hdFN0cmljdEludDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9j
dXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
REZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9y
bWF0Iik7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAv
LyBVU0UoQklHSU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJp
Y3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTcx
OSw1NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQog
CisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMy
Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBv
cDIpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29u
ZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVk
IHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwK
KyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1v
dmUob3AyLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0
ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0Lmdw
cigpLCB0ZW1wLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFk
ZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3Iz
MihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jv
b2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQz
MkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3Vs
ZCByZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9u
IG5lZ2F0aXZlIG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAg
ICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxv
Y2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCkt
Pm5vdFRha2VuLmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJy
YW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNo
IHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2Ug
Y2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAg
ICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBC
YXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAg
ICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9w
MS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFy
ZUVxUHRyKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtNDA4Niw2ICs0Mjk5LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJ
c0JpZ0ludDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVlLmdwcigpKTsK
KworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2sp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5hbmQ2NCh2YWx1ZS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgcmVz
dWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1w
KCk7CisKKyAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgo
SklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBC
aWdJbnRUeXBlKSwgcmVzdWx0LmdwcigpKTsKKworICAgICAgICBjb250aW51YXRpb24ubGluaygm
bV9qaXQpOworICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0LmdwcigpKTsKKyAgICAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBiM2U0MWQ4ZDdlMS4u
ZGZhN2M2M2VkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
bWF5YmUgc3VwcG9ydCB0aGUgY2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJp
Z0ludCBhbmQgdGhlIG90aGVyIGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmICht
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICht
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UpCiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmlu
ZGV4IDhlZjczYjZmMmU4Li5hYjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgog
ICAgICAgICBvdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBC
aWdJbnRVc2U6Ci0gICAgICAgIG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJ
bnRVc2U6CisgICAgICAgIG91dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJCaWdJbnQzMiIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RV
c2U6CiAgICAgICAgIG91dC5wcmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0g
VXNlS2luZCB7CiAgICAgS25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8v
IFRoaXMgYml6YXJyZSB0eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRl
Y29kZSBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90
IG9iamVjdHMpLgogICAgIFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50
VXNlLAorICAgIEhlYXBCaWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVj
dFVzZSwKICAgICBNYXBPYmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1
NCwxMiBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtp
bmQpCiAgICAgICAgIHJldHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2Ug
U3ltYm9sVXNlOgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVz
ZToKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7Cisg
ICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7Cisg
ICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBj
YXNlIFByb21pc2VPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsK
ICAgICBjYXNlIERhdGVPYmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29s
IG1heUhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2
ZVR5cGVDaGVjayhraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBr
aW5kKQotewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2Fz
ZSBLbm93bkludDMyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJl
clVzZToKLSAgICBjYXNlIEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERv
dWJsZVJlcEFueUludFVzZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNl
S2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlu
bGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAg
Y2FzZSBLbm93blN0cmluZ1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0lu
dFVzZToKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6
CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RV
c2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5k
ZXggNWM2OWQxZDM4YzEuLjJmZDk3MWU2Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjAsNiArMjYwLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9y
TnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2Ug
SXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoK
ICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtNDgyLDcgKzQ4Myw5IEBAIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmlu
Z09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNl
OgogICAgICAgICAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2Ug
QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIE1hcE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1
YjQ5MjVjZmZiYy4uYzBmNGYyYjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbW1vblZhbHVlcy5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6
OmluaXRpYWxpemVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sq
IGJsb2MKICAgICBpbnRQdHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDMpOwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2Nr
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgYmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmgKaW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEw
IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZh
bHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVs
bHB0ciB9OwotICAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJv
IHsgbnVsbHB0ciB9OworI2VuZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAw
IH07CiAgICAgY29uc3QgdW5zaWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVl
IGJyYW5jaFdlaWdodHMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODAzNjM5MDdiOWUuLjUzMWQxM2Q2MzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1
Myw2ICsxMzUzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAg
ICAgIGNvbXBpbGVJc051bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
SXNCaWdJbnQ6CisgICAgICAgICAgICBjb21waWxlSXNCaWdJbnQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGNvbXBpbGVO
dW1iZXJJc0ludGVnZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjEzNSwxMSArMjEzOCwy
OCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAot
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJV
c2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50
MzIobGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQz
MihyaWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1
bGF0ZUFkZCh1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3Bl
Y3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7
CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7
CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIxNzYs
MjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAK
LSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMy
VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0lu
dDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50
MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVj
dWxhdGVTdWIodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1Nw
ZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4p
OworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0y
MTc3LDExICsyMjE0LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRV
c2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJ
bnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0
ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQg
PSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0
ID0gbV9vdXQuc3BlY3VsYXRlTXVsKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAg
ICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxw
dHIsIG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94Qmln
SW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJp
Z0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjg1
LDcgKzIzMzksMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwg
RnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9
IG1fbm9kZTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVl
KG5vZGUtPmNoaWxkMigpKTsKIApAQCAtMjU1NCwxMSArMjYyMiwxMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29tcGlsZVZhbHVlRGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7
Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uRGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjYzMywxOCArMjcwMiwyMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcGlsZVZhbHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAvLyBGSVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAg
ICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uTW9kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQo
KSk7Ci0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNl
LCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgIH0KQEAgLTI4MDksMTcgKzI4ODEsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbXBpbGVWYWx1ZVBvdygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAg
ICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgIC8vIEZJWE1FOiBtYXliZSBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgYmFzZSwgZXhwb25lbnQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVu
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChB
bnlCaWdJbnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBv
bmVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CiAgICAgfQpAQCAtMzIwMCw5ICszMjc2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
VmFsdWVCaXROb3QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAg
ICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
bkJpdE5vdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJpY2sg
cmVsaWVzIG9uIGRldGFpbHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEJpZ0ludDMyLCBhbmQg
d2lsbCBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYgd2UgbW92ZSBiaXRzIGFyb3VuZC4KKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAw
MDAwMTIpOworICAgICAgICAgICAgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAw
MGZmZmZmZmZmMDAwMDsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Io
b3BlcmFuZCwgbV9vdXQuY29uc3RJbnQ2NChtYXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFw
QmlnSW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIG9wZXJhbmQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjIwLDExICszMzEwLDIzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRv
IHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0QW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNDAsMTEg
KzMzNDIsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRPckJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgLy8gTm8gbmVlZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVk
IGJ5IGJpdEFuZAorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjYwLDEx
ICszMzc0LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdE1pc3NpbmdUYWcgPSBtX291dC5iaXRYb3IobGVmdCwgcmlnaHQp
OworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKHJlc3VsdE1pc3NpbmdU
YWcsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI4MCwxMSArMzQwNiwyOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0UlNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0aGluZyBzbWFy
dGVyIGhlcmUKKyAgICAgICAgICAgIC8vIFRoaW5ncyBhcmUgYSBiaXQgdHJpY2t5IGJlY2F1c2Ug
YSByaWdodC1zaGlmdCBieSBhIG5lZ2F0aXZlIG51bWJlciBpcyBhIGxlZnQtc2hpZnQgZm9yIEJp
Z0ludHMuCisgICAgICAgICAgICAvLyBTbyBldmVuIGEgcmlnaHQgc2hpZnQgY2FuIG92ZXJmbG93
LgorCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uVmFsdWVCaXRS
U2hpZnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjk2
LDI0ICszNDQwLDI1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5h
U2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAg
ICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50
MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsg
dGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGlj
cyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEJpdExT
aGlmdCgpCiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5zaGwoCiAgICAgICAgICAgICBs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJ
bnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAg
ICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0
SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMg
dXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAg
ICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0TFNoaWZ0KCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBh
IGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZS4KKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExT
aGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25C
aXRMU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTMzMzAsNyArMzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICAgICAgc2V0SW50MzIobV9vdXQubFNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFu
ZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8v
IEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGlu
Y2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoKQpAQCAtNzM1NSw2ICs3NTAwLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSAmIChTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KSkgewogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisjZW5kaWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbFBhdGggPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKQEAgLTczNjQsMTAgKzc1MTIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICAg
ICAgLy8gbm90TnVtYmVyIGNhc2UuCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlciwgY29udGludWF0aW9uKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlw
ZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qmln
SW50MzIpKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRp
ZgogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSksIHVuc3VyZShpc0NlbGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8g
V2UgaGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVy
aWMgc3RpbGwgZXhpc3RzLgpAQCAtODMyNCw3ICs4NDc2LDEwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAg
fHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQogICAgICAgICAgICAgfHwgbV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChBbnlCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVx
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTgzNjcsNyArODUyMiw5NCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAg
ICAgIC8vIE5vIG5lZWQgdG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBv
biBib3RoIHNpZGVzCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0
IHdpdGggaWYgKGxlZnQgPT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdo
dCBjaGVja3MgKHNlZSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAg
ICAvLyBUaGUgY29kZSB0aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBw
c2V1ZG8tY29kZToKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIo
bGVmdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNL
KGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmln
SW50OjplcXVhbHNUb0ludDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlm
IChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChK
U0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAg
ICAgQ0hFQ0soaXNIZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwo
SlNCaWdJbnQ6OmVxdWFscyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0lu
dDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNO
b3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNCaWdJbnQzMihsZWZ0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJl
KGxlZnRJc0JpZ0ludDMyKSwgdW5zdXJlKGxlZnRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBzZXQgdGhlIG9yZGVyIG9mIHRoZSBibG9ja3MgdG8gbWF4aW1pemUgZmFs
bHRocm91Z2gKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0JpZ0ludDMyKTsKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKGJvdGhBcmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElz
QmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMy
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiA9IG1f
b3V0LmFuY2hvcihtX291dC5lcXVhbChsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhvbmx5TGVm
dElzQmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0
aGVyQ2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVm
dCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1
bHRMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgcmlnaHQsIHVuYm94ZWRMZWZ0KSkpOworICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0
SXNOb3RCaWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldo
ZXRoZXJDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSwgdW5zdXJlKGxlZnRFcXVhbHNSaWdodCksIHVuc3VyZShs
ZWZ0SXNIZWFwQmlnSW50KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRFcXVh
bHNSaWdodCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0RXF1YWxzUmln
aHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNI
ZWFwQmlnSW50KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKHJpZ2h0SXNCaWdJbnQzMiksIHVu
c3VyZShyaWdodElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
cmlnaHRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJv
eEJpZ0ludDMyKHJpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0
SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90
QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVy
Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtC
aWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJp
ZyBpbnRzCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyODk1CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoSGVhcEJp
Z0ludCA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAgICAgICAgc2V0Qm9v
bGVhbihtX291dC5waGkoSW50MzIsIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiwgcmVzdWx0TGVmdElz
QmlnSW50MzIsIHJlc3VsdExlZnRFcXVhbHNSaWdodCwgcmVzdWx0UmlnaHRJc0JpZ0ludDMyLCBy
ZXN1bHRCb3RoSGVhcEJpZ0ludCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBr
aW5kKTsKQEAgLTg0NTAsMTEgKzg2OTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRd
IENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVz
ZQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtODU0MCw2ICs4NzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11
Y2ggc21hcnRlciBoZXJlLCBzZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUu
Zy4gU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50
eXBlZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSk7CiAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsm
XSAoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgewpAQCAtMTA1MDQsNyArMTA3NDcsMzEgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJl
c3VsdCwgcGF0Y2hwb2ludFJlc3VsdCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGls
ZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRo
IEJpZ0ludDMyLCB3ZSBzaG91bGQganVzdCBlbWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQp
CisgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXND
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2Vs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVu
c3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRp
b24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlz
Q2VsbFdpdGhUeXBlKHZhbHVlLCBtX25vZGUtPnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3Vs
YXRlZFR5cGVGb3JRdWVyeSgpLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50
MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICB9CiAgICAgdm9pZCBjb21waWxl
SXNDZWxsV2l0aFR5cGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpIHsKQEAgLTE0MjE0LDkgKzE0NDgxLDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBlbWl0QmluYXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhG
dW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAot
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBz
cGVjdWxhdGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAg
U25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQyODIsOCAr
MTQ1NTEsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBT
bmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
LnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDg5NSw3ICsx
NTE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVu
dHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8g
aWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3Ry
aW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMg
c3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJl
c3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAg
ICAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZp
bmVkCkBAIC0xNDkwNSw2ICsxNTE3Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAg
cmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2
YWx1ZSBpcyBudW1iZXIpIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91
YmxlKHZhbHVlKQorICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikg
eworICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAg
ICAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUg
PT0ganNUcnVlCiAgICAgICAgICAgICAvLyB9CkBAIC0xNDkxMiwxMyArMTUxODYsMTcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFw
QmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBu
b3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
bnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
SW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRv
dWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
RG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgYmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisj
ZW5kaWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4g
cmVzdWx0czsKQEAgLTE0OTMyLDIwICsxNTIxMCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsK
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1
ZSwgcHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAg
ICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2Up
KTsKKyAgICAgICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkg
JiAoU3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBC
aWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFr
UG9pbnRlcihqc0VtcHR5U3RyaW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJ
bnRDYXNlLCBub3RTdHJpbmdPckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oaGVhcEJpZ0ludENhc2UsIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAg
ICAgIExWYWx1ZSBub25aZXJvQmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0
aCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJ
bnQpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RD
ZWxsQ2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmln
SW50Q2FzZSwgbm90Q2VsbENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0
OwogICAgICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGls
bFZhbGlkKCkpCiAgICAgICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFu
VHJ1ZTsKQEAgLTE0OTg4LDggKzE1MjY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
dW5ib3hEb3VibGUodmFsdWUpLCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJv
dmVuVHlwZShlZGdlKSAmIH5TcGVjQ2VsbCksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0lu
dDMyQ2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYmlnSW50MzJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZh
bHVlIGJpZ0ludDMyTm90WmVybyA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3IoYmlnSW50MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dEJpZ0ludDMyQ2FzZSwgY29udGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhub3REb3VibGVDYXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAg
ICBMVmFsdWUgbWlzY0lzVHJ1dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsK
QEAgLTE1NTk0LDEzICsxNTg4NiwxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0K
ICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAg
ICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsK
KyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAg
ICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIHN5bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVs
c2UgaWYgKGlzIG51bWJlcikgewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAg
ICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmln
aW50CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0
dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NjI4
LDYgKzE1OTIyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RC
aWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Js
b2NrIG5vdE51bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
Ym9vbGVhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRl
ZmluZWRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1NjgwLDcgKzE1OTc3LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNl
KTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHBy
b3ZlblR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwK
KyAgICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3Bl
Y0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJp
Z0ludENhc2UpLCB1bnN1cmUoc3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGJpZ0ludENhc2UsIHN5bWJvbENhc2UpOwpAQCAtMTU2OTYsOCArMTU5OTMsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJl
ckNhc2UpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNl
LCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1
ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVu
c3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJ
bnQzMkNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxs
OwogICAgICAgICBpZiAocHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAg
ICBpc051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpW
YWx1ZU51bGwpKTsKQEAgLTE2Mzg4LDE1ICsxNjY5MiwzMyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBP
cGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24p
CisgICAgTFZhbHVlIGxvd0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwg
bW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSk7CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9k
ZSk7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
OworCisgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZShyZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50
MzIocmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAg
dGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVy
bzsKKyAgICB9CisjZW5kaWYKKwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY1
ODIsNyArMTY5MDQsNzIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5h
ZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAg
IAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1Zh
bHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAg
ICAgICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OkJpZ0ludDMyTWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpC
aWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNW
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAg
aWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFs
KAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1
ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0
LmxTaHIoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVl
IGJveEJpZ0ludDMyKExWYWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LmJpdE9yKAorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1
ZSwgQjM6OkludDY0KSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNO
b3RBbnlCaWdJbnQoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0
eXBlLCB+U3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAg
IC8vIGlmIChpc0JpZ0ludDMyKQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAv
LyBpZiAoIWlzQ2VsbCkKKyAgICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0
dXJuICFpc0hlYXBCaWdJbnQKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBl
KSwgdW5zdXJlKGlzQmlnSW50MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZy
b21CbG9jayByZXR1cm5GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oaXNOb3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFs
dWUsIHR5cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHJldHVyblRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0lu
dCA9IG1fb3V0LmFuY2hvcihpc05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVy
blRydWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJ
TlQzMikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJv
dmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAt
MTY4OTQsOCArMTcyODEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgog
ICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdl
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdl
KTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAg
ICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MDgxLDE4ICsxNzQ3
NiwzOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJv
bFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFs
dWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBp
c05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAg
IGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQp
KQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Nl
bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0
VG9GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291
dC5icmFuY2goaXNDZWxsKHZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUo
Y29udGludWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayByZXR1cm5Gb3JDZWxsID0gbV9vdXQuYW5jaG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5waGkoSW50MzIsIGRlZmF1bHRUb0ZhbHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1
ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAg
ICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3Bl
Y0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJu
IG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5i
aWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZh
bHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUg
aXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxU
b3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlw
ZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBp
c1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAg
ICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3
NTUwLDE2ICsxNzk2NSwzNSBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRn
ZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRn
ZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBl
ZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVW
YWx1ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7
CisgICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewot
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJ
bnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdl
LCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdl
IGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVk
Z2UgZWRnZSkKICAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVk
Z2UpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFs
dWUpLCBlZGdlLCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKHZhbHVlKSk7CiAgICAgfQogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3Vs
YXRlQmlnSW50MzIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQ
RV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90Qmln
SW50MzIodmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdl
IGVkZ2UpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVW
YWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7Cisg
ICAgfQorI2VuZGlmCisKICAgICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdl
LCBMVmFsdWUgY2VsbCkKICAgICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZShjZWxsKSwgZWRnZSwgU3BlY09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDIxNzE1
ZDNkZDIyLi45YmJhNzQzOWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JF
eGl0JiBleGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1f
dmFsdWVQcm9maWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9m
aWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7Cisg
ICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAg
ICAgfQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXpl
IGFuIG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggZDViOWFkMjJmOTUuLjdhZDA2NWRjYWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAg
ICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4
ID0gMDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+
aXNCaWdJbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9k
ZS5jZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVy
ZSB8fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGVi
YjQ0Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vw
ZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0Njlm
ZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0
aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJ
c29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlu
bGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRl
eCA4MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApA
QCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAv
LyBCaWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICBy
ZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwg
MTApOworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJp
bmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYmYyOTg0YTEyODkuLmRmMTAzMjQzNGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAg
IGNhc2UgQmlnSW50VHlwZToKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBs
eVBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKaW5kZXggZWI4MDgyZTliN2IuLjQ4ZWFhNDAzZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjg4LDcgKzY4OCw3IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93
aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsK
LSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAg
Ly8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAv
LyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAg
ICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQK
QEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1
ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICBy
ZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBu
dW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAv
LyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEh
dW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQg
PSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1
ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIo
KSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIo
KSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5
bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
IHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFs
dWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhp
cyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDog
Tm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBw
ZW5kKGp1bXAoKSk7CkBAIC03NTIsNiArNzU0LDE1IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJp
Z0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgbW92ZSh2YWx1
ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0
KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVz
dGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlz
Tm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBjb21wYXJlNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFs
dWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vs
c2UKQEAgLTc2Nyw3ICs3NzgsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5
SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8v
IEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8v
IGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3Ig
dmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVl
IGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgK
ICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFz
cXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC03NzcsNiArNzg4LDggQEAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWwKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8v
IH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5i
b3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgewor
ICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNl
IHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2
LDcgKzc5OSw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwg
PSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0
cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJp
Z0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNo
SWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyAr
ODMwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5j
aFB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0
ZWRJbW1QdHIoanNFbXB0eVN0cmluZyh2bSkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsK
IAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7
CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8s
IEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkp
KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCkBAIC04NDIsNiArODU1LDE1IEBAIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2
bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgfQogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90Qmln
SW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1
ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0
Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25a
ZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90Qmln
SW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1
YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0
cnVlKSkpKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggNjY4ZjBlNWFjMTUuLmRiNjQ4YWJiYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MjksNyArOTI5LDM3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1w
R1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKdW1w
IGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVy
c01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJl
ciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9kZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBi
cmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVt
YmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJldHVybiBiaWdJbnQzMjsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVt
cEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOwor
ICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQo
RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAg
IH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihKU1ZhbHVlUmVn
cyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgfQorICAg
IEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJl
ZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFn
KSk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIC8vIEZJWE1FOiByZW5h
bWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0
byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKICAg
ICB7CiAgICAgICAgIHJldHVybiBicmFuY2g4KApAQCAtOTUxLDEzICs5ODEsMTQgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQ
UiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAg
ICAgfQotICAgIAorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFy
IHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJy
YW5jaElmU3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQ
UiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAg
ICBKdW1wIGJyYW5jaElmU3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5
cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQ
UlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlw
ZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBi
cmFuY2hJZlR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90
QmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwg
QmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQorICAg
IEp1bXAgYnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJ
ZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwg
SlNGdW5jdGlvblR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBj
ZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUp
OyB9CiAgICAgCkBAIC0xMzM4LDYgKzEzNjksMTkgQEAgcHVibGljOgogICAgICAgICAKICAgICAg
ICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgdW5ib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAg
IHsKKyAgICAgICAgdXJzaGlmdDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdw
cik7CisgICAgfQorCisgICAgdm9pZCBib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAg
ICAgICAgbHNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAg
ICAgICAgb3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBncHIpOworICAg
IH0KICNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE3MTgsNyArMTc2Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIHN0cmluZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAg
ICAgIC8vICAgICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKQEAg
LTE3MjksNiArMTc3Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QK
ICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBib29sZWFuKSB7CiAgICAgICAgIC8vICAgICByZXR1
cm4gYm9vbGVhbgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAg
IC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgIC8vICAg
ICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgIC8vIH0KQEAgLTE3NjAsMTAgKzE4MDYsMTAgQEAg
cHVibGljOgogCiAgICAgICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogCi0gICAgICAgIEp1bXAg
bm90QmlnSW50ID0gYnJhbmNoSWZOb3RCaWdJbnQoY2VsbEdQUik7CisgICAgICAgIEp1bXAgbm90
SGVhcEJpZ0ludCA9IGJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxsR1BSKTsKICAgICAgICAgZnVu
Y3RvcihUeXBlb2ZUeXBlOjpCaWdJbnQsIGZhbHNlKTsKIAotICAgICAgICBub3RCaWdJbnQubGlu
ayh0aGlzKTsKKyAgICAgICAgbm90SGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgICAgICBmdW5j
dG9yKFR5cGVvZlR5cGU6OlN5bWJvbCwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgbm90Q2Vs
bC5saW5rKHRoaXMpOwpAQCAtMTc3OSw2ICsxODI1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgSnVt
cCBub3RCb29sZWFuID0gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MsIHRlbXBHUFIpOwogICAgICAg
ICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJvb2xlYW4sIGZhbHNlKTsKICAgICAgICAgbm90Qm9vbGVh
bi5saW5rKHRoaXMpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBKdW1wIG5vdEJpZ0lu
dDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOwor
ICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RC
aWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5
cGVvZlR5cGU6OlVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGM2ZTYxYjg5YmY5Li5kNWVhOTlmMzNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtMzcwLDYgKzM3MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsKQogICAgICAg
ICBERUZJTkVfT1Aob3BfaXNfYm9vbGVhbikKICAgICAgICAgREVGSU5FX09QKG9wX2lzX251bWJl
cikKKyAgICAgICAgREVGSU5FX09QKG9wX2lzX2JpZ19pbnQpCiAgICAgICAgIERFRklORV9PUChv
cF9pc19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9pc19jZWxsX3dpdGhfdHlwZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2plcV9udWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NjcxNjY2MWRmNGYuLjQxZjZiZjg0OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUy
Nyw2ICs1MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX3Vu
ZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9p
c19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jp
Z19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVj
dChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRo
X3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxs
KGNvbnN0IEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcAppbmRleCAzYTMyYzMyNjE4OS4uZjUwYzMwMzA2ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDc2LDYgKzQ3Niw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFy
aXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1
Y3Rpb24sIG5lZ2F0ZUlDKTsKKyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNh
bGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBh
IEJpZ0ludAogICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudElu
c3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5l
Z2F0ZSk7CiB9CiAKQEAgLTQ4NCw2ICs0ODUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVn
YXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVROZWdJQyogbmVnSUMgPSBiaXR3
aXNlX2Nhc3Q8SklUTmVnSUMqPihtX2luc3RydWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbikpOworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9z
ZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50
CiAgICAgZW1pdE1hdGhJQ1Nsb3c8T3BOZWdhdGU+KG5lZ0lDLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uQXJpdGhOZWdh
dGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGZkZTAwYmNjOGM5Li5iY2IzZWI4
Y2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJl
ciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yODMsNiArMjgzLDM0
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5t
X29wZXJhbmQ7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Cisg
ICAgSnVtcCBpc0NlbGwgPSBicmFuY2hJZkNlbGwocmVnVDApOworCisgICAgbW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrKSwgcmVnVDEpOworICAgIGFuZDY0KHJlZ1QxLCBy
ZWdUMCk7CisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkJpZ0ludDMyVGFnKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
IHsgcmVnVDAgfSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworCisgICAgaXNDZWxsLmxpbmso
dGhpcyk7CisgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZWdUMCk7Cisg
ICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKKworICAgIGRvbmUu
bGluayh0aGlzKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisjZWxzZQorICAg
IC8vIElmIHdlIG9ubHkgaGF2ZSBIZWFwQmlnSW50cywgdGhlbiB3ZSBlbWl0IGlzQ2VsbFdpdGhU
eXBlIGluc3RlYWQgb2YgaXNCaWdJbnQuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CkBAIC01NzAsMjgg
KzU5OCw1MSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaQogICAgIFZpcnR1YWxSZWdpc3RlciBz
cmMyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMx
LCByZWdUMCwgc3JjMiwgcmVnVDEpOwotICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFy
ZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCisKKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2Ug
ZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91
YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICByZXN1
bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZ290byBkb25l
OworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgZ290byBz
bG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8KKworICAgIC8v
IFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91
YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJl
IG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVy
CisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVu
IGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhp
Z2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAx
PDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcgb25seSBk
b3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAg
ICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93
ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDIpOworICAgIGFk
ZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCByZWdUNSk7
CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0KEFib3Zl
T3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBy
ZWdUMSwgcmVnVDUpOworICAgIEp1bXAgZG9uZSA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdU
NSk7CisKICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8v
IEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFu
ZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBj
b3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQz
Miwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncwor
I2Vsc2UKKyAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmlu
Z3MpLgogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMikpOwotICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMg
YSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBh
bmQgdGhlbiB0ZXN0Ci0gICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9
IGJyYW5jaElmSW50MzIocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJl
Z1QwKSk7Ci0gICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNo
SWZJbnQzMihyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsK
LSAgICByaWdodE9LLmxpbmsodGhpcyk7CiAKLSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKQotICAgICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QxLCByZWdU
MCwgcmVnVDApOwotICAgIGVsc2UKLSAgICAgICAgY29tcGFyZTY0KE5vdEVxdWFsLCByZWdUMSwg
cmVnVDAsIHJlZ1QwKTsKLSAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1Qw
IH0pOwotCi0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgIGRvbmUubGluayh0
aGlzKTsKKyAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkK
KyAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTY0KDEpLCByZWdUNSk7CisgICAgYm94Qm9vbGVhbihy
ZWdUNSwgSlNWYWx1ZVJlZ3MgeyByZWdUNSB9KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGRzdCwgcmVnVDUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjE0LDI0ICs2NjUsNDggQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3AKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJl
Z1QwLCBzcmMyLCByZWdUMSk7CiAKLSAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMg
KHRvIGNvdmVyIHN0cmluZ3MpLgorICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1p
bmcgJ3R5cGUnIHRvIGJlIFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmln
aHQgaXMgRG91YmxlKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmln
aHQpCisgICAgICAgZ290byB0YWtlbjsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlz
IENlbGwpCisgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICov
CisKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJp
Z2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhh
dCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFu
Y2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJ
bnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2
aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBh
bGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2
aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCBy
ZWdUMik7CisgICAgbW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1Qy
KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigx
KSwgcmVnVDUpOworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2g2NChBYm92ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9
IGJyYW5jaDY0KEVxdWFsLCByZWdUMCwgcmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVP
cFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdl
dCk7CisKICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8v
IEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFu
ZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBj
b3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQz
Miwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncwor
I2Vsc2UKKyAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmlu
Z3MpLgogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMikpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRv
dWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0
aGVuIHRlc3QKLSAgICAvLyBpZiBpdCdzIGEgZG91YmxlLgotICAgIEp1bXAgbGVmdE9LID0gYnJh
bmNoSWZJbnQzMihyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDAp
KTsKLSAgICBsZWZ0T0subGluayh0aGlzKTsKLSAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZklu
dDMyKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwotICAg
IHJpZ2h0T0subGluayh0aGlzKTsKLQotICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVx
VHlwZTo6U3RyaWN0RXEpCi0gICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCBy
ZWdUMCksIHRhcmdldCk7Ci0gICAgZWxzZQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVx
dWFsLCByZWdUMSwgcmVnVDApLCB0YXJnZXQpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0
cmljdEVxVHlwZTo6TlN0cmljdEVxKSB7CisgICAgICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQp
OworICAgICAgICBhcmVFcXVhbC5saW5rKHRoaXMpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC02ODYsNyArNzYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
c3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwo
cmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0Jp
Z0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IGIxMWY2NTVmY2I2Li41
NmViZmIwODcxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtMjg4LDYgKzI4OCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29s
KGRzdCwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgLy8gV2UgZW1pdCBpc19jZWxs
X3dpdGhfdHlwZSBpbnN0ZWFkLCBzaW5jZSBCaWdJbnQzMiBpcyBub3Qgc3VwcG9ydGVkIG9uIDMy
LWJpdCBwbGF0Zm9ybXMuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwog
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtODY2LDcgKzg3Miw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2Vs
bCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RC
aWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVn
VDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmso
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCAyMmI5YTFkMWU5Yy4uODAwODE0ODEwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTI5Niw2ICsxMjk2LDE5IEBAIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGdsb2JhbE9iamVjdCwg
c3JjMSwgc3JjMik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGhlYXBCaWdJbnQsIGludDMyX3Qgc21hbGxJbnQpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoaGVhcEJpZ0ludC0+
aXNIZWFwQmlnSW50KCkpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4oaGVh
cEJpZ0ludCktPmVxdWFsc1RvSW50MzIoc21hbGxJbnQpOworfQorI2VuZGlmCisKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoUHJvZmlsZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBj
b25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTI4MTUsNiArMjgyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
CiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIg
dG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2Fu
IGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcGVyYW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4Mjcs
OCArMjg0MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBwcmltVmFs
dWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFs
dWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgcHJpbVZhbHVlID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJp
bVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
QmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpKTsKIAogICAg
IGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4MzYsNiAr
Mjg1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQogCisvLyBGSVhNRTogaXQgd291
bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRo
ZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjg1MCwxMCArMjg3Mywy
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3Bl
cmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwg
YXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmln
SW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsK
KyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9CisgICAgICAg
IHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2Vu
ZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJ
bnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwotCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTI4NjQs
NiArMjg5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNh
bGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBh
IEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODg0LDkgKzI5MTgsMjAgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRp
dmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChw
cmltVmFsdWUpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmln
SW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJ
bnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAgICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBwcmltVmFs
dWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAg
IGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpOwog
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTI4OTgsNiArMjk0Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3Bl
cmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5k
LCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpA
QCAtMjkxNyw5ICsyOTYzLDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1Zh
bHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhpcyBmdW5jdGlvbiBwcm9maWxl
IHRoZSBhcmd1bWVudCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAgaWYgKHByaW1WYWx1ZS5pc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFz
SW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7
CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7Cisg
ICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVl
LmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IDYwMGZjYTI5ZGMyLi4yMDliM2MzZjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwq
IHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogaGVhcEJpZ0lu
dCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lOVEVSTkFMOwogI2Vsc2UKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
bGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNTI0
MzVhNjYxMjAuLjJhMmJiOTlmOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xMzYsNiArMTM2LDEyIEBACiAjZGVm
aW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAwCiAjZW5kaWYKIAorI2lmIFVTRShCSUdJTlQzMikK
KyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fQklHSU5UMzIgMAorI2VuZGlmCisKICNpZiBDUFUoQUREUkVTUzY0KQogI2RlZmluZSBPRkZM
SU5FX0FTTV9BRERSRVNTNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMDI5NTU0MjE4OS4uMWRkMGRl
ZjljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTE5Niw2ICsxOTYsMTEgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29u
c3QgVmFsdWVOdWxsICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6OlZhbHVlTnVsbAogICAgIGNv
bnN0IFRhZ051bWJlciAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpOdW1iZXJUYWcKICAgICBj
b25zdCBOb3RDZWxsTWFzayAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Tm90Q2VsbE1hc2sKKyAg
ICBpZiBCSUdJTlQzMgorICAgICAgICBjb25zdCBUYWdCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1Zh
bHVlOjpCaWdJbnQzMlRhZworICAgICAgICBjb25zdCBNYXNrQmlnSW50MzIgPSBjb25zdGV4cHIg
SlNWYWx1ZTo6QmlnSW50MzJNYXNrCisgICAgZW5kCisgICAgY29uc3QgTG93ZXN0T2ZIaWdoQml0
cyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzCiBlbHNlCiAgICAgY29uc3Qg
SW50MzJUYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6SW50MzJUYWcKICAgICBjb25zdCBCb29sZWFu
VGFnID0gY29uc3RleHByIEpTVmFsdWU6OkJvb2xlYW5UYWcKQEAgLTUyMSw2ICs1MjYsNyBAQCBj
b25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0ZXhwciBKU0Z1bmN0aW9uVHlwZQogY29uc3QgQXJy
YXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IGNv
bnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBjb25zdGV4
cHIgUHJveHlPYmplY3RUeXBlCitjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhwciBIZWFw
QmlnSW50VHlwZQogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBuZWVkIHRvIGJlIG51bWJlcmVk
IGluIGEgcGFydGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBtYW51YWxseSB3cml0dGVuCiAj
IHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
aW5kZXggMzQxNjgwYWJlZTguLjc0NjNhZmQxYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDQg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0NCwyNCArODQ0LDQ4IEBA
IGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsLCBPcElzVW5kZWZpbmVk
T3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0CiBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXFPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXFP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGNyZWF0ZUJvb2xlYW4pCiAgICAgbGxpbnRPcFdp
dGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX3JocywgdDApCiAgICAgICAgIGdldCht
X2xocywgdDIpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQog
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkKKworICAgICAgICAj
IEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCBy
aWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMg
cmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgICAgICAjIGlmIChyZXN1bHQpCisgICAgICAg
ICMgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlz
IENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgZG9uZToKKyAg
ICAgICAgIyByZXR1cm4gcmVzdWx0OworCisgICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1l
bnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJy
YW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3
ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sg
aXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0
IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAg
ICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRz
IG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUg
b3IgZXF1YWwgMTw8NTAuCiAgICAgICAgIG1vdmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIK
KyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAgICAgbW92ZSBMb3dlc3RPZkhpZ2hCaXRzLCB0NQor
ICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAgICBhZGRxIHQ1LCB0MworICAgICAgICBvcnEgdDIs
IHQzCisgICAgICAgIGxzaGlmdHEgMSwgdDUKKyAgICAgICAgYnFhZXEgdDMsIHQ1LCAuc2xvdwor
CisgICAgICAgIGNxZXEgdDAsIHQxLCB0NQorICAgICAgICBidHFueiB0NSwgdDUsIC5kb25lICNp
cyB0aGVyZSBhIGJldHRlciB3YXkgb2YgY2hlY2tpbmcgdDUgIT0gMCA/CisKKyAgICAgICAgbW92
ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9y
IEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0
cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0
cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAu
bGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoK
LSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEs
IG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRp
b24odDAsIHQxLCB0MCkKLSAgICAgICAgb3JxIFZhbHVlRmFsc2UsIHQwCi0gICAgICAgIHJldHVy
bih0MCkKKworICAgIC5kb25lOgorICAgICAgICBjcmVhdGVCb29sZWFuKHQ1KQorICAgICAgICBy
ZXR1cm4odDUpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
JW9wY29kZU5hbWUlKQpAQCAtODcxLDMzICs4OTUsNTMgQEAgZW5kCiAKIAogc3RyaWN0RXFPcChz
dHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3Fl
cSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKKyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1
ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAogCiBzdHJpY3RFcU9wKG5zdHJpY3RlcSwgT3BOc3RyaWN0
ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0LCBy
ZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVlVHJ1ZSwgb3BlcmFuZCBl
bmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwganVtcElmRXF1YWwsIGp1bXBJZk5vdEVxdWFsKQogICAgIGxs
aW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUs
IGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGdl
dChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQw
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQzLCB0MSkKKworICAgICAg
ICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8
fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAg
ICMgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICMgICAgIGdvdG8ganVtcFRhcmdldDsKKyAg
ICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAg
IGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgZ290byBvdGhlckp1bXBUYXJnZXQKKworICAgICAg
ICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMg
RG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxk
IGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVt
YmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMy
LCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcg
YWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFs
bCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExl
YXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgogICAgICAgICBtb3ZlIHQw
LCB0MgotICAgICAgICBvcnEgdDEsIHQyCisgICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1v
dmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRk
cSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAg
ICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAgICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisK
KyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29y
JyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBD
ZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQy
CiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwg
bnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0g
ICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAg
ICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1
YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVtcFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQog
Ci0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkKKyAgICAgICAg
anVtcElmTm90RXF1YWwoanVtcCwgbV90YXJnZXRMYWJlbCwgZGlzcGF0Y2gpCisKKyAgICAuZXF1
YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQog
CiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNv
ZGVOYW1lJSkKQEAgLTkwNywzMyArOTUxLDM2IEBAIGVuZAogCiAKIHN0cmljdEVxdWFsaXR5SnVt
cE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCi0KKyAgICBtYWNybyAoanVtcCwgdGFy
Z2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRhcmdldExhYmVsKSBlbmQsCisgICAgbWFjcm8gKGp1
bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQpCiAKIHN0cmljdEVxdWFs
aXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCisgICAgbWFjcm8gKGp1
bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQsCisgICAgbWFjcm8gKGp1
bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJlbCkgZW5kKQogCiBtYWNy
byBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVw
ZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRz
W3QxXQorICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9h
cml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQK
IAotICAgICAgICBnZXQobV9zcmNEc3QsIHQwKQotICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0s
IHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwg
c3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0MywgbnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBp
bnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykKLSAgICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAg
ICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwgOF0KLSAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxl
KEFyaXRoUHJvZmlsZUludCkKLSAgICAgICAgZGlzcGF0Y2goKQorICAgIGdldChtX3NyY0RzdCwg
dDApCisgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgIG1ldGFkYXRhKHQyLCB0MykKKyAg
ICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRhdGEgaW4gdDIKKyAgICAjIEZJWE1FOiB0aGUgbmV4dCBs
aW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGggZm9yIEJpZ0ludDMyLiBXZSBjb3VsZCBpbnN0ZWFk
IGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBoZXJlIGZvciB0aGVtLgorICAgIGJxYiB0MSwgbnVt
YmVyVGFnLCAuc2xvdworICAgIGludGVnZXJPcGVyYXRpb24odDEsIC5zbG93KQorICAgIG9ycSBu
dW1iZXJUYWcsIHQxCisgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICB1cGRhdGVBcml0
aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQorICAgIGRpc3BhdGNoKCkKIAogICAgIC5zbG93Ogog
ICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRp
c3BhdGNoKCkKICAgICBlbmQpCisKIGVuZAogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfdG9fbnVt
YmVyLCBPcFRvTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQpAQCAt
MTI3OSw2ICsxMzI2LDE5IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX251bWJlciwgT3BJc051
bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICByZXR1cm4odDEp
CiBlbmQpCiAKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1h
Y3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICBnZXQobV9vcGVyYW5kLCB0MSkK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICBidHFueiB0MCwg
bm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQorICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBI
ZWFwQmlnSW50VHlwZSwgdDEKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDEKKyAgICByZXR1cm4odDEp
Cisubm90Q2VsbENhc2U6CisgICAgYW5kcSBNYXNrQmlnSW50MzIsIHQwCisgICAgY3FlcSB0MCwg
VGFnQmlnSW50MzIsIHQwCisgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgcmV0dXJuKHQwKQor
ZW5kKQogCiBsbGludE9wV2l0aFJldHVybihvcF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxX
aXRoVHlwZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXR1KHNp
emUsIE9wSXNDZWxsV2l0aFR5cGUsIG1fdHlwZSwgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IDg0ZmUzOTljZDhjLi40Yjk0NDUwNWUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKQEAgLTgz
LDYgKzgzLDEwIEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0lu
dERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgaWYgKHJhZGl4ID09IDEw
KQogICAgICAgICByZXR1cm4gaWRlbnRpZmllcjsKIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUlu
dChudWxscHRyLCB2bSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJv
clBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNp
Z25lZCk7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKwogICAgIC8vIEZJWE1FOiBX
ZSBhcmUgYWxsb2NhdGluZyBhIEpTQmlnSW50IGp1c3QgdG8gYmUgYWJsZSB0byB1c2UKICAgICAv
LyBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nIHdoZW4gcmFkaXggaXMgbm90IDEwLgogICAgIC8vIFRo
aXMgY3JlYXRlcyBzb21lIEdDIHByZXNzdXJlLCBidXQgc2luY2UgdGhlc2UgaWRlbnRpZmllcnMK
QEAgLTkwLDExICs5NCwxNSBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1h
a2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIC8vIGl0IHdv
bnQgYmUgbXVjaCBwcm9ibGVtYXRpYywgZ2l2ZW4gc3VjaCBjYXNlcyBhcmUgdmVyeSByYXJlLgog
ICAgIC8vIFRoZXJlIGlzIGEgbG90IG9mIG9wdGltaXphdGlvbnMgd2UgY2FuIGFwcGx5IGhlcmUg
d2hlbiBuZWNlc3NhcnkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzYyNwotCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwotICAgIEpTQmlnSW50KiBiaWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0s
IGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRo
cm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYmlnSW50LCAx
MCkpKTsKKyAgICBKU0JpZ0ludCogaGVhcEJpZ0ludDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisgICAgICAgIGhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICBlbHNlCisjZW5k
aWYKKyAgICAgICAgaGVhcEJpZ0ludCA9IGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKworICAgIG1f
aWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0
cnlHZXRTdHJpbmcodm0sIGhlYXBCaWdJbnQsIDEwKSkpOwogICAgIHJldHVybiBtX2lkZW50aWZp
ZXJzLmxhc3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDdhNjQyYzAyNmZkLi4xZTRkOWZiMGUyMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNDIs
NyArNDIsNiBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAppbmRleCAyZmYzZjc5NzIw
Yi4uNWYwZDU0ODQ4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC03NSwxOCArNzUsNiBAQCB2b2lkIEJpZ0ludENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90
eXBlKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgYm9vbCBpc1NhZmVJbnRlZ2VyKEpTVmFs
dWUgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFyZ3VtZW50LmlzSW50MzIoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBpZiAoIWFyZ3VtZW50LmlzRG91YmxlKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGRvdWJsZSBudW1iZXIgPSBhcmd1bWVudC5hc0RvdWJsZSgpOwotICAg
IHJldHVybiB0cnVuYyhudW1iZXIpID09IG51bWJlciAmJiBzdGQ6OmFicyhudW1iZXIpIDw9IG1h
eFNhZmVJbnRlZ2VyKCk7Ci19Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogewogICAgIEFTU0VS
VChhcmd1bWVudC5pc1ByaW1pdGl2ZSgpKTsKQEAgLTk0LDIwICs4MiwyNCBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBhcmd1bWVudCkKICAgICAKICAgICBpZiAoYXJndW1lbnQuaXNCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudCk7Ci0gICAgCisKKyAgICBpZiAoYXJndW1l
bnQuaXNCb29sZWFuKCkpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBhcmd1bWVudC5hc0Jvb2xl
YW4oKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIGlmIChhcmd1bWVudC5pc1N0cmluZygpKSB7CisgICAgICAgIHJldHVybiB0b1N0cmluZ1Zp
ZXcoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9i
amVjdCwgdmlldykpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBBU1NFUlQoYXJndW1lbnQu
aXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1bWVudC5pc051bWJlcigpIHx8IGFyZ3VtZW50Lmlz
U3ltYm9sKCkpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICAKLSAgICBpZiAoYXJndW1lbnQuaXNCb29sZWFuKCkpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1
bWVudC5hc0Jvb2xlYW4oKSkpKTsKLSAgICAKLSAgICBpZiAoYXJndW1lbnQuaXNVbmRlZmluZWRP
ck51bGwoKSB8fCBhcmd1bWVudC5pc051bWJlcigpIHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZh
bGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9zKTsKLSAgICAKLSAgICBB
U1NFUlQoYXJndW1lbnQuaXNTdHJpbmcoKSk7Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCwgWyZdIChTdHJpbmdW
aWV3IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFy
c2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7Ci0gICAgfSkpOworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4g
VG9CaWdJbnQgb3BlcmF0aW9uIl9zKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMTE5LDIwICsxMTEsMjIgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVlIHByaW1pdGl2ZSA9IHZhbHVlLnRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbWl0aXZlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgaWYg
KCFpc1NhZmVJbnRlZ2VyKHByaW1pdGl2ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Tm90IHNhZmUgaW50ZWdlciJfcykpOwotICAgICAgICAKLSAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICBpZiAocHJpbWl0aXZlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc0ludDMy
KCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlzSW50MzIoKSkgeworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc0ludDMyKCkpKTsK
KyNlbmRpZgorICAgIH0KIAotICAgICAgICBpZiAocHJpbWl0aXZlLmlzVUludDMyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBw
cmltaXRpdmUuYXNVSW50MzIoKSkpOworICAgIGlmIChwcmltaXRpdmUuaXNEb3VibGUoKSkgewor
ICAgICAgICBkb3VibGUgbnVtYmVyID0gcHJpbWl0aXZlLmFzRG91YmxlKCk7CisgICAgICAgIGlm
ICh0cnVuYyhudW1iZXIpICE9IG51bWJlciB8fCBzdGQ6OmFicyhudW1iZXIpID4gbWF4U2FmZUlu
dGVnZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgYSBzYWZlIGludGVnZXIi
X3MpKTsKIAotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzJP
ckhlYXAsIHZtLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihwcmltaXRpdmUuYXNEb3VibGUoKSkpKTsK
ICAgICB9Ci0gICAgCisKICAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSB0b0JpZ0ludChnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCmluZGV4IGVlMDA0NWRhYzk2Li5lNjE5ODJi
OTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3Qu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDcgKzM3LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEJpZ0ludE9iamVjdCk7CiBjb25zdCBDbGFzc0luZm8gQmlnSW50T2JqZWN0OjpzX2luZm8gPSB7
ICJCaWdJbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEJpZ0ludE9iamVjdCkgfTsKIAogCi1CaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGJp
Z0ludCkKK0JpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCaWdJbnRPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJpZ0ludE9iamVjdD4odm0u
aGVhcCkpIEJpZ0ludE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5iaWdJbnRPYmplY3RTdHJ1Y3R1
cmUoKSk7CiAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgYmlnSW50KTsKQEAgLTQ5LDcg
KzQ5LDcgQEAgQmlnSW50T2JqZWN0OjpCaWdJbnRPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNCaWdJbnQqIGJpZ0ludCkKK3ZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAppbmRleCA0NGZjNzZmYmRmOS4uYTYzNTRhMTZlZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xp
bWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcg
KzI2LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1
ZGUgIkpTV3JhcHBlck9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQxLDExICs0MCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2bS5iaWdJbnRPYmplY3RTcGFjZTxtb2RlPigp
OwogICAgIH0KIAotICAgIHN0YXRpYyBCaWdJbnRPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNCaWdJbnQqKTsKKyAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
IAotICAgIEpTQmlnSW50KiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNCaWdJbnQo
SlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpOyB9CisgICAgSlNWYWx1ZSBpbnRlcm5h
bFZhbHVlKCkgY29uc3QgeyByZXR1cm4gSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCk7
IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTU3
LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0
IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0JpZ0ludCopOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1ZhbHVlKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBCaWdJbnRPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCmluZGV4
IGRiNGE2MTg4OTlkLi5mYjViOWZhYjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzksMTIgKzc5LDI0IEBAIHZvaWQg
QmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikK
IAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2
bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1F
OiBoZWFwLWFsbG9jYXRpbmcgYWxsIGJpZyBpbnRzIGlzIGlubmVmaWNpZW50LCBidXQgcmUtaW1w
bGVtZW50aW5nIHRvU3RyaW5nIGZvciBzbWFsbCBCaWdJbnRzIGlzIGVub3VnaCB3b3JrIHRoYXQg
SSdtIGRlZmVycmluZyBpdCB0byBhIGxhdGVyIHBhdGNoLgorICAgIGlmICh0aGlzVmFsdWUuaXNC
aWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHRoaXNW
YWx1ZS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKwogICAgIGlmICh0aGlzVmFsdWUuaXND
ZWxsKCkpIHsKICAgICAgICAgaWYgKEpTQmlnSW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpT
QmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmln
SW50OwotICAgICAgICAKLSAgICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAg
ICAgICAgICAgIHJldHVybiBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAg
ICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJbnRPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9i
amVjdCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJp
Z0ludCA9IGJpZ0ludE9iamVjdC0+aW50ZXJuYWxWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsK
KyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTksOCArMTExLDYgQEAgc3Rh
dGljIEpTVmFsdWUgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmEKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEg
QmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CiAKLSAgICBBU1NFUlQodmFsdWUpOwotCiAgICAg
aW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzY29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIApAQCAtMTE4LDYgKzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0lt
cGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKIH0KIAorLy8gRklYTUU6IHRoaXMgZnVuY3Rp
b24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNhbmRzIGFu
ZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiaWdJbnRQcm90
b0Z1bmNUb1N0cmluZ0ltcGwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhm
YjRiNDIyLi4yNGU4ODM3ZDM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjksNyArNjksNiBAQAogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC00NzAsMTMgKzQ2OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9pbmMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5j
PigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNW
YWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBh
cmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
SW5jKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjppbmMoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0g
ICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkg
KyAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0
LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTQ4NSwxMyArNDc5LDggQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BEZWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0
KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFu
dCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNEZWMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmRlYyhn
bG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVs
c2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJp
YW50KSAtIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9z
cmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNTA4LDcgKzQ5NywxNSBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBt
ZXRhZGF0YSwgSlNWYQogICAgIFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEu
bV9hcml0aFByb2ZpbGU7CiAgICAgcHJvZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFT
U0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8fCByZXN1bHQuaXNCaWdJbnQoKSk7Ci0gICAgaWYgKHJl
c3VsdC5pc051bWJlcigpKSB7CisKKyAgICBpZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAg
ICAgICBwcm9maWxlLnNldE9ic2VydmVkSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBlbHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkQmlnSW50MzIoKTsKKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBBU1NFUlQocmVz
dWx0LmlzTnVtYmVyKCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKICAgICAg
ICAgICAgIGlmIChvcGVyYW5kLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBwcm9maWxlLnNl
dE9ic2VydmVkSW50MzJPdmVyZmxvdygpOwpAQCAtNTI4LDEwICs1MjUsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBt
ZXRhZGF0YSwgSlNWYQogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50
NTJPdmVyZmxvdygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChy
ZXN1bHQuaXNCaWdJbnQoKSkKLSAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludCgpOwot
ICAgIGVsc2UKLSAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKKyAgICB9
CiB9CiAjZWxzZQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9w
KE9wTmVnYXRlOjpNZXRhZGF0YSYsIEpTVmFsdWUsIEpTVmFsdWUpIHsgfQpAQCAtNTQ2LDggKzU0
MCwyMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogICAgIEpTVmFsdWUgcHJp
bVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7
CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
IHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBh
c0JpZ0ludChwcmltVmFsdWUpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1
ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJ
bnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOwor
ICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgeworICAgICAgICAgICAg
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBv
cGVyYW5kKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBy
aW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlm
CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0lu
dCgpKTsKICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICAg
ICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQsIG9w
ZXJhbmQpOwogICAgICAgICB9KTsKQEAgLTU4NSw4ICs1OTIsMTIgQEAgc3RhdGljIHZvaWQgdXBk
YXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayogY29kZUIKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3Zl
cmZsb3coKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0
LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKKyAgICB9
IGVsc2UgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNl
cnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0
LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7Cisj
ZW5kaWYKICAgICBlbHNlIAogICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygp
OwogfQpAQCAtNjA4LDEzICs2MTksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVt
ZXJpYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUb051bWVy
aWM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCku
anNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQg
PSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IFdURjo6Z2V0PEpTQmln
SW50Kj4ocmVzdWx0VmFyaWFudCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJl
cihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpKTsKICAgICBSRVRVUk5fUFJPRklMRUQo
cmVzdWx0KTsKIH0KIApAQCAtNjUwLDcgKzY1Niw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9hZGQpCiB9CiAKIC8vIFRoZSBmb2xsb3dpbmcgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVy
YXRpb25zIG5lZWQgdG8gYmUgc3VyZSB0byBydW4KLS8vIHRvTnVtYmVyKCkgb24gdGhlaXIgb3Bl
cmFuZHMgaW4gb3JkZXIuICAoQSBjYWxsIHRvIHRvTnVtYmVyKCkgaXMgaWRlbXBvdGVudAorLy8g
dG9OdW1lcmljL3RvQmlnSW50T3JJbnQzMigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAg
KEEgY2FsbCB0byB0aGVzZSBpcyBpZGVtcG90ZW50CiAvLyBpZiBhbiBleGNlcHRpb24gaXMgYWxy
ZWFkeSBzZXQgb24gdGhlIENhbGxGcmFtZS4pCiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9t
dWwpCkBAIC02NzIsMjQgKzY3OCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpCiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFN1Yj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBH
RVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdWIoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0
byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnN1
YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAg
ICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
SW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiIpKTsK
LSAgICB9Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4o
bGVmdE51bWVyaWMpIC0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsKICAgICBSRVRV
Uk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
ckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQs
IHJpZ2h0KTsKICAgICB9KTsKQEAgLTcwMSwyNiArNjkxLDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RpdikKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGl2PigpOwogICAgIEpT
VmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0
TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0RpdihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAg
ICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhy
ZXN1bHQsIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
ZGl2aXNpb24uIikpOwotICAgIH0KLQotICAgIGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihs
ZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
Yyk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihhIC8gYik7CiAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdo
dCk7CiAgICAgfSk7CkBAIC03MzIsMjQgKzcwNCw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9tb2QpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcE1vZD4oKTsKICAgICBKU1ZhbHVl
IGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmln
aHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVy
aWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOKHJlc3VsdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVy
YXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4o
bGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVy
aWMpOwotICAgIFJFVFVSTihqc051bWJlcihqc01vZChhLCBiKSkpOworICAgIFJFVFVSTihyZXN1
bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG93KQpAQCAtNzU4LDI1ICs3MTUs
OSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG93KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BQb3c+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMp
LmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJp
Z2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNQb3co
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAg
ICAgICAgUkVUVVJOKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRv
dWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBX
VEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0KLSAgICBSRVRVUk4oanNOdW1iZXIob3Bl
cmF0aW9uTWF0aFBvdyhhLCBiKSkpOworICAgIFJFVFVSTihyZXN1bHQpOwogfQogCiBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQpAQCAtNzg1LDIyICs3MjYsMTAgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTHNo
aWZ0PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVl
KCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdo
dC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsK
IAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRI
Uk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAg
IFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykg
PDwgKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQpAQCAtODA5LDIyICs3MzgsMTAgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUnNo
aWZ0PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVl
KCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdo
dC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsK
LQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KIAotICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9z
KSk7Ci0gICAgfQotCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMy
X3Q+KGxlZnROdW1lcmljKSA+PiAoV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSAmIDMx
KSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3Vs
dCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KQpAQCAtODUwLDc5ICs3
NjcsNDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG5vdCkKIHsKICAgICBCRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRub3Q+KCk7Ci0gICAgYXV0byBvcGVy
YW5kTnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpLnRvQmlnSW50
T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpIHsKLSAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVj
dCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpOwotICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKLSAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgfQorICAg
IGF1dG8gb3BlcmFuZCA9IEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOwogCi0g
ICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKH5XVEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVt
ZXJpYykpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9w
ZXJhbmQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0YW5kKQogewogICAgIEJFR0lO
KCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdGFuZD4oKTsKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMy
KGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJP
RklMRUQocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
Yml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIikpOwotICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRf
QyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdU
Rjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSAmIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVt
ZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQml0d2lzZUFuZChnbG9iYWxPYmplY3Qs
IGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklM
RUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQogewogICAg
IEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdG9yPigpOwotICAgIGF1
dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpLnRvQmlnSW50
T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8g
cmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKS50b0JpZ0ludE9y
SW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KKyAgICBhdXRvIGxlZnQgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpOwogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAn
b3InIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVy
KFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSB8IFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0
TnVtZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQml0d2lzZU9yKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9G
SUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogewog
ICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdHhvcj4oKTsKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBS
RVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24uIikpOwotICAgIH0KKyAgICBhdXRvIGxl
ZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOworICAgIGF1dG8gcmlnaHQgPSBH
RVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpz
TnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSBeIFdURjo6Z2V0PGludDMyX3Q+
KHJpZ2h0TnVtZXJpYykpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQml0d2lzZVhvcihnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVv
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCA5YzM0
NTQ0MmY1NC4uNDZhOWIxMDE1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENh
aW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBKU0JpZ0ludDo6aW5pdGlhbGl6ZShJ
bml0aWFsaXphdGlvblR5cGUgaW5pdFR5cGUpCiAKIFN0cnVjdHVyZSogSlNCaWdJbnQ6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhIZWFwQmlnSW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8oVk0mIHZtKQpAQCAtMTg4LDM0
ICsxODgsMjEgQEAgSlNWYWx1ZSBKU0JpZ0ludDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3Qq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpT
QmlnSW50Kj4odGhpcyk7CiB9CiAKLU9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVE
aWdpdFZhbHVlRm9yU3RyaW5nKCkKLXsKLSAgICBpZiAoaXNaZXJvKCkpCi0gICAgICAgIHJldHVy
biAwOwotICAgIAotICAgIGlmIChsZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKLSAgICAgICAg
RGlnaXQgckRpZ2l0ID0gZGlnaXQoMCk7Ci0gICAgICAgIGlmIChyRGlnaXQgPD0gOSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihyRGlnaXQpOwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9k
ZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAo
cy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFy
YWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VJbnQo
Z2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsK
IH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1v
ZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJz
ZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywg
dWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNp
Z24pCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9i
YWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJz
ZXJNb2RlLCBzaWduLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogICAgIHJl
dHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0
aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0Vt
cHR5U3RyaW5nKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50
OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3
IHMpCiB7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcywgRXJyb3JQYXJzZU1v
ZGU6Oklnbm9yZUV4Y2VwdGlvbnMpOwogfQpAQCAtNDU0LDE2ICs0NDEsMjMgQEAgSlNCaWdJbnQq
IEpTQmlnSW50OjpyZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJ
bnQqIHgsIEpTQmlnSW4KIAogSlNCaWdJbnQqIEpTQmlnSW50OjppbmMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgpCiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9i
YWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJpdCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4
LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAg
ICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlVu
c2lnbmVkKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2Jq
ZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJv
YmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwg
eCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICh4LT5pc1plcm8oKSkgewor
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCks
IDEpOworICAgICAgICByZXN1bHQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVT
dWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRl
QWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJ
bnQqIEpTQmlnSW50OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQq
IHgsIEpTQmlnSW50KiB5KQpAQCAtNTMyLDcgKzUyNiw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6
Yml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNC
aWdJCiAgICAgaWYgKHgtPnNpZ24oKSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAot
ICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAo
LXkpID09IHggJiB+KHktMSkKICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9i
YWxPYmplY3QsIHksIHktPmxlbmd0aCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKICAgICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2
NDQsNyArMTYzOCw3IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6
OnRvU3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNp
dCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiBy
ZXN1bHRTdHJpbmc7CiAKICAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBA
IC0xODAyLDcgKzE3OTYsNyBAQCBib29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgs
IEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMTgxMCw3ICsxODA0LDcgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSog
IGRhdGEsIHVuc2kKICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0
YVtwXSkpCiAgICAgICAgICsrcDsKIAotICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hh
cmFjdGVycworICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlm
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxl
bmd0aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwoZGF0YVtwICsgMV0sICdiJykpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQo
Z2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUs
IFBhcnNlSW50U2lnbjo6VW5zaWduZWQsIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmlu
Zyk7CkBAIC0xODI0LDI0ICsxODE4LDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAg
ICBQYXJzZUludFNpZ24gc2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAg
PCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGRhdGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytw
OwotICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtw
XSA9PSAnLScpIHsKICAgICAgICAgICAgIHNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAg
ICAgICAgICAgICsrcDsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0g
JysnKQorICAgICAgICAgICAgKytwOwogICAgIH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBw
YXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNl
TW9kZSwgc2lnbik7Ci0KLSAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAg
ICAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBk
YXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1v
ZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VN
b2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBz
dGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUs
IFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VS
VChsZW5ndGggPj0gMCk7CiAgICAgdW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcg
KzE4NDAsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpU
aHJvd0V4Y2VwdGlvbnMpCiAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0
cmluZyB0byBCaWdJbnQiKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAg
LTE4NjYsNDQgKzE4NTQsODQgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKIAogICAgIGxlbmd0
aCA9IGVuZEluZGV4ICsgMTsKIAotICAgIGlmIChwID09IGxlbmd0aCkKKyAgICBpZiAocCA9PSBs
ZW5ndGgpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIDApOworI2Vsc2UKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0p
OwotCi0gICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEw
KTsKLSAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWdu
ZWQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0gMTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9
IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0
aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMg
YWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0
aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7
Ci0gICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAnOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49
ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRhKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0g
J2EnICsgMTA7Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBs
aW1pdEEpCi0gICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlw
bHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0
KSk7CisjZW5kaWYKICAgICB9CiAKLSAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUlu
dFNpZ246OlNpZ25lZCA/IHRydWUgOiBmYWxzZSk7Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAg
ICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgIC8vIFRoZSBpZGVhIGlzIHRv
IHBpY2sgdGhlIGxhcmdlc3QgbnVtYmVyIHN1Y2ggdGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZv
ckJpZ0ludDMyIDw9IElOVDMyX01BWAorICAgIHVuc2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50
MzI7CisgICAgc3dpdGNoIChyYWRpeCkgeworICAgIGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGlt
aXRGb3JCaWdJbnQzMiA9IDMwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAg
IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAxMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAx
MDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMTY6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0g
MTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBu
dWxscHRyOwogCi0gICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VN
b2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3Qs
ICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICB1bnNpZ25lZCBsaW1p
dDAgPSAnMCcgKyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOworICAgIHVuc2lnbmVkIGxpbWl0
YSA9ICdhJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWdu
ZWQgbGltaXRBID0gJ0EnICsgKHN0YXRpY19jYXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAg
ICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gbGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxl
bmd0aCkgeworICAgICAgICBpbnQzMl90IGRpZ2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQz
Ml90LCBDcmFzaE9uT3ZlcmZsb3c+IG11bHRpcGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytp
LCArK3ApIHsKKyAgICAgICAgICAgIGRpZ2l0ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlw
bGllciAqPSByYWRpeDsKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3Bd
IDwgbGltaXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAg
ICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGRhdGFbcF0gPj0gJ0EnICYmIGRhdGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAg
ICAgZGlnaXQgKz0gZGF0YVtwXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4
Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJp
Z0ludCIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBt
dWx0aXBsaWVyLnVuc2FmZUdldCgpKTsKKworICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAg
ICAgICAgICAgIGlmIChwID09IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09
IFBhcnNlSW50U2lnbjo6U2lnbmVkKQorICAgICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgZGlnaXQpOworI2Vsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZGlnaXQpKTsKKyNlbmRpZgorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaGVhcFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVj
dCwgdm0sIHJhZGl4LCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxs
IGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxs
b2NhdGVGb3IgY2Fubm90IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAg
ICAgICBpZiAoIWhlYXBSZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgICAgIGhlYXBSZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpX
aXRoWmVybyk7CisgICAgICAgIH0KKyAgICAgICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5
QWRkKHN0YXRpY19jYXN0PERpZ2l0PihtdWx0aXBsaWVyLnVuc2FmZUdldCgpKSwgc3RhdGljX2Nh
c3Q8RGlnaXQ+KGRpZ2l0KSk7CisgICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVh
cFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1
cm4gaGVhcFJlc3VsdC0+cmlnaHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdp
dCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikKQEAgLTE5MjcsMTggKzE5NTUsMjAgQEAgYm9v
bCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NF
UlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIo
KSkgewotICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlm
ICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAg
cmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8
IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0
YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlz
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigp
KTsKICAgICAKICAgICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJl
dHVybiBjb21wYXJlVG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVx
dWFsOwogfQogCitib29sIEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJl
dHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAw
KSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0
aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewog
ICAgIC8vIFRoaXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElF
RUUgNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRl
NjA5OWY0Ny4uOTdmYzkxNjUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBM
aW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTkwLDEzICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUludE1v
ZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51bSBj
bGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMgSlNC
aWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90
IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMs
IFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBKU0Jp
Z0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9k
ZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0JpZ0lu
dCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWlu
dDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRp
b25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0aWMg
SlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VN
b2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpTVmFs
dWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAgIHN0
YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRpeCk7
CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7CiAg
ICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwogICAg
IAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzExMiw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMoSlNC
aWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwogICAgIHN0
YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsK
IAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBu
dW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIyMiwxMCBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0
aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJz
ZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBF
cnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAg
c3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFk
aXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwg
UGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVy
cm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJ
bnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRpYyBK
U0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJhZGl4
LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjU4LDkgQEAgcHJpdmF0ZToKICAg
ICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwogfTsK
IAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpTQmln
SW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUuYXND
ZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFwQmln
SW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXgg
NTQ4MDEwZWIxYzAuLjVjNWEzMmFjZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJC
b29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCkBAIC03MSw2ICs3MiwxNCBAQCBkb3VibGUgSlNW
YWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxs
KCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3Mp
OworICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUoKSkK
ICAgICAgICAgcmV0dXJuIDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAw
OyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTAsMTAg
QEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxP
YmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmpl
Y3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAq
dGhpcyk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9y
KGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMzEsMTQgQEAgSlNWYWx1ZSBKU1Zh
bHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3Qs
IGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFz
VmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAg
ICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6
OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAg
ICAgICAvLyBGSVhNRTogdGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGZpbmQgdG9UaGlz
IGZvciBKU0JpZ0ludCwgYnV0IEkgY2FuJ3QgZXZlbiBmaW5kIHdoZXJlIGl0IGlzIGRlZmluZWQu
CisgICAgICAgIHJldHVybiBoZWFwQmlnSW50LT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmpl
Y3QpKS0+dG9UaGlzKGhlYXBCaWdJbnQsIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAgIH0K
KyNlbmRpZgorCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHJldHVybiBn
bG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KQEAgLTEzMCw3ICsxNTEsNyBAQCBKU09iamVj
dCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogICAgIGlmIChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkK
ICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwotICAg
ICAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAgICAgICAgIEFT
U0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJv
dG90eXBlKCk7CkBAIC0xNDAsNiArMTYxLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVz
aXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xl
YW4oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKKyNlbmRpZgogCiAgICAgQVNTRVJUKGlz
VW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMjg2
LDYgKzMxMSw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJl
KAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkp
KTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09m
KFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlOiAi
LCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQpKTsKKyAg
ICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIkJp
Z0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAg
ICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNPYmpl
Y3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBSYXdQb2lu
dGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRlcmZseSAi
LCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAgLTMwNSw2
ICszMzIsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUo
CiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkp
CiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGlu
ZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBv
dXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM0Nyw2ICszNzgsMTAgQEAgdm9pZCBKU1ZhbHVl
OjpkdW1wRm9yQmFja3RyYWNlKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5w
cmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5w
cmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmln
SW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50
MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFM
SUQiKTsKIH0KQEAgLTM4NCwxOCArNDE5LDI1IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmlu
Z1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgcmV0dXJuRW1wCiAg
ICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MubnVsbFN0cmluZygpOwogICAgIGlmIChpc1Vu
ZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmlu
ZygpOwotICAgIGlmIChpc1N5bWJvbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7
Ci0gICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
IChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAg
ICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGlu
dGVnZXIgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5u
dW1lcmljU3RyaW5ncy5hZGQoaW50ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkg
ewotICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBp
ZiAoYXV0byBkaWdpdCA9IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRp
Z2l0ICsgJzAnKTsKLSAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisjZW5kaWYK
KyAgICBpZiAoaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFz
SGVhcEJpZ0ludCgpOworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJhdGhlciBoYXZlIHR3
byBjYXNlcyBoZXJlOiBvbmUtY2hhcmFjdGVyIHN0cmluZyB2cyBqc05vblRyaXZpYWxTdHJpbmcg
Zm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IEpT
U3RyaW5nOjpjcmVhdGUodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkucmVs
ZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIHJldHVyblN0cmluZzsKICAg
ICB9CisgICAgaWYgKGlzU3ltYm9sKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9zKTsK
KyAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxs
KCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCmluZGV4IDU4NmFmM2ZhYjM3Li5hOTExNDMwZTVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE3Niw2ICsxNzYsMTAgQEAgcHVibGljOgogICAgIGVudW0g
SlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9Owog
ICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworICAgIGVudW0gSlNCaWdJbnRUYWcg
eyBKU0JpZ0ludDMyT3JIZWFwIH07CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVudW0gSlNCaWdJ
bnQzMlRhZyB7IEpTQmlnSW50MzIgfTsKKyNlbmRpZgogICAgIGVudW0gRW5jb2RlQXNEb3VibGVU
YWcgeyBFbmNvZGVBc0RvdWJsZSB9OwogCiAgICAgSlNWYWx1ZSgpOwpAQCAtMTg1LDYgKzE4OSwx
MSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpTQ2Vs
bCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgorICAgIC8v
IFJldHVybnMgZWl0aGVyIGEgQmlnSW50MzIgb3IgYSBIZWFwQmlnSW50LgorICAgIEpTVmFsdWUo
SlNCaWdJbnRUYWcsIFZNJiwgaW50NjRfdCk7CiAKICAgICAvLyBOdW1iZXJzCiAgICAgSlNWYWx1
ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxOCw2ICsyMjcsOSBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25z
dDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5IGJlIGNhbGxlZCBv
biBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50MzJGb3JBcml0aG1l
dGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBvdGhlcndpc2UgbGlr
ZSBhc0ludDMyKCkuCiAKQEAgLTIzNyw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051
bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQmln
SW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlz
QmlnSW50MzIoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKQEAg
LTI0NSw3ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENs
YXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhl
cml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvT3JOdWxsKFZN
JikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCiAgICAg
Ym9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBXVEY6OlN0cmluZyYpIGNvbnN0OwogICAg
IFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBudWxsIHN0
cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2NCw5ICsyNzgsMTAgQEAgcHVibGljOgogICAgIC8v
IHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBp
ZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8gYmVlbiBzZXQgaW4gdGhlIENhbGxGcmFtZSBhbHJl
YWR5LgogICAgIGRvdWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIAot
ICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiB0b0JpZ0ludE9ySW50MzIo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9OdW1lcmljKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkgY29uc3Q7CiAKICAgICAv
LyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0IGNhbiBiZSBkb25lIHdpdGhvdXQgc2lkZSBlZmZl
Y3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7
CkBAIC0zMTUsOCArMzMwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nh
c2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMg
Ym9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGlj
IGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsRm9yQ2VsbHMoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKTsKICAgICBzdGF0aWMgVHJpU3Rh
dGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBp
c0NlbGwoKSBjb25zdDsKQEAgLTQxNCwxMSArNDI4LDIwIEBAIHB1YmxpYzoKICAgICAgKiBUaGVz
ZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgICAgICogLSBCaXQgMSAo
T3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50
ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRp
YXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBX
aXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZykgVW5kZWZpbmVkIGFuZCBOdWxs
IHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQgMyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcp
LCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCiAgICAgICogICBzYW1lIHZhbHVlLCBhbGxv
d2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQuCiAgICAgICoKICAg
ICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlz
IGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CiAgICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAn
bm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9m
IDApLgorICAgICAqCisgICAgICogV2hlbiBVU0UoQklHSU5UMzIpLCB3ZSBoYXZlIGEgc3BlY2lh
bCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFsbCAoMzItYml0IGF0IG1v
c3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAqIFRoaXMgcmVwcmVz
ZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5nczoKKyAgICAgKiAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRv
IHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2lu
dGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNldCB0byB0cnVlCisgICAg
ICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3Mg
dG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29u
ZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAg
ICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZpbmVkIGJlY2F1c2UgYml0
IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40OSwg
dXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgd2lsbCBi
ZWdpbgpAQCAtNDI4LDExICs0NTEsMTkgQEAgcHVibGljOgogICAgIC8vIElmIGFsbCBiaXRzIGlu
IHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNhdGVzIGFuIGludGVnZXIgbnVtYmVyLAogICAg
IC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0IHRoaXMgdmFsdWUgaXMgYSBkb3VibGUgcHJl
Y2lzaW9uIG51bWJlci4KICAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgTnVtYmVyVGFnID0g
MHhmZmZlMDAwMDAwMDAwMDAwbGw7CisgICAgLy8gVGhlIGZvbGxvd2luZyBjb25zdGFudCBpcyB1
c2VkIGZvciBhIHRyaWNrIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJpY3RFcSwgdG8gZGV0
ZWN0IGlmIGVpdGhlciBvZiB0aGUgYXJndW1lbnRzIGlzIGEgZG91YmxlCisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQ2NF90IExvd2VzdE9mSGlnaEJpdHMgPSAxVUxMIDw8IDQ5OworICAgIHN0YXRp
Y19hc3NlcnQoTG93ZXN0T2ZIaWdoQml0cyAmIE51bWJlclRhZyk7CisgICAgc3RhdGljX2Fzc2Vy
dCghKChMb3dlc3RPZkhpZ2hCaXRzPj4xKSAmIE51bWJlclRhZykpOwogCiAgICAgLy8gQWxsIG5v
bi1udW1lcmljIChib29sLCBudWxsLCB1bmRlZmluZWQpIGltbWVkaWF0ZXMgaGF2ZSBiaXQgMiBz
ZXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IE90aGVyVGFnICAgICAgID0gMHgyOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCb29sVGFnICAgICAgICA9IDB4NDsKICAgICBz
dGF0aWMgY29uc3RleHByIGludDMyX3QgVW5kZWZpbmVkVGFnICAgPSAweDg7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCaWdJbnQzMlRhZyAgICA9IDB4
MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IEJpZ0ludDMyTWFzayAgID0gTnVtYmVy
VGFnIHwgQmlnSW50MzJUYWc7CisjZW5kaWYKICAgICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVl
IGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJf
dCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IGZhbHNlOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUgICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uMGE3ODgwMzM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI0MCw2
ICsyMzksMTMgQEAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCiAg
ICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2Fz
dDxKU0NlbGwqPihwdHIpKTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRU
YWcsIFZNJiB2bSwgaW50NjRfdCB2YWwpCit7CisgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsK
KyAgICBhdXRvIHB0ciA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWwpOworICAgIHUuYXNC
aXRzLnBheWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PEpTQ2Vs
bCo+KHB0cikpOworfQorCiBpbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKHRhZygpICE9IERlbGV0ZWRWYWx1ZVRhZyk7CkBAIC0zMjksNiArMzM1LDEy
IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHUuYXNCaXRzLnBheWxvYWQpOwogfQogCitB
TFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAorewor
ICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNCaWdJbnQqPih1LmFzQml0cy5wYXlsb2FkKTsKK30KKwogQUxXQVlTX0lOTElORSBKU1ZhbHVl
OjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKIHsKICAgICBBU1NFUlQoIWlz
SW1wdXJlTmFOKGQpKTsKQEAgLTQ2NCw2ICs0NzYsMjAgQEAgaW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUoSlNGYWxzZVRhZykKICAgICB1LmFzSW50NjQgPSBWYWx1ZUZhbHNlOwogfQogCitpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludFRhZywgVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQorewor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJ
TlRfTUlOKSB7CisgICAgICAgIC8vIFRoZSAmIH5OdW1iZXJUYWcgcGFydCBpcyBmb3IgbmVnYXRp
dmUgbnVtYmVycywgb3RoZXJ3aXNlIHRoZXkgZ2V0IHNpZ24tZXh0ZW5kZWQuCisgICAgICAgIHUu
YXNJbnQ2NCA9ICgodmFsdWUgPDwgMTYpICYgfk51bWJlclRhZykgfCBCaWdJbnQzMlRhZzsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgSlNDZWxsKiBwdHIgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihwdHIpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5l
ZE9yTnVsbCgpIGNvbnN0CiB7CiAgICAgLy8gVW5kZWZpbmVkIGFuZCBudWxsIHNoYXJlIHRoZSBz
YW1lIHZhbHVlLCBiYXIgdGhlICd1bmRlZmluZWQnIGJpdCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgpA
QCAtNTIyLDggKzU0OCwyMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxs
KCkgY29uc3QKICAgICByZXR1cm4gdS5wdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQq
IEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0lu
dCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih1LnB0cik7Cit9CisKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoSlNCaWdJbnQzMlRhZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUg
JiB+TnVtYmVyVGFnIHBhcnQgaXMgZm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5
IGdldCBzaWduLWV4dGVuZGVkLgorICAgIHUuYXNJbnQ2NCA9ICgoc3RhdGljX2Nhc3Q8aW50NjRf
dD4odmFsdWUpIDw8IDE2KSAmIH5OdW1iZXJUYWcpIHwgQmlnSW50MzJUYWc7Cit9CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUgaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3Vi
bGUgbnVtYmVyKQogewogICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQpAQCAtNjEwLDkgKzY1MCwz
MSBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiAKIGlubGluZSBib29s
IEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXND
ZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuIGlzQmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJ
bnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNIZWFwQmlnSW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCitp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgcmV0dXJuICh1LmFzSW50NjQgJiBCaWdJbnQzMk1hc2spID09IEJpZ0ludDMyVGFn
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworI2lmIFVTRShCSUdJTlQz
MikKK2lubGluZSBpbnQzMl90IEpTVmFsdWU6OmJpZ0ludDMyQXNJbnQzMigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+
KHUuYXNJbnQ2NCA+PiAxNik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc1N5bWJvbCgpOwpAQCAtNjIwLDcgKzY4Miw3IEBAIGlubGluZSBib29sIEpT
VmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRp
dmUoKSBjb25zdAogewotICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5n
KCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAg
cmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNT
eW1ib2woKSB8fCBhc0NlbGwoKS0+aXNIZWFwQmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpT
VmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKQEAgLTc2MCw4ICs4MjIsMTcgQEAgaW5saW5l
IGJvb2wgSlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGRvdWJsZSYgbnUKICAgICAgICAgdmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIEFTU0VSVChpc1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQ
TmFOOworICAgIGlmIChpc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG51bWJlciA9IFBOYU47Cisg
ICAgICAgIHZhbHVlID0gKnRoaXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAn
bnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1
ZSA9ICp0aGlzOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4NDYsNDUgQEAgQUxX
QVlTX0lOTElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3Qp
OwogfQogCi1BTFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6
OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lO
TElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMy
KCk7Ci0gICAgaWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAg
IGlmIChpc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlm
IChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4g
KnRoaXM7CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0g
dGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkK
LSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmlt
VmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJs
ZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0K
IAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9C
aWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJu
IGFzSW50MzIoKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICBpZiAoaXNEb3VibGUoKSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkp
KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAg
IHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CiAKICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0
dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0lu
dCgpKQorICAgICAgICByZXR1cm4gcHJpbVZhbHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHBy
aW1WYWx1ZS50b0ludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2Jq
ZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dApAQCAtMTAzMiwzNyArMTEwNCwxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1
YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGRvIHsKLSAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIu
aXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVt
YmVyKCk7Ci0KLSAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wg
czIgPSB2Mi5pc1N0cmluZygpOwotICAgICAgICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0
LCBhc1N0cmluZyh2MikpKTsKLQotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewot
ICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFs
T2JqZWN0LCB2MlN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAg
IGlmICh2Mi5pc051bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigp
ID09IHYyLmFzTnVtYmVyKCk7CisgICAgICAgICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3
ZSBoYXZlIGEgbnVtYmVyIGl0IGlzIHYyIG1ha2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNp
bXBsZXIuCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChzMSAmJiB2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJp
bmcgPSBhc1N0cmluZyh2MSktPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9
IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlm
ICghbikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIHYxID0gSlNWYWx1ZShuKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
CisgICAgICAgIC8vIFRoaXMgZGVhbHMgd2l0aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMs
IGFuZCBpcyBhIHNob3J0Y3V0IGZvciBhIGZldyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBo
YXMgdG8gY29tZSBoZXJlIGFuZCBub3QgYmVmb3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRo
YXQgTmFOID09IE5hTgorICAgICAgICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAg
ICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpCkBAIC0xMDgwLDcgKzExMzIsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAgICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAg
ICAgICAgICBpZiAodjIuaXNPYmplY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0g
djI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5
IGRlYWx0IHdpdGggcHJldmlvdXNseQogICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICB2MSA9IHAxOwpAQCAtMTEwMiw1NiArMTE1NCw4NCBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJv
bCgpOwogICAgICAgICBpZiAoc3ltMSB8fCBzeW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAm
JiBzeW0yKQotICAgICAgICAgICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wo
djIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFk
eSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCisgICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMy
ID0gdjIuaXNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIp
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSkt
PmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3
YXAodjEsIHYyKTsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRo
ZSBuZXh0IGNhc2UsIHNvIGxvc2luZyB0aGUgaW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBu
dW1iZXIgaXMgZmluZQorICAgICAgICB9CiAgICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAg
ICAgICAgZG91YmxlIGQxID0gdjEudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBk
MiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAg
ICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5r
cyB0byB0aGUgc3dhcCBhYm92ZSkKKyAgICAgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9i
YWxPYmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICB2MiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9i
YWxPYmplY3QsIHYyU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAg
ICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBC
aWdJbnRzICh3aGljaCBpcyBvbmx5IG1pc3NpbmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2Us
IGhlbmNlIHRoZSBjaGVjayBhYm92ZSkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHYxLmlzTnVtYmVyKCkgfHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAg
ICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
IGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVy
biBkMSA9PSBkMjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5p
c0Jvb2xlYW4oKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFz
TnVtYmVyKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1Zh
bHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRo
cm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAg
Ly8gV2UganVzdCBuZWVkIG9uZSBtb3JlIHN3YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25s
eSB2MiBpcyBhbGxvd2VkIHRvIGJlIGEgbnVtYmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAg
ICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xl
YW4oKSkgewotICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4o
KSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAg
ICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYy
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2gg
dG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwot
ICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAg
ICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAg
ICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0
dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9OdW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgaWYgKHYxLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50
MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIu
YXNJbnQzMigpOworICAgICAgICAgICAgaWYgKHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYy
LmFzRG91YmxlKCk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkp
IHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50
KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMy
KHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFw
QmlnSW50KCktPmVxdWFsc1RvTnVtYmVyKHYyKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biB2MSA9PSB2MjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwog
fQogCiAvLyBFQ01BIDExLjkuMwotQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZv
ckNlbGxzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCog
djIpCiB7Ci0gICAgQVNTRVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlm
ICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAg
ICBpZiAodjEtPmlzU3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBh
c1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAo
djEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBC
aWdJbnQoKSAmJiB2Mi0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
ZXF1YWxzKHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+
KHYyKSk7CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCkBAIC0xMTYzLDEwICsxMjQzLDE3IEBA
IGlubGluZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNO
dW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsK
IAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4g
djEgPT0gdjI7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAm
JiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1
YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIo
KSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgp
LT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYg
KHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxG
b3JDZWxscyhnbG9iYWxPYmplY3QsIHYxLmFzQ2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICBy
ZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7Cisg
ICAgcmV0dXJuIHYxID09IHYyOwogfQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMy
Rm9yQXJpdGhtZXRpYygpIGNvbnN0CkBAIC0xMTg0LDE1ICsxMjcxLDIzIEBAIGlubGluZSBUcmlT
dGF0ZSBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAg
ICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJp
U3RhdGUodjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXND
ZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIp
OwotICAgIAotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+
aXNTdHJpbmcoKSkgewotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3Ry
aW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYy
U3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2
MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
LSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlz
QmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5l
cXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50
MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFz
SGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5k
aWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAo
djEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlH
ZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0g
YXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJp
bmcgfHwgIXYyU3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwor
ICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJp
bmcpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgp
ICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlT
dGF0ZShKU0JpZ0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQo
KSkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIw
Niw2ICsxMzAxLDEwIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGlzTm90WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBU
cnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlz
Q2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0lu
dDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAg
IHJldHVybiBpc1RydWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI0ZWQ2NTIzMzc5Li45
MGM1YTdmYzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBA
IC0xMDgsNyArMTA4LDcgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0g
ICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0Jp
Z0ludCgpKQorICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwg
Y2VsbC0+aXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRv
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAt
MTE4LDcgKzExOCw3IEBAIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8
IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5p
c1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsK
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb20odm0sIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTU4
LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IHByZWZlcnJlZFR5cGUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
cHJlZmVycmVkVHlwZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0lu
dCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBwcmVmZXJyZWRUeXBlKTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIEpTQ2VsbDo6Z2V0
UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVt
YmVyLCBKUwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlz
KS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAg
aWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wq
Pih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7
Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVt
YmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3Qs
IG51bWJlciwgdmFsdWUpOwogfQpAQCAtMTgwLDcgKzE4MCw3IEBAIGRvdWJsZSBKU0NlbGw6OnRv
TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmpl
Y3QpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgU3ltYm9sKj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmln
SW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVj
dFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlz
T2JqZWN0KCkpOwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBp
ZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
U3ltYm9sKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDEwNjc0OWRlM2NlLi43ZjkyNTA0ZmVmYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90
ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0
cmluZygpIGNvbnN0OwotICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVh
cEJpZ0ludCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlz
T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDJkYWY3YmMw
ZGRiLi5jMjgzODM2ODM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaApAQCAtMjA1LDkgKzIwNSw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNT
dHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5s
aW5lIGJvb2wgSlNDZWxsOjppc0JpZ0ludCgpIGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
SGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOwor
ICAgIHJldHVybiBtX3R5cGUgPT0gSGVhcEJpZ0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpT
Q2VsbDo6aXNTeW1ib2woKSBjb25zdApAQCAtMzQxLDcgKzM0MSw3IEBAIGlubGluZSBib29sIEpT
Q2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0
cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAo
aXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0lu
dCo+KHRoaXMpLT50b0Jvb2xlYW4oKTsKICAgICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9i
YWxPYmplY3QpKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAt
MzUwLDcgKzM1MCw3IEBAIGlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBj
b25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxz
ZVRyaVN0YXRlOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9v
bGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2wo
KSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCmluZGV4IDIyYzAxMjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAg
aW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkg
PCAwLjA7IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVy
biBhc0NlbGwoKS0+dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigp
OworI2VuZGlmCiAgICAgcmV0dXJuIGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVm
aW5lZCBhbGwgY29udmVydCB0byBmYWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAKaW5kZXggYTEzMzdjNmE0ZWYuLjBkYzViNzRjMDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FT
RShDZWxsVHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQot
ICAgIENBU0UoQmlnSW50VHlwZSkKKyAgICBDQVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0Uo
U3RydWN0dXJlUmFyZURhdGFUeXBlKQogICAgIENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSkK
ICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCmluZGV4IDBmODY4YTZhZTA3Li5kMTQ2NDMzZDQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTI2LDggKzI2LDggQEAgZW51bSBKU1R5cGUgOiB1
aW50OF90IHsKICAgICAvLyBUaGUgQ2VsbFR5cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBhbnkg
SlNUeXBlIHRoYXQgaXMgYSBKU0NlbGwuCiAgICAgQ2VsbFR5cGUsCiAgICAgU3RyaW5nVHlwZSwK
LSAgICBCaWdJbnRUeXBlLAotICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEJpZ0lu
dFR5cGUsCisgICAgSGVhcEJpZ0ludFR5cGUsCisgICAgTGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0
aXZlID0gSGVhcEJpZ0ludFR5cGUsCiAgICAgU3ltYm9sVHlwZSwKIAogICAgIFN0cnVjdHVyZVJh
cmVEYXRhVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApp
bmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgx
IDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3My
KHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4g
bV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCi0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNU
eXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1fZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAppbmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBAIC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJh
ZjA3Li41M2VkMTI0ZTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMzYsMTEgKzM2LDYgQEAgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1
cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wg
SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQotewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dD
YXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFs
dWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9u
IGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03MywyMSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFs
dWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxP
YmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhwMikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnRO
dW1lcmljID0gcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpz
TnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihy
aWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3Vi
bGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAg
fTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJf
dCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdo
dDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6
SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBs
ZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6YWRkLCBk
b3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAogSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKQEAgLTEyOCw3
ICsxMjUsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBK
U1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdU
eXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCisgICAgaWYg
KHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBIZWFw
QmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVj
dFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJiZTIzYzA3MjUuLjY5MzhlMjY2YTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNyArMjUsNiBAQAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTIzOSw2ICsyMzgsMzUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmUKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwogfQogCitBTFdBWVNfSU5MSU5F
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2MSwgSlNWYWx1ZSBwcmlt
VmFsdWUpCit7CisgICAgQVNTRVJUKHByaW1WYWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NF
UlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgpKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBp
ZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9
IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1
ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICAgICAgaWYg
KCFiaWdJbnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdDo6VW5kZWZpbmVkOworCisgICAgICAgIGlmIChiaWdJbnRWYWx1ZS5pc0hlYXBCaWdJbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZSh2MSwgYmlnSW50VmFsdWUu
YXNIZWFwQmlnSW50KCkpOworCisgICAgICAgIEFTU0VSVChiaWdJbnRWYWx1ZS5pc0JpZ0ludDMy
KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgLy8gRklYTUU6IHVzZSBzb21ldGhpbmcg
bGVzcyBoYWNreSwgZS5nLiBzb21lIGtpbmQgb2YgSlNCaWdJbnQ6OmNvbXBhcmVUb0ludDMyCisg
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBzdGF0aWNfY2FzdDxk
b3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CisK
KyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2
MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZVJl
c3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0LCBKU0JpZ0lu
dDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNvbk1vZGUpCiB7CiAgICAgaWYgKGNvbXBhcmlzb25N
b2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCkBAIC0yNTUsNTEgKzI4
Myw1MCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1
cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFz
QmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQo
KSkgewotICAgICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYyOwotICAgICAgICBpZiAocHJpbVZh
bHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpT
QmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSkt
PnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYmlnSW50VmFsdWUpLCBjb21wYXJp
c29uTW9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFy
ZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHByaW1WYWx1ZSkpLCBjb21wYXJpc29uTW9kZSk7CiAK
LSAgICAgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAg
ICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShh
c0JpZ0ludCh2MSksIG51bWJlclZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAg
ICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNz
VGhhbikKKyAgICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBBU1NFUlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6
OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmln
SW50MzJBc0ludDMyKCkgPD0gdjIuYmlnSW50MzJBc0ludDMyKCk7CiAgICAgfQotICAgIAotICAg
IEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7
Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0lu
dChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkp
OworI2VuZGlmCisKKyAgICBKU0JpZ0ludCogdjFIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICBK
U0JpZ0ludCogdjJIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTogaGF2ZSBzb21l
IGZhc3QtaXNoIHBhdGggZm9yIGEgY29tcGFyaXNvbiBiZXR3ZWVuIGEgc21hbGwgYW5kIGEgbGFy
Z2UgYmlnLWludAorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmln
SW50ID0gdjEuYXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYg
KHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYyLmlz
SGVhcEJpZ0ludCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAg
ICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjIuYmlnSW50MzJBc0lu
dDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAodjFIZWFwQmlnSW50ICYmIHYySGVhcEJpZ0ludCkK
KyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUodjFI
ZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQpLCBjb21wYXJpc29uTW9kZSk7CisKKyAgICBpZiAodjFI
ZWFwQmlnSW50KSB7CisgICAgICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJ
bnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjFIZWFwQmlnSW50LCB2Mik7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJ
bnRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4gYmln
SW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQo
djIpKSwgY29tcGFyaXNvbk1vZGUpOworICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3Vs
dChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJpc29uTW9kZSk7CiAgICAgfQotICAgIAotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1
bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQocHJpbVZhbHVlKSwgYXNCaWdJbnQodjIpKSwg
Y29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1
ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKIAorICAgIGF1dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090
aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjJIZWFwQmlnSW50LCB2MSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0
ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1
bHQgY29tcGFyaXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQo
djIpLCBudW1iZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpD
b21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0
ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVy
biBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVy
VGhhbiB8fCBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpF
cXVhbDsKKworCiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCB0b1ByaW1pdGl2ZU51bWVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2LCBKU1ZhbHVlJiBwLCBkb3VibGUm
IG4pCkBAIC0zNTcsNyArMzg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3Ry
aW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RT
dHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFs
T2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApA
QCAtNDA3LDcgKzQzNCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcx
IHwgd2FzTm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmlu
ZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmpl
Y3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsK
IApAQCAtNDUyLDcxICs0NzksMzQ4IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0
dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94
ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBl
bmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVu
YW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9w
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhl
YXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJs
ZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQog
ewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9
IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0g
djIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVt
ZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmlj
LmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMu
aXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7
CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhl
YXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJB
c0ludDMyKCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAg
ICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0lu
dCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmlj
LmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxl
ZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBl
bHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9Cisj
ZWxzZQorICAgICh2b2lkKSBiaWdJbnQzMk9wOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBC
aWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMu
YXNIZWFwQmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlmCisK
KyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKK30KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1l
cmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUg
cmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsK
KyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAt
PiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwg
UmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdodDsK
KyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0
OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnN1YiwgZG91YmxlT3AsIGJpZ0ludDMyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9z
KTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9
IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1
cm4gbGVmdCAqIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0Owor
ICAgICAgICByZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dl
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAg
ICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRo
bWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRpcGx5LCBk
b3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNE
aXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikK
K3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+
IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRv
IGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVl
IHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICghcmlnaHQpCisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0lu
dDMyLCBsZWZ0IC8gcmlnaHQpOworI2Vsc2UKKyAgICAgICAgKHZvaWQpIGxlZnQ7CisgICAgICAg
ICh2b2lkKSByaWdodDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVj
dCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10g
KGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBq
c01vZChsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50
MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhp
bmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9Owor
CisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNC
aWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRv
dWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3co
bGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3Qs
IGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRl
Z2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlr
ZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2
b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24u
Il9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051
bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIo
KSArIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0
X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJ
WE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWlu
ZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5U
X01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFs
dWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNf
Y2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9w
ZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBW
YXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgVmFyaWFu
dDxKU0JpZ0ludCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgLSAxKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5i
aWdJbnQzMkFzSW50MzIoKSkgLSAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBu
ZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVy
IGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdWYWx1ZSA8IElOVF9NSU4pCisgICAgICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFs
dWUpKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBC
aWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVjKGds
b2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51
bWVyaWMgPSB2LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051
bWJlcih+b3BlcmFuZE51bWVyaWMuYXNJbnQzMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkp
OworI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFs
T2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgc2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MiwgYm9vbCBpc0xlZnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1lcmlj
ID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmln
aHROdW1lcmljLmlzSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnRO
dW1lcmljLmFzSW50MzIoKTsKKyAgICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1l
cmljLmFzSW50MzIoKSAmIDMxOworICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChs
ZWZ0SW50MzIgPDwgcmlnaHRJbnQzMikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAg
ICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJ
bnQzMigpKSB7CisgICAgICAgIGludDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5i
aWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAg
ICAgICBpc0xlZnQgPSAhaXNMZWZ0OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodElu
dDMyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNh
dGlvbi4iX3MpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWlu
IGlzIGEgYml0IGhhY2t5LCBidXQgcmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZp
bmVkIGJlaGF2aW9yIHRvIGRvIGEgc2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3Jl
YXRlciBvciBlcXVhbCB0byB0aGUgYml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAg
ICAgIGlmICghaXNMZWZ0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgbGVmdEludDMyID4+IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAg
ICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFs
IHdpdGggdGhpcyBieSBhbGxvY2F0aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTog
aXQgbWlnaHQgYmUgcG9zc2libGUgdG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBk
byB0aGUgbGVmdCBzaGlmdCBhbmQgZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4K
KyAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIGxlZnRJbnQzMik7CisgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQo
Z2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xv
YmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2Vu
ZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5p
c0JpZ0ludCgpKSkgeworICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24u
IiA6ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0
IHNoaWZ0IG9wZXJhdGlvbi4iOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigp
ID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigp
KSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBC
aWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFw
QmlnSW50KCk7CisjZWxzZQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1l
cmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdo
dE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZW5kaWYKKworICAgIGlmIChpc0xlZnQpCisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwg
bGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworfQorCitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKK3sKKyAgICBib29sIGlzTGVmdCA9IHRydWU7CisgICAgcmV0dXJuIHNoaWZ0
KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOworfQogCi0gICAgZG91YmxlIGxlZnRWYWx1
ZSA9ICBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgcmlnaHRWYWx1
ZSA9ICBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgcmV0dXJuIGpzTnVtYmVy
KGxlZnRWYWx1ZSAqIHJpZ2h0VmFsdWUpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7
CisgICAgYm9vbCBpc0xlZnQgPSBmYWxzZTsKKyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0
LCB2MSwgdjIsIGlzTGVmdCk7CiB9CiAKLWlubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkK
K3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3Bl
cmF0aW9uPgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3Bl
cmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciog
ZXJyb3JNZXNzYWdlKQogewotICAgIHJldHVybiBBU1NFUlRfRU5BQkxFRCB8fCBPcHRpb25zOjpz
Y3JpYmJsZUZyZWVDZWxscygpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnRO
dW1lcmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5p
c0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihpbnQzMk9wKGxlZnROdW1lcmljLmFz
SW50MzIoKSwgcmlnaHROdW1lcmljLmFzSW50MzIoKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgaW50MzJP
cChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKSk7CisgICAgLy8gRklYTUU6IGFkZCBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIC8gSGVh
cEJpZ0ludCwgYW5kIGZvciBIZWFwQmlnSW50IC8gQmlnSW50MzIKKyAgICAvLyBJbiBtYW55IGNh
c2VzIHRoZXNlIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgdGhhbiBoZWFwLWFsbG9jYXRp
bmcgdGhlIHNtYWxsIGJpZy1pbnQgYW5kIGdvaW5nIHRocm91Z2ggdGhlIGdlbmVyaWMgcGF0aC4K
KyAgICAvLyBCdXQgaXQgaXMgcXVpdGUgdHJpY2t5LCBub3QgbGVhc3QgYmVjYXVzZSBIZWFwQmln
SW50IHVzZSBhIHNpZ24gYml0IHdoZXJlYXMgQmlnSW50MzIgdXNlIDItY29tcGxlbWVudCByZXBy
ZXNlbnRhdGlvbi4KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAm
JiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIo
KSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFw
QmlnSW50ID0gcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVh
cEJpZ0ludCgpOworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVt
ZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmln
aHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVh
cEJpZ0ludCkpOwogfQogCi0jZGVmaW5lIFNDUklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KDB4YmFkYmVlZjApCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlQW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAg
YXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJf
dCB7CisgICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1F
OiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhl
ICJhbmQiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBv
biB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwg
djEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworfQog
Ci1pbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNCaXR3aXNlT3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQp
KTsKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAt
PiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsKKyAgICB9OworCisgICAg
Ly8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVt
LCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGly
ZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxP
YmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VPciwgaW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7
CiB9CiAKLWlubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQorQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSBzaXpl
IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgewotICAgICAgICAvLyBVc2UgYSAxNi1i
eXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNr
LgotICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1
ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAgfQor
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBG
SVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRv
IHRoZSAieG9yIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0
bHkgb24gdGhlIEpTVmFsdWUsIGFuZCBqdXN0IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGggMHgx
MiBhdCB0aGUgZW5kIHRvIHJlc3RvcmUgdGhlIHRhZworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9wLCAi
SW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3Bl
cmF0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxX
aXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50
MzJfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmliYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YmRlZjFjY2RhZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAgICBy
ZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKK30K
KworI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYw
KQorCitpbmxpbmUgYm9vbCBpc1NjcmliYmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2Vf
Y2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmliYmxl
KHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQoreworICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8g
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsgaS0tOykgeworICAgICAgICAvLyBVc2UgYSAxNi1ieXRl
IGFsaWduZWQgdmFsdWUgdG8gZW5zdXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgor
ICAgICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6
ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQorfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKaW5kZXggM2RjMTdiNzMzNTkuLjQwMmRhYTcxNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0zMjEsNyArMzIxLDcgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBTdHJpbmdUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQ
cm90b3R5cGUoKTsKICAgICAKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9
PSBCaWdJbnRUeXBlKQorICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhl
YXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5
cGUoKTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJv
bFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBhYzVhMWQxMmNmYS4uZjJjNzllYjliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBz
bWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFnLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDMtMDIgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGln
YWxpYS5jb20+CiAKICAgICAgICAgRml4IEpTQyAzMmJpdCBhbGlnbm1lbnQgaW5jcmVhc2UgZ2Nj
IHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDFhZDYxNTA3NmM5Li4xNmM5YmQxMjViMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5LDEwIEBACiAjZW5kaWYKICNlbmRpZiAv
KiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxVRTMyXzY0KSAq
LwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgVVNFX0JJR0lOVDMyIDEKKyNlbmRpZgor
CiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBtb3JlIHNwZWNpZmljIGlmIGl0IGlzIG9u
bHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8qIFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRk
cmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxF
KSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392338</attachid>
            <date>2020-03-03 15:03:58 -0800</date>
            <delta_ts>2020-03-03 15:49:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>401850</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVz
dHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4u
ODI1ZTg1ZDZiNjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFu
ZC1vdGhlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIu
anMKQEAgLTU5LDE3ICs1OSwxNyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsK
ICAgICAgICAgICAgIG5vSW5saW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RD
YXNlSW5kZXh9KTsKIAogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7
bGVmdH0sICR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAo
dGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7
bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25v
bW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAg
ICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3Jp
Z2h0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9y
cGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVz
dWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNM
ZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0p
ICE9ICR7bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNS
aWdodENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0p
CiAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENv
bnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRl
c3RQb2x5bW9ycGhpYygke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9
KSI7CisgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9u
KCR7bGVmdH0sICR7b3BlcmF0b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50
UmVzdWx0fSkiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICAr
K3Rlc3RDYXNlSW5kZXg7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEt
b24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9u
LXZhcmlvdXMtdHlwZXMuanMKaW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMKQEAgLTgzLDcgKzgzLDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAi
LCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAg
ICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRD
YXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0
IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0
Q2FzZXNbbGVmdENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkz
LDcgKzk0LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENh
c2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQg
PSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAg
ICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXgg
KyAiKSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3
YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1z
dHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3Qt
ZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAg
IHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAg
IGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFy
ZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJl
LmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBl
dmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNl
cHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDY0ZGEwYjYxNTguLmIx
MDc3ZGNhZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODcgQEAKKzIw
MjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBC
aWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0byBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFu
Y2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFsbCAoMzIgYml0IG9yIGxlc3MpLgorICAg
ICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGludG8gSlNWYWx1ZSBvbiA2NC1iaXQgcGxh
dGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBvZiBhIEpTQmlnSW50LgorICAgICAgICBU
aGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgICAgVGhp
cyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgor
ICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIg
dGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3
aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8g
dHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byB3
YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBj
YW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRv
IGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5l
ZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisKKyAgICAgICAgVGhpcyBlbnRpcmUgY2hh
bmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc2Fi
bGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4KKyAgICAgICAgSXQgc2hvdWxkIGFsc28g
bWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYgYSBnaXZlbiBidWcgY29tZXMgZnJvbSBp
dCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAgIE5vdGUgdGhhdCBpbiB0aGlzIHBh
dGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMgd2hlbiBwYXJzaW5nIEJpZ0ludCBjb25z
dGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4gQWRkIG9yIEJpdE9yKSBwcm9kdWNlIGEg
QmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5kcyBhcmUgQmlnSW50MzIsCisgICAgICAg
IGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIgZnJvbSBmb3IgZXhhbXBsZSB0aGUgc3Vi
c3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBoZWFwLWFsbG9jYXRlZCBKU0JpZ0ludHMs
IGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJpdHMuCisgICAgICAgIEFzIGEgcmVzdWx0
LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJlIGhlYXAtYWxsb2NhdGVkIG9yIGlubGlu
ZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBhIHNpZ25p
ZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBwYXRocywgd2hpY2ggYXJlIG5vdyBncm91
cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAgICAgICBCZWNhdXNlIHRoaXMgaW5jcmVh
c2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWduaWZpY2FudGx5LCBJIHNwbGl0IHRoZSBw
YXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9ubHkgdXNlZCBieSB0aGUgR0MgaW50byBT
Y3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21waWxlIHRpbWVzLgorCisgICAgICAgIElu
IHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVzZUtpbmRzIGZvciBCaWdJbnRzOiBIZWFw
QmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55QmlnSW50VXNlLgorICAgICAgICBUaGUgbGF0
dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIG5vdyB0aGF0IHdlIGFyZSByZWNlaXZpbmcgQmlnSW50cywg
YnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBvZiBoZWFwLWFsbG9jYXRlZCBhbmQgc21h
bGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGEgbmFpdmUg
aW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWduaWZpY2FudGx5IHJlZ3Jlc3NlcyB0aGUg
cGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMgdmFyaWFudHMpLCBhcyBpdCBpcyBubyBs
b25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24tY2VsbCBjYW5ub3QgYmUgZXF1YWwuCisg
ICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29kZSB3YXMganVtcGluZyB0byBhIHNsb3cg
cGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBkb3Vi
bGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFyZSBjZWxscworICAgICAgICBOb3csIGl0
IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBpcyBh
IGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBwZXJmb3JtYW5jZSBjb3N0LCBJIHNpZ25p
ZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20KKyAgICAgICAgICBpZiAobGVmdCBpcyBD
ZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQor
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQgaXMgSW50MzIpIHsKKyAgICAgICAgICAg
IGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAg
ICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJbnQzMikgeworICAgICAgICAgICAgaWYg
KHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAg
IH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodAorICAgICAgICBUbyB0aGUgZm9sbG93
aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisg
ICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCBy
aWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgdG8gYmUgZmFzdGVyIHRoYW4ganVzdCBy
ZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBieSBhbiB8fCwgYmVjYXVz
ZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBp
cyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVjZSB0aGUgcHJlc3N1cmUgb24gdGhlIGJy
YW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpldFN0cmVhbTIgdGVzdHMgYXBwZWFyIHRv
IGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdobHkgbmV1dHJhbCB3aGlsZSBpdCB3YXMg
YSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0aGlzIHRyaWNrLCBidXQgdGhlIG51bWJl
cnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRvIGRvIG1vcmUgbWVhc3VyZW1lbnRzIGJl
Zm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgSSBkb24ndCB5ZXQgaGF2ZSBwZXJm
b3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9uIGEgQmlnSW50IGJlbmNobWFyaywgSSB3
aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWluZyB0byBsYW5kIGl0LCBidXQgSSdkIGxp
a2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3Jt
YXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyOjptZW1vcnlNb2RSTSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQzMiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoV1RGOjpwcmlu
dEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAgICAg
KEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlTm9uSW50MzIpOgorICAgICAgICAoSlND
OjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQpOgorICAgICAgICAoSlNDOjpPYnNl
cnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2
ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAq
IGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRpb24pOgorICAgICAgICAoSlND
OjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZy
b21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAg
ICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OmxlYXN0VXBw
ZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKToKKyAgICAgICAgKiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc0JpZ0ludDMyU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50
Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
b25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6CisgICAgICAg
ICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRC
aXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJp
dHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
T3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
UG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjplZGdlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Om5vZGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6Z3ByKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1VzZUtp
bmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZH
VXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAo
SlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZh
bHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29u
c3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmg6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0UlNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0TFNoaWZ0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0TFNoaWZ0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpdFVSU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1lcmlj
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVF
cSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
SXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0Qmlu
YXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRC
aW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YnVpbGRU
eXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dIZWFwQmln
SW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0JpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnVuYm94QmlnSW50MzIpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QW55QmlnSW50KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNIZWFwQmlnSW50KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJ
bnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGhl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1
aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAg
ICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENv
bnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJh
bmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVy
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkhlYXBCaWdJbnQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90SGVhcEJpZ0ludCk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5ib3hCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJl
bmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAgICAgKEpTQzo6Y2FsbEJpZ0ludENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmlnSW50T2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9CaWdJbnRPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc0Jp
Z0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlB
cml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhP
cCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQp
OgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRlYyk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRv
U3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb051bWJlcik6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb0ludDMyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFzSGVhcEJpZ0ludCk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJT
bG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2Ug
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNQcmlt
aXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIp
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVyaWMgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1
YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0
U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0hlYXBCaWdJbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvQm9vbGVhbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0Jvb2xlYW4gY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUlu
Zm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzQWRkU2xv
d0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICog
cnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmNvbXBhcmVCaWdJbnRUb090aGVy
UHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29tcGFyZSk6CisgICAgICAgIChKU0M6
OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0VxKToKKyAgICAgICAgKEpTQzo6YXJpdGht
ZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNTdWIpOgorICAgICAgICAoSlNDOjpqc011
bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAgICAgKEpTQzo6anNSZW1haW5kZXIpOgor
ICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChKU0M6OmpzSW5jKToKKyAgICAgICAgKEpT
Qzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VOb3QpOgorICAgICAgICAoSlNDOjpz
aGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNSU2hpZnQp
OgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc0JpdHdp
c2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VPcik6CisgICAgICAgIChKU0M6OmpzQml0
d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3JpYmJsZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6
c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlNDOjppc1NjcmliYmxlZFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKToKKwog
MjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1YnNjcmlw
dCBhbGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOC4uYmE2
NTFiMGU0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYsNiArODY2LDcg
QEAKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0Uz
ODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkyQUY3MzgyRDE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0
cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0
NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmli
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzEx
MUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyog
QjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRo
c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzNCMkE1NDcy
MjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRGQjFCREFDREFDMDA4MEZGNzQgLyogQjNW
YWx1ZUlubGluZXMuaCAqLzsgfTsKQEAgLTM1MDcsNiArMzUwOCw3IEBACiAJCTJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhBMjM5NzI1NjUw
MEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRp
bWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
T3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBiMy9CM09wdGlt
aXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4
cHJlc3Npb25UcmVlcy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lv
blRyZWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMw
MEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGlt
aW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTQzLDYg
Kzc1NDUsNyBAQAogCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHNUYWJsZS5oICovLAogCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNl
dC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0Lmgg
Ki8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8sCiAJCQkJ
MTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3BwICovLAogCQkJ
CTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi8sCiAJCQkJ
ODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywKQEAgLTg5MDcs
NiArODkxMCw3IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAw
QjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIy
Mzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTEx
QzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAppbmRleCBjMTAwMjQwNGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNDY5OCw3ICs0Njk4
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAgICAvLwotICAg
ICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRl
IGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCisgICAgICAgIC8vIEFuIGltbWVkaWF0ZSBz
aG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4g
ZW1pdHRlZC4KICAgICAgICAgLy8gVGhlIHdyaXRlcyBhcmUgdW5jaGVja2VkIHNpbmNlIHRoZSBv
cGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4KIAogICAgICAg
ICB2b2lkIGltbWVkaWF0ZTgoaW50IGltbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggZmVhNjY3NDViNjIuLmYyYzA1ODRkNDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Myw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBU
YWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BS
UmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEVt
aXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1p
dFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRF
bWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYmICFzaG91
bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTggQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IENDYWxsSGVscGVyczo6SnVtcCBub3RCaWdJbnQzMiA9IGppdC5icmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0ludDMyKGppdCk7
CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIubGluaygmaml0
KTsKKyNlbHNlCisgICAgKHZvaWQpIHRlbXBHUFI7CisjZW5kaWYKKwogICAgIG5vbk51bWVyaWMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5vbk51bWVyaWMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIGVt
aXRTZXRCaWdJbnQoaml0KTsKKyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBCaWdJbnQoaml0
KTsKICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVyaWMubGluaygm
aml0KTsKQEAgLTg4LDE5ICs5NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBl
Pjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7Cisg
ICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25z
dAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7Cisg
ICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAg
cmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBC
aXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0Qmln
SW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRU
eXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7Ci0gICAg
aWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQo
aml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVtaXRTZXRIZWFw
QmlnSW50KCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1
bHRzOjpIZWFwQmlnSW50KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBsYXRlPHR5cGVu
YW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRT
ZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkRW1p
dFNldEJpZ0ludDMyKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2
ZWRSZXN1bHRzOjpCaWdJbnQzMik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlwZW5hbWUgQml0
ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFVuY29uZGl0
aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBjb25zdAogewpA
QCAtMTQ5LDggKzE3OCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkludDUyT3ZlcmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsK
ICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50KCkpIHsKLSAg
ICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAgICAgaWYgKHBy
b2ZpbGUuZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIoKSkgeworICAg
ICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAgICAgICAgICBz
ZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdjMWZlNzEzYjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEg
PDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJP
dmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwK
KyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAg
ICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVt
Qml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVl
ZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNp
dCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQog
ICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMg
JiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50
KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQg
fCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2Jp
dHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRP
YnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3Vi
bGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRz
ICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJl
dHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkg
eyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkg
eyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0K
ICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50
MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVy
biBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2Jz
ZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3Qg
eyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9v
bCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygp
LmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2Vy
dmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9i
c2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlk
T2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1pl
cm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9
CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJl
c3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRP
YnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAg
IHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpI
ZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9i
c2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3Zl
cmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAg
dm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6
OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVk
UmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJs
ZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAg
ICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAo
dmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1
bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAg
LTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMg
KEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlm
IGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxs
SGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsK
IAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgp
IGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAot
ICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0
OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldEhl
YXBCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3VsZEVtaXRTZXRC
aWdJbnQzMigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVtaXRTZXRCaWdJ
bnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBlbWl0VW5jb25k
aXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0OwogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCkBAIC0xNzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0aFByb2ZpbGVC
YXNlID0gdWludDE2X3Q7CiBjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFBy
b2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVtQml0c05lZWRl
ZDsKIAotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAi
U2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51
bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxk
IGZpdCBpbiB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBl
Qml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xhc3MgQmluYXJ5
QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNl
PiB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0gc2l6ZW9mKEJp
bmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgs
ICJTaG91bGQgZml0IGluIHRoZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3RhdGljX2Fzc2Vy
dCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNw
ZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJp
dHMgc2hvdWxkIGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzcGVjaWFsRmFzdFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRp
Y19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2spKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0
aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLjQ4Yjc4NzBlY2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTMyNyw2ICszMjcsNyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAgOmlzX3VuZGVm
aW5lZF9vcl9udWxsLAogICAgICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlzX251bWJlciwK
KyAgICAgICAgOmlzX2JpZ19pbnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAgICAgIDppc19v
YmplY3Rfb3JfbnVsbCwKICAgICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmgKaW5kZXggOWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NCw2
ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJl
Z2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJc1VuZGVmaW5l
ZE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5kKQogICAgIFVT
RVMoT3BJc051bWJlciwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9wZXJhbmQpCiAg
ICAgVVNFUyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVjdE9yTnVsbCwg
b3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBAIC00MjMsOSAr
NDI0LDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBu
dW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElkZW50aXR5V2l0
aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAgIERFRlMoT3BJ
c1VuZGVmaW5lZCwgZHN0KQotICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQorICAg
IERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jvb2xlYW4sIGRz
dCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJbnQsIGRzdCkK
ICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RPck51bGwsIGRz
dCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTFlZWZhMDA5OGUuLjNjMGVjZmNmMmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NTksNyArNTksNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCmluZGV4IDMyZjU4OGRiZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBAQCBlbnVtIERh
dGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUsCiAgICAgRGF0
YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAgICBEYXRhRm9y
bWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0YUZvcm1hdEpT
ID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1h
dENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3Jt
YXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpT
IHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRp
bmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9y
bWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmlu
ZGV4IDcwMWMzMzA4OWI5Li44MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0
VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0Cit2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUg
bW9kZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgTm9uZToKQEAg
LTY3LDEyICs2NywxMiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRS
ZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0
aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0
ZXJzKTsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0
LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNh
c2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlBcml0aFByb2Zp
bGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsK
KyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVn
cywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKaW5kZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUluZGV4LmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisj
aW5jbHVkZSAiVGFnUmVnaXN0ZXJzTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODMs
NyArODQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1
ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFy
eSByZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3Rpbmcg
QmlnSW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFs
dWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3Rl
cnMpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApp
bmRleCAxMDUzYmE1MmI1NC4uNzcxYzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSArMjM5LDYgQEAg
dm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2YWx1ZSAmIFNw
ZWNCaWdJbnQpCi0gICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAodmFs
dWUgPT0gU3BlY0ludDMyT25seSkKQEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAgIAorCisgICAg
aWYgKCh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IFNwZWNCaWdJbnQpCisgICAgICAgIHN0ck91dC5w
cmludCgiQmlnSW50Iik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgeworICAgICAgICBp
ZiAodmFsdWUgJiBTcGVjQmlnSW50MzIpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0lu
dDMyIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKHZhbHVlICYgU3BlY0hlYXBCaWdJbnQpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQo
IkhlYXBCaWdJbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KyAgICB9CisjZW5kaWYKKwogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCiAg
ICAgICAgIHN0ck91dC5wcmludCgiRG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBAIC00MzEsNyAr
NDQyLDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICAKICAg
ICBpZiAoY2xhc3NJbmZvID09IEpTQmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBTcGVj
QmlnSW50OworICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBpZiAoY2xhc3NJ
bmZvID09IEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9i
amVjdDsKQEAgLTQ5OSw4ICs1MTAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5n
OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpCiAg
ICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IEJpZ0ludFR5cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGlm
IChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQorICAgICAg
ICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gRGVyaXZlZEFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJy
YXk7CiAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpKTsKQEAgLTUzNiw2ICs1NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21WYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0Rv
dWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CisgICAgaWYg
KHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DZWxsKHZh
bHVlLmFzQ2VsbCgpKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01OTUsOCArNjA4
LDggQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBTeW1ib2xUeXBl
OgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5cGU6Ci0gICAg
ICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CisgICAgICAg
IHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0
dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02MzIsNiArNjQ1
LDEwIEBAIFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50
U3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAmIFNwZWNTdHJp
bmcpCiAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBlICYgU3BlY0Jp
Z0ludCkKKyAgICAgICAgdHlwZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJuIHR5cGU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
aW5kZXggNWRiMThjNjQ4MmQuLmRmMGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwxNCBAQCBzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNP
dGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRl
ZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Jv
b2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBO
dWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNF
bXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0
MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0
MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9jYXRlZCBvbiB0
aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
c21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBT
cGVjQmlnSW50MzIgfCBTcGVjSGVhcEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDM7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3Ry
aW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0Jp
Z0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlW
aWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3Ry
aW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21p
c2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2Jq
ZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFy
cmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVz
ZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGlj
IGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxP
dGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNh
biBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNE
b3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8
IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTQ2VsbC4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hl
YXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMy
IHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhl
IGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4u
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUlt
cHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2Rl
IGxvY2FsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRvcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1iZXI7
IC8vIEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4b3Rp
YyBlbmNvZGluZ3Mgb2YgbnVtYmVycy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9v
bCBpc1N5bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJ
bnQzMjsKK30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmlnSW50OworfQor
CiBpbmxpbmUgYm9vbCBpc0JpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAhIXZhbHVlICYm
ICh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0FycmF5
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGZh
M2FiYmQxMWFkLi4xNDg0ZGY4OTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2Fy
aWNoQHV3YXRlcmxvby5jYT4KICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAq
CkBAIC0xNjY4LDcgKzE2NjgsMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFs
aXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAi
YmlnaW50IikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAgIE9w
SXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0aGlz
LCBkc3QsIG9wLm1fdmFsdWUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhU
eXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgSGVhcEJpZ0ludFR5cGUpOworI2VuZGlm
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKQEAgLTI4NzYsNyArMjg4MCw3IEBAIEpTVmFsdWUg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIHVpbnQ4CiAgICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBF
bnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUlu
dFNpZ24gPSBzaWduID8gSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6
OlBhcnNlSW50U2lnbjo6VW5zaWduZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9
IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCBy
YWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50
U2lnbik7CisgICAgICAgIEpTVmFsdWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQo
bnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJv
clBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludElu
TWFwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1Li4wYTAwM2I4ZjZmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtMTA4OSw3ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2lu
ZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3Ry
aW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50
TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcg
SWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+Owog
ICAgICAgICB1c2luZyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlw
dG9yTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBX
VEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQ2NF90Pj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNi4uOTgzM2Vh
YzE5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAi
SlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUNhY2hlLmgiCkBAIC0yMTQsNyArMjEzLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3Vs
dCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RW
YWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFs
dWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5m
bygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9
PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkg
PT0gQmlnSW50VHlwZSk7CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5
cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0
TW9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAg
ICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUg
c2luY2UgZWl0aGVyOgpAQCAtNTAyLDcgKzUwMSwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUo
bm9kZSwgU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOwor
ICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNl
KQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzIsNyArNTM2LDEzIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEJpbmFy
eUJpdHdpc2VPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogdGhpcyB1
c2Ugb2YgYmluYXJ5VXNlS2luZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVjaWFsaXplIHRvIChm
b3IgZXhhbXBsZSkgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdo
dC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKSB7CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOwor
ICAgICAgICAgICAgQVNTRVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgIH0gZWxzZSBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVy
V29ybGQoKTsKQEAgLTcyMiwxMSArNzMyLDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAK
ICAgICBjYXNlIFZhbHVlU3ViOgogICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8
fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAgICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNwZWNTdHJpbmcgaGVy
ZSBmb3IgVmFsdWVTdWI/IEl0IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0IGZvciBWYWx1ZUFk
ZC4KICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjQnl0
ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg
LTg4Niw2ICs4OTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBWYWx1ZU5lZ2F0ZTogeworICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8g
bXVjaCBzbWFydGVyIHRoaW5ncyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRkL1ZhbHVlU3ViLgog
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTU4LDcg
Kzk3MiwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCB0eXBlT2ZEb3Vi
bGVJbmNPckRlYyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBj
YXNlIEJpZ0ludDMyVXNlOgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTk3NCw3ICs5
OTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkWSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZFggJiYg
Y2hpbGRZICYmIGNoaWxkWC5pc051bWJlcigpICYmIGNoaWxkWS5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIGNhbGwgYGRpZEZvbGRDbG9iYmVyV29ybGRgIGhlcmUgYmVj
YXVzZSB0aGlzIHBhdGggaXMgb25seSBwb3NzaWJsZQotICAgICAgICAgICAgLy8gd2hlbiBub2Rl
LT51c2VLaW5kIGlzIFVudHlwZWRVc2UuIEluIHRoZSBjYXNlIG9mIEJpZ0ludFVzZSwgY2hpbGRy
ZW4gd2lsbCBiZQorICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlwZWRV
c2UuIEluIHRoZSBjYXNlIG9mIEFueUJpZ0ludFVzZSBvciBmcmllbmRzLCBjaGlsZHJlbiB3aWxs
IGJlCiAgICAgICAgICAgICAvLyBjbGVhcmVkIGJ5IGBBYnN0cmFjdEludGVycHJldGVyOjpleGVj
dXRlRWZmZWN0c2AuCiAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAg
ICAgICAvLyBPdXIgYm94aW5nIHNjaGVtZSBoZXJlIG1hdGNoZXMgd2hhdCB3ZSBkbyBpbiBvcGVy
YXRpb25WYWx1ZVBvdy4KQEAgLTk4Miw3ICsxMDAwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5Miw3ICsxMDEyLDEwIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZU11bDogewot
ICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAg
Ly8gRklYTUU6IHdoeSBpcyB0aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRoIFZhbHVlU3ViPworICAg
ICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAg
ICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9k
ZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxk
KCk7CkBAIC0xMDU2LDcgKzEwNzksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBpZiAoaGFuZGxlQ29uc3RhbnREaXZPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBp
ZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBA
IC0xMzgwLDYgKzE0MDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgSXNV
bmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoK
KyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2Ug
SXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTE0MDgsNiArMTQzNCw5IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzTnVtYmVyOgogICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlz
TnVtYmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNC
aWdJbnQ6CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxk
LnZhbHVlKCkuaXNCaWdJbnQoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNoaWxkLnZhbHVl
KCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYyLDcgKzE1OTEsMjIgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBpZiAoIShj
aGlsZC5tX3R5cGUgJiB+U3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBj
b25zdGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpZiB0aGUgU3BlY3VsYXRlZFR5cGUgaW5mb3Jt
cyB1cyB0aGF0IHdlIHdvbid0IGhhdmUgYSBCaWdJbnQzMiAob3IgdGhhdCB3ZSB3b24ndCBoYXZl
IGEgSGVhcEJpZ0ludCksIHRoZW4gd2UgY2FuIHRyYW5zZm9ybSB0aGlzIG5vZGUgaW50byBhIElz
Q2VsbFdpdGhUeXBlKEhlYXBCaWdJbnRUeXBlKSAob3IgYSBoeXBvdGhldGljYWwgSXNCaWdJbnQz
MiBub2RlKS4KIAorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRl
Z2VyOgogICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKSB7
CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKQEAg
LTE5MzYsMTMgKzE5ODAsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjaGVjayBoZXJl
LCBhbmQgbm90IGxhdGVyIChhZnRlciB0aGUgdHlwZS1iYXNlZCByZXBsYWNlbWVudCBieSBmYWxz
ZSkuCisgICAgICAgIC8vIFNhYW0gc2VlbXMgdG8gYWdyZWUgdGhhdCB0aGUgdHdvIGNoZWNrcyBj
b3VsZCBiZSBzd2l0Y2hlZCwgSSdsbCB0cnkgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoCiAgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgY29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50
IHRvIEpTQy4KLSAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQgPSBbXSAo
SlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5p
c0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gaXNOb25TdHJp
bmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygp
ICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAg
IGlmIChpc05vblN0cmluZ0NlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25z
dGFudChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENv
bnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQocmlnaHQpKSB7
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7CiAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29s
ZWFuKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5NTcsMTkgKzIwMDMsMjQgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpID09IG5vZGUtPmNoaWxkMigpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDMyVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQ1MlJlcFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdJZGVudFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3ltYm9sVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChP
YmplY3RVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NV
c2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KFVudHlwZWRVc2UsIE1pc2NVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdWYXJVc2UpIHx8Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2Up
IHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50
eXBlZFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgU3RyaW5nVXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBj
YXNlIG5vdCBpbnZvbHZpbmcgTmFOIHdoZXJlIHggPT09IHggaXMgbm90IGd1YXJhbnRlZWQgdG8g
cmV0dXJuIHRydWU/CisgICAgICAgICAgICAvLyBJZiBub3QgSSBtaWdodCBzbGlnaHRseSBzaW1w
bGlmeSB0aGF0IGNoZWNrLgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChC
b29sZWFuVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQz
MlVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkK
KyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2Up
CisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQor
ICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNj
VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVu
dFVzZSwgTm90U3RyaW5nVmFyVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAg
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpCisgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkK
KyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsK
ICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMWZhMGIzMTc4Ny4uYzhjMjVj
MzBkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC01NTYyLDYgKzU1NjIsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX251bWJl
cik7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2lzX2JpZ19pbnQ6IHsKKyAgICAgICAg
ICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIGFkZFRvR3JhcGgoSXNCaWdJbnQsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9pc19iaWdfaW50KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaXNfY2Vs
bF93aXRoX3R5cGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGdldChieXRlY29kZS5tX29wZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc1OWI3NzgwYTZjLi4wM2U4OWIyNmU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQ5LDYg
KzE0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9pc191bmRlZmlu
ZWRfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2Jvb2xlYW46CiAgICAgY2FzZSBvcF9pc19udW1i
ZXI6CisgICAgY2FzZSBvcF9pc19iaWdfaW50OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgogICAg
IGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6CiAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlw
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIzMThm
ZTAzYWUuLmVjMWVmOWYwMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE3NSw2ICsxNzUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
IGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJ
c051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgog
ICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgpAQCAtMjYwLDcg
KzI2MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAg
IGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gQmlnSW50VXNlKSB7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8
fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICAg
ICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTY4NSw3ICs2ODYsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNl
IEludDMyVXNlOgogICAgICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBjYXNlIERvdWJs
ZVJlcFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJV
c2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRV
c2U6CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgpAQCAtNzA3LDcgKzcxMCw4IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBWYWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0TFNo
aWZ0OgogICAgIGNhc2UgVmFsdWVCaXRSU2hpZnQ6Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50VXNlKSkgeworICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2Ygc2lu
Z2xlLWFyZ3VtZW50IGlzQmluYXJ5VXNlS2luZCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gc3BlY2lh
bGl6aW5nIChmb3IgZXhhbXBsZSkgZm9yIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEg
QmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBkZWYo
UHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAppbmRleCBiNDNmN2NmNTRlMS4uYWM2ODM0MzMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNp
dCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChK
U1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYg
dmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkg
JiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAg
ICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmln
SW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjLi5lYWE1YjI0MTA3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1
ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRG
R05vZGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIApAQCAtMTQ3LDYgKzE0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNC
b29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RP
ck51bGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCBlOTdkZTEwZjZmNC4uOTI0ODZmYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMSwxNCArMjAxLDM0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAo
c2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8g
Y29tcGlsZSBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9w
dGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4g
dGhhdCBjYXNlLgorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVl
QWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNIZWFwQmlnSW50LCBKU0Nv
bnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENv
bnN0YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENo
aWxkMihFZGdlKG5vZGVDb25zdGFudE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJ
bnRzIGFyZSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVy
ZQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5z
ZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBu
b2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2Nr
LCBTcGVjQmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGgu
ZnJlZXplKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9y
IG5vdy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lh
bCByZXByZXNlbnRhdGlvbiBmb3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAg
fSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2Vm
dWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2Vz
IHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdo
dCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFk
IGluIHRoYXQgY2FzZS4KICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBW
YWx1ZUFkZCA6IFZhbHVlU3ViKTsKLSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0Nv
bnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENv
bnN0YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlND
b25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5z
ZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUg
Y3VycmVudGx5IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBo
ZXJlCisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29k
IGhlcmUKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNCwx
MiArMjU0LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5j
aGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisg
ICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9k
ZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0Uo
QklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNo
aWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPFVudHlwZWRVc2U+KGNoaWxkMik7CkBAIC0yNjcsOCArMjk1LDIxIEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAg
ICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxMiw3ICszNTMsMTcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
KCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+
c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJh
bmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVy
YW5kRWRnZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
b3BlcmFuZEVkZ2UpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdl
Lm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7
CkBAIC00NTcsOSArNTA4LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNo
aWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNo
aWxkMik7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChj
aGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KGNoaWxkMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9k
ZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNo
aWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNo
aWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7Cisj
ZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5
cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hp
bGQyKTsKQEAgLTU0NSw4ICs2MDQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJp
Z2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJ
bnQzMihsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAg
ICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTU4NywxMiArNjU5LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAg
ICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAg
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmln
aHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNl
PihsZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmln
aHRDaGlsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklH
SU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRD
aGlsZCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxl
ZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4obGVmdENoaWxkKTsKQEAgLTY1NiwxMiArNzM2LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZs
YWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1NDAsNiArMjYyOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29s
ZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAg
ICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAg
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMjg4MCw3ICsyOTY5LDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMy
KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTUzLDcgKzMwNTEsMTYgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGls
ZCBpcyBCaWdJbnQsIHdlIGF0dGVtcHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHks
IHNpbmNlIGl0IGNhbiBvbmx5IHJldHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0zNDMzLDEzICszNTQwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5n
VXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVz
ZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToK
ICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJp
bmdPYmplY3RVc2U6CiAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVz
KCkKICAgICAgICAgICAgICAgICB8fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGlj
dGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlh
YmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFu
ZCBBbnlCaWdJbnRVc2UgPworICAgICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91
dCBhbGwgb2YgdGhlIFVzZUtpbmRzIHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNo
PwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5
NDksMTIgKzQwNTgsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVm
YXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BB
bmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkgeworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmlu
Z0lkZW50KCkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4
MTBlMTAxLi5mODE3MGQ5MmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRl
ICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMzQ1NWI1YzI5Zi4uOTdmMTdhMDg5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjU0MSw2ICsyNTQxLDE4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSk7CiAgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlQmlnSW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1
bGF0ZUJpZ0ludCgpCiAgICAgewpAQCAtMjc0MSw3ICsyNzUzLDE5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSog
b3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSog
b3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0lu
dCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0
YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
KSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZTIxMWVhNzdkODUuLmFmMGYzZjc0MDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTUsNiArMzk1LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzVW5kZWZpbmVkT3JO
dWxsLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhJc051bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAg
ICAvKiBJc0JpZ0ludCBpcyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIuIE90aGVyd2lzZSB3
ZSBlbWl0IElzQ2VsbFdpdGhUeXBlICovXAorICAgIG1hY3JvKElzQmlnSW50LCBOb2RlUmVzdWx0
Qm9vbGVhbikgXAogICAgIG1hY3JvKE51bWJlcklzSW50ZWdlciwgTm9kZVJlc3VsdEJvb2xlYW4p
IFwKICAgICBtYWNybyhJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJ
c09iamVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDIzZWJlMGQ3YmM3Li5iMjIxMTliOWQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxMyBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUg
c3VyZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdS
ZWdpc3RlciwKICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3Jl
IGl0LgogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNW
YWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAv
LyBXZSBhbHNvIHVzZSB0aGUgbm90Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdp
c3RlciwgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmlu
ZCBhIGxlc3MgZ3Jvc3Mgd2F5IG9mIGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcg
dGhlc2Ugb3BlcmF0aW9ucyB1bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0
ZXJzIGFyb3VuZD8KKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcp
LCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQu
bV9qc1ZhbHVlU291cmNlLmdwcigpKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpO
b3RDZWxsTWFzayksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNB
ZGRyZXNzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2Fu
IHVzZSBpdC4KQEAgLTM5OCw3ICs0MDEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9h
ZCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0
Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRh
Zyk7CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBA
IC00MDcsMTAgKzQxMCwxMCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAg
ICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkp
LCBzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNo
VGFnLCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAg
IHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9q
c1ZhbHVlU291cmNlLnJlZ3MoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmRiOWM5ZDc2Ny4uYTI2NWMwYWE3MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2
LDcgKzg2LDYgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZN
SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMSw1
NiArMjIwLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5s
aW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0
aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVy
YXRpb24mJiBudW1iZXJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50
T3AoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0g
ICAgc2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihudW1iZXJPcChXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRp
b24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgYml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwot
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2Nv
cGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQz
Mk9wKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmln
aHROdW1lcmljKSkpKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
cGFyc2VJbnRSZXN1bHQoZG91YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19j
YXN0PGludD4oaW5wdXQpOwpAQCAtNDcwLDcxICs0MTksMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewot
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91
YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQp
OwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2Rl
ZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJh
bmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJs
ZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0luYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAg
ICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpk
ZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsK
LQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0RlYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC01NDMsMTUgKzQ1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0
byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
bGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1
cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRP
cDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikKQEAgLTU2MCwxNSArNDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9
OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAg
IHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5j
b2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpCkBAIC01NzcsMTUgKzQ3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0g
ICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qgcmln
aHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0K
LSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01OTQsMTUgKzQ4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQg
JiAweDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4i
X3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNo
aWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02MTEsMTUgKzQ5MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4g
SlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0
dXJuIGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNl
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50
T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2ln
bmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
KQpAQCAtNjU3LDE1ICs1MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBh
dXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBK
U0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAg
ICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJs
ZSB7Ci0gICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRP
cCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2
aXNpb24gb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NzQsMTUgKzUzOCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdo
dCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3Ag
PSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4g
YmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50
T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4
cG9uZW50aWF0aW9uIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNQb3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aEFicyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxKQpAQCAtMTQ3OSw3ICsxMzM1LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4K
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3Qs
IGlucHV0KSk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNDkxLDcgKzEzNDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJh
bmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTUwMiw3ICsxMzU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE1MTQsNyArMTM3MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAg
cmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogICAgIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MjYsNyArMTM4Miw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MzgsNyArMTM5NCw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1
NTAsNyArMTQwNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmln
SW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NjIsNyArMTQxOCw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExT
aGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc0LDcg
KzE0MzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6
bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CkBAIC0xNTg2LDcgKzE0NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJl
dHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFu
ZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTk4LDcgKzE0NTQsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2
MTAsNyArMTQ2Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmln
SW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE2MjgsNyArMTQ4NCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5l
KGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOworICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVh
bEZvckNlbGxzKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgYXJnMSwgRW5jb2RlZEpTVmFsdWUgYXJnMikKQEAgLTE2NzMsMTAgKzE1Mjks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1Zh
bHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoV1RGOjpnZXQ8SlNCaWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKaW5kZXggMGYxYzg3NTRjZDYuLjNmMDRmODljZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBSZWdFeHBPYmplY3QqLCBKCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0KEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFD
ZWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdExTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRI
ZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwg
dWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBtaW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDI4ODg1OGIzOGMxLi5lM2NmNzk1YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTUzMiw3ICs1MzIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTAwMyw2ICsxMDE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAg
IGNhc2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVt
YmVySXNJbnRlZ2VyOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2Jq
ZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCBiYWRmZTFiMmQxNC4uZDU1OGE3NTc4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAg
ICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBj
YXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBj
YXNlIEJpZ0ludDMyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAg
Y2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJV
c2U6CkBAIC0yNjMsNiArMjY1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1i
ZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBj
YXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC02NzUsMTAgKzY3OCwx
MCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2Fz
ZSBWYWx1ZU1vZDoKICAgICBjYXNlIFZhbHVlUG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSk7CisgICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFs
dWVCaXROb3Q6Ci0gICAgICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmln
SW50VXNlOworICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3RO
b2RlVHlwZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlOGQw
NjgwNzkuLjVlMTkyMzQ0NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYQogCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2Up
KQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9k
ZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwgfHwgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNv
bXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7
CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50
NTJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1Mzcs
NDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUp
CiB7CiAgICAgRWRnZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQx
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNo
aWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50
MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKwor
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSBy
ZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlm
IHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6Qmln
SW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50
MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRf
dCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykp
OworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BS
KTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0lu
dDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhp
cywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwog
Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBz
cGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNo
aWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJl
cXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5k
UmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBA
IC0zNTc4LDE0ICszNjA1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNl
Tm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3Is
IEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2Um
IGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2Rl
LT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJ
bnRVc2UpOworCiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwg
aXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1Zh
bHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVl
UmVncygpOwogCkBAIC0zNjMwLDExICszNjYxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJh
bmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVm
dE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hp
bGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVx
dWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVS
ZWdzKCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAg
ICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNl
KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNw
ZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQog
ICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2
NzAsNTIgKzM3MDMsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lz
ZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAg
ICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGls
ZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7
CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7
CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxk
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCks
IHJlc3VsdEdQUik7CisKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVl
Qml0QW5kOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3Is
IG9wZXJhdGlvblZhbHVlQml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBWYWx1ZUJpdFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0
WG9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMg
bm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAg
bV9qaXQuYW5kNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxK
SVRCaXRPckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9l
cyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAg
ICBtX2ppdC5vcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3Zl
cyB0aGUgdGFnLCBzbyB3ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRp
b24KKyAgICAgICAgICAgIG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgbV9qaXQub3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdo
dENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxl
ZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklY
TUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgor
CisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENo
aWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7
CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFu
ZDoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBl
bWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25W
YWx1ZUJpdEFuZD4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9y
OgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdl
bmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9y
QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCBy
aWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50
Qml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAg
ICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUJpdHdpc2VPcChOb2RlKiBub2RlKQpAQCAtMzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50
eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVy
YXRpb25fR0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJp
dFJTaGlmdAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFs
dWVCaXRVUlNoaWZ0OwpAQCAtMzc2NSw5ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENo
aWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOwogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNL
bm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9k
ZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hp
bGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApA
QCAtMzg1OSwyNyArMzkyNiwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVM
U2hpZnRPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgp
OwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQg
QmlnSW50MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAg
ICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRH
UFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09
IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAg
ZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0
TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNo
aWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4
NywyNyArMzk1NCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hp
ZnQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQz
MgorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlw
ZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hp
ZnRCaXRPcChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3Ao
Tm9kZSogbm9kZSkKQEAgLTM5MTgsNyArMzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50Umln
aHRTaGlmdEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5
ICs0MDE1LDY5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBu
b2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJp
Z2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdl
IHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9y
aWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVy
IHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVu
Ym94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0
byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBy
ZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAg
ICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRS
ZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3Mg
PSByaWdodC5qc1ZhbHVlUmVncygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6
IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQg
QmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIg
PSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAot
ICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3Bl
Y3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50
KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
QWRkQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQwMDYsNDQgKzQxMjMsOTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxk
ID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigp
OwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwot
ICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRj
aEZQUlJlZyA9IHRydWU7Ci0jZW5kaWYKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3
ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8g
UmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29k
ZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5t
b3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7Cisg
ICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CiAKLSAgICAgICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklU
U3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmls
ZSk7Ci0gICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJP
cHRpbWl6ZTsKLSAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZVN1YjsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhl
IG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9q
aXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBH
UFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVl
ZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwg
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNz
IGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2pp
dC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBw
b3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlKTsKKyAgICAvLyBGSVhNRTogd2h5IGRvIGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVN
dWwgdXNlIGlzS25vd25Ob3ROdW1iZXIgYnV0IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAg
ICAgIHNwZWN1bGF0ZUFueUJpZ0ludChyaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
bGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0
UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdwcigp
OwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAotICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAg
ICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxk
LCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CiAKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJp
Z0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOworCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJv
b2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3Jh
dGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7Cisj
ZW5kaWYKKworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgp
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5k
ZXgoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OworICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhh
cml0aFByb2ZpbGUpOworICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVTdWJPcHRpbWl6ZTsKKyAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlv
blZhbHVlU3ViOworCisgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNo
R1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKTsKKyAgICByZXR1cm47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5l
cmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uPgpAQCAtNDYxMyw2ICs0Nzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5j
T3JEZWMoTm9kZSogbm9kZSkKIHsKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUg
c2hvdWxkIGhhdmUgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1
cFBoYXNlCisgICAgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91
bGQgcHJvYmFibHkgaGF2ZSBzb21lIHBhdGggZm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQ2MjgsNiArNDc5NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhN
RTogYWRkIGEgZmFzdCBwYXRoLCBhdCBsZWFzdCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBh
bHNvIGZvciBIZWFwQmlnSW50IGhlcmUuCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgwOCwyOSArNDk3Niw2MyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBu
b2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAK
LSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRo
ZSBjb2RlIGJldHdlZW4gY29tcGlsZVZhbHVlQWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBp
bGVWYWx1ZU11bCBmb3IgQmlnSW50MzIgaXMgbmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdl
dCByaWQgb2YgdGhlIGR1cGxpY2F0aW9uLgorICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJh
bmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMy
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6
IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUg
bGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5k
IG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQu
Z3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BS
KTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1f
aml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21l
IHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJm
bG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6
IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsK
KworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BS
PworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
RklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYK
KworICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRD
aGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxl
ZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11
bEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNL
bm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0
Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwor
ICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3RO
dW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hp
bGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApA
QCAtNTAxMCwyOSArNTIxMiwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVE
aXYoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJl
bnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhl
IGNvZGUgZm9yIERpdiBnZXRzLgorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQ
Uik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
IAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hp
bGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFs
dWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVt
YmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2Rl
KCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxh
dGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVm
dC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5q
c1ZhbHVlUmVncygpOwogCkBAIC01MDQ2LDYgKzUyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0
aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+
IHJpZ2h0OwogCkBAIC01Mjk1LDI5ICs1NTAzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZU1vZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFk
ZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBz
bG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJl
ZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQu
Z3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTW9kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TW9kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9w
ZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMs
IHJpZ2h0Q2hpbGQpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIo
dGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxh
dGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAg
ICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVS
ZWdzIG9wMlJlZ3MgPSBvcDIuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpA
QCAtNTg1OSwzMCArNjA3MSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQ
b3coTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEg
ZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBmb3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxv
dyBwcmV0dHkgb2Z0ZW4uCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSk7CisgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50
VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5
VXNlS2luZCgpKTsKIAotICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsK
LSAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVl
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1
bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQu
anNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVl
UmVncygpOwogCkBAIC02MDMwLDYgKzYyNDUsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29t
cGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJl
KG5vZGUsIGNvbmRpdGlvbik7CkBAIC02MDU3LDYgKzYyNzgsOCBAQCBib29sIFNwZWN1bGF0aXZl
SklUOjpjb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbgogICAgICAgICAgICAgY29tcGlsZVN0cmluZ0lkZW50Q29tcGFyZShub2RlLCBjb25k
aXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIC8vIEZJWE1F
OiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUgKGFuZCBhZGQgYSBjb3JyZXNwb25kaW5nIHRlc3Qs
IHdlIHNob3VsZCByZWFsbHkgaGF2ZSBjYXVnaHQgdGhpcykKIAogICAgIGlmIChub2RlLT5vcCgp
ID09IENvbXBhcmVFcSkgewogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xl
YW5Vc2UpKSB7CkBAIC02MTM2LDcgKzYzNTksMjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCi0jaWYgVVNFKEpTVkFMVUU2NCkgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJh
bmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJy
YW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNo
Tm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21w
aWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5j
aEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0lu
dDMyQ29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorI2VuZGlmCisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKQEAgLTYxODMsOCArNjQyMyw4IEBAIGJvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICBjb21waWxlQmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxl
SGVhcEJpZ0ludEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIApAQCAtNjI3OCw4ICs2NTE4LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0
eShub2RlLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlKSk7CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICBy
ZXR1cm4gbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShub2RlKTsKIH0KIApAQCAtMTA1NDEsMTggKzEw
NzgxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2Up
CiAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcg
Y2VsbCkKIHsKLSAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChj
ZWxsKSwgZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5v
dEJpZ0ludChjZWxsKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0
LmJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxsKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2Us
IFNwZWNCaWdJbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5k
LmdwcigpKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNW
YWx1ZVJlZ3MgcmVncykKQEAgLTEwNzIyLDggKzEwOTYyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAg
ICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmln
SW50VXNlOgotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2Up
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3Vs
YXRlQW55QmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVh
cEJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmlu
Z09iamVjdChlZGdlKTsKQEAgLTEzMDczLDE3ICsxMzMyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1l
bnRSZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7Cisg
ICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0
eXBlT2YsIGFuZCBmb3IgYm9vbGlmeSBvciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBm
aWxlKS4KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3Vt
ZW50UmVncyk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChh
cmd1bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNC
aWdJbnQgPSBtX2ppdC5qdW1wKCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdEhlYXBCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGlzSGVhcEJpZ0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwu
bGluaygmbV9qaXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1i
ZXIoYXJndW1lbnRSZWdzLCBzY3JhdGNoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7
CisgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdz
KGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTQy
LDkgKzE0MTkxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZUJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUg
PSBicmFuY2hOb2RlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1
YWxpdHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50
RXF1YWxpdHkoTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBD
cmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UK
KyAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lv
biBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMzk1Niw4ICsxNDIwNSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQu
dXNlKCk7CiAgICAgcmlnaHQudXNlKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hp
bGQxKCksIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmln
aHRHUFIpOworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIp
OworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5hNjU1
ZGU5ODNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0Niw2ICszNDYsOSBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxh
dGVEb3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCaWdJbnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVy
YXRlZE9wZXJhbmRUeXBlIGNoZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAg
ICAgdm9pZCBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+KTsKQEAgLTExNDgsNiArMTE1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQ
ZWVwSG9sZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24s
IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAg
ICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9k
ZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlSW50NTJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGls
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhv
bGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2go
Tm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUpOwpAQCAtMTE3Miw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1p
c2NTdHJpY3RFcShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2Rl
Kik7Ci0gICAgdm9pZCBjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29t
cGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVT
eW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxl
U3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBl
ZEVkZ2UpOwogCkBAIC0xMjIyLDYgKzEyMjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBj
b21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29t
cGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3Vi
bGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2
b2lkIGNvbXBpbGVTdHJpbmdDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CkBAIC0xMjk3LDExICsxMzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVCaXR3aXNlTm90KE5vZGUqKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRH
ZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQg
ZW1pdFVudHlwZWRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50
Qml0T3AoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVCaXR3aXNlT3AoTm9kZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJp
Z2h0U2hpZnRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRT
aGlmdEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
U2hpZnRPcChOb2RlKik7CkBAIC0xNTc5LDYgKzE1ODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c3BlY3VsYXRlSW50MzIoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91
YmxlUmVwQW55SW50KEVkZ2UpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVj
dWxhdGVBbnlCaWdJbnQoRWRnZSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQg
c3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjI4LDggKzE2
NDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChF
ZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAg
dm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRn
ZSwgR1BSUmVnIGNlbGwpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZv
aWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVj
dWxhdGVIZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBK
U1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQg
c3BlY3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDcs
NiArMjYyMCw1NiBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAK
KyNpZiBVU0UoQklHSU5UMzIpCitjbGFzcyBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAg
ICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5p
c0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFs
aWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFs
aWQpOworICAgIH0KKworICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9lZGdlOworICAgIH0KKworICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAg
eworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkp
OworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2Uo
KQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVn
IG1fZ3ByT3JJbnZhbGlkOworfTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUg
REZHX1RZUEVfQ0hFQ0tfV0lUSF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlw
ZXNQYXNzZWRUaHJvdWdoLCBqdW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJj
ZSBfZHRjX3NvdXJjZSA9IChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgRWRnZSBfZHRjX2VkZ2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGIwMTlkODVkZjljLi4zZWE5ZjNjOTdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC00MTg1LDcgKzQxODUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgICAgIERGR19D
UkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQ2hlY2tBcnJheU9yRW1wdHkgb25seSB1c2VkIGlu
IDY0LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBJc0Jp
Z0ludDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJJc0JpZ0ludCBp
cyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIsIHdoaWNoIGNhbiBvbmx5IGJlIHRydWUgaW4g
NjQgYml0IG1vZGUiKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggYjA3Y2IyNTc1ZDEuLjNlM2Q4NjY0YWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzgs
NyArMTM4LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2Up
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJs
ZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29s
ZWFuOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1h
dEpTQmlnSW50MzI6IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAg
IG1fZ3Bycy5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0zNDAsOCArMzQxLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAg
IH0KICAgICAKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBBU1NF
UlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5k
IGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
bm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICBH
UFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCkBAIC0zNjMsNDMgKzM2Nyw2NyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGlu
dmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQ
UiwgdGFrZW4pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJn
MkdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3
b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotICAgICAgICAKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcx
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdERvdWJsZSA9IG1faml0LmJyYW5j
aElmTnVtYmVyKGFyZzFHUFIpOwotICAgICAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyR1BS
KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHREb3VibGUgPSBtX2ppdC5icmFuY2hJ
Zk51bWJlcihhcmcyR1BSKTsKLSAgICAgICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAg
IAotICAgICAgICBicmFuY2g2NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRD
b21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHRha2VuKTsKLSAgICAgICAganVtcChu
b3RUYWtlbiwgRm9yY2VKdW1wKTsKLSAgICAgICAgCi0gICAgICAgIHR3b0NlbGxzQ2FzZS5saW5r
KCZtX2ppdCk7CisgICAgICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2lu
dmVydCcgdG8gYmUgZmFsc2UpOgorICAgICAgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICBpZiAobGVm
dCA9PSByaWdodCkKKyAgICAgICAgICAgIGdvdG8gdGFrZW47CisgICAgICAgICBpZiAobGVmdCBp
cyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
ICAgICAgZ290byBub3RUYWtlbjsKKyAgICAgICAgICovCisKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CisKKyAgICAgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBs
ZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xl
IGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBp
ZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgLy8gVGhlIHRy
aWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0
byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisg
ICAgICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBi
ZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMg
YWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OworICAgICAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0
Lm1vdmUoYXJnMkdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0
ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3Jh
dGNoLmdwcigpKTsKKyAgICAgICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIs
IHJlc3VsdEdQUik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdo
Qml0cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICAgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKICAgICAgICAg
YnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBu
b3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCi0gICAgICAgIGxlZnREb3VibGUubGluaygmbV9q
aXQpOwotICAgICAgICByaWdodERvdWJsZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgCisgICAg
ICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBp
ZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJ
bnQzMikKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBo
YXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3Ig
SGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgICAg
IC8vIEluc3RlYWQgb2YgZG9pbmcgdHdvIGJyYW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25l
LCBieSBvYnNlcnZpbmcgdGhhdAorICAgICAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0
IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgICAg
ICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgICAgICAvLyAyLiBT
aW5jZSB3ZSBrbm93IHRoYXQgbmVpdGhlciBpcyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCBy
aWdodCBpcyBDZWxsKSBpcyBlcXVpdmFsZW50IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQor
ICAgICAgICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxs
IGJlIHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgICAgIC8vICAgICAgSWYgYXQgbGVh
c3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgICAg
ICAvLyAgICAgIEFuZCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXIn
IHRhZyB3aWxsIGFsc28gYmUgMCwgbWFraW5nIHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7
CisjZWxzZQorICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7
CisjZW5kaWYKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZDZWxs
KHJlc3VsdEdQUikpOworCisgICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwg
Rm9yY2VKdW1wKTsKKworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAgICAgICAg
IGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpO
b25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9Ci0gICAgCisKICAgICBqdW1wKG5vdFRh
a2VuKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogeworICAgIC8vIEZJWE1FOiBzb21l
IG9mIHRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVhYmxlIHdpdGggbm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxCiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
SlNWYWx1ZVJlZ3MgYXJnMVJlZ3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJl
Z3MgYXJnMlJlZ3MgPSBhcmcyLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGFyZzFHUFIgPSBh
cmcxLmdwcigpOworICAgIEdQUlJlZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKICAgICAKICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CkBAIC00MjgsMzMgKzQ1Niw2MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAg
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAg
bV9qaXQub3I2NChhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7Cisg
ICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxz
ZSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAg
Z290byBzbG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgKi8KIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2Vz
OwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgdHdvQ2VsbHNDYXNlID0gbV9qaXQuYnJhbmNoSWZD
ZWxsKHJlc3VsdEdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5i
cmFuY2hJZkludDMyKGFyZzFSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk51bWJlcihhcmcxUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIGxlZnRPSy5saW5r
KCZtX2ppdCk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElm
SW50MzIoYXJnMlJlZ3MpOwotICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
TnVtYmVyKGFyZzJSZWdzLCBJbnZhbGlkR1BSUmVnKSk7Ci0gICAgcmlnaHRPSy5saW5rKCZtX2pp
dCk7Ci0KLSAgICBtX2ppdC5jb21wYXJlNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFs
IDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJl
c3VsdEdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwot
Ci0gICAgdHdvQ2VsbHNDYXNlLmxpbmsoJm1faml0KTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGFyZzFSZWdzLmdwcigpLCBh
cmcyUmVncy5ncHIoKSkpOworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBp
cyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVh
ZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFu
Y2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBK
U1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQg
b3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90
IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNl
dAorICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIG1faml0Lm1vdmUoYXJnMUdQUiwgcmVz
dWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgIG1f
aml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0
R1BSKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdo
Qml0cyksIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVz
dWx0R1BSLCByZXN1bHRHUFIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZI
aWdoQml0cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICBzbG93UGF0aENh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW02NChuZXh0TG93ZXN0T2ZIaWdoQml0cykpKTsKKworICAgIG1faml0
LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQ
Uik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRD
b21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSKTsKKworICAgIC8vIElmIHdlIHN1cHBvcnQgQmln
SW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBp
cyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAvLyBJZiB3ZSBkb24n
dCBzdXBwb3J0IEJpZ0ludDMyLCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYg
Ym90aCBvcGVyYW5kcyBhcmUgY2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFu
ZCBTdHJpbmcgPT09IFN0cmluZykKKyAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hl
cywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAvLyAxLiAo
bGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJp
Z2h0KSBpcyBDZWxsKQorICAgIC8vICAgICAgQm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAi
CisgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0
IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdo
dCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3Ag
Yml0cyB3aWxsIGJlIHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgLy8gICAgICBJZiBh
dCBsZWFzdCBvbmUgaXMgbm90IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisg
ICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVy
JyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Cisj
ZWxzZQorICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRp
ZgorICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIp
KTsKIAotICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCghaW52ZXJ0KSwg
cmVzdWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BSKTsK
IAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0
aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CiAKKyAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tNjQoaW52ZXJ0KSwgcmVzdWx0R1BSKTsK
KwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCkBAIC0xMDAzLDYgKzEwNTgsOCBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRn
ZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQz
MjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQg
ZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzQsNiArMTI5MSw4
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQog
ICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50
MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1f
aml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAg
CiAgICAgZGVmYXVsdDoKQEAgLTEzMTEsNiArMTM3MCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0
b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9y
bWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVu
dE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEz
MTksNiArMTM4MCwxMDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bGVhbihFZGdlIGVkZ2UpCiAgICAgfQogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVl
ZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
KFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYg
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFs
dWVSZWdzKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7
CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQorewor
ICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZp
bHRlcih2YWx1ZSwgU3BlY0JpZ0ludDMyKTsKKyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7Cisg
ICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewor
ICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRl
KCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJl
dGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNWYWx1ZSkpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICAgICAgfQorCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIs
IFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0JpZ0ludDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAg
ICAgICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxv
Y2sodGVtcEdQUik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpT
QmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBE
YXRhRm9ybWF0SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAg
IG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgewor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBl
ZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1w
R1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90
TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAg
ICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3Jt
YXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERh
dGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNl
IERhdGFGb3JtYXRKU0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNl
IERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERh
dGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0
YUZvcm1hdFN0cmljdEludDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9j
dXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
REZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9y
bWF0Iik7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAv
LyBVU0UoQklHSU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJp
Y3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTcx
OSw1NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQog
CisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMy
Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBv
cDIpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29u
ZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVk
IHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwK
KyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1v
dmUob3AyLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0
ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0Lmdw
cigpLCB0ZW1wLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFk
ZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3Iz
MihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jv
b2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQz
MkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3Vs
ZCByZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9u
IG5lZ2F0aXZlIG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAg
ICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxv
Y2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCkt
Pm5vdFRha2VuLmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJy
YW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNo
IHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2Ug
Y2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAg
ICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBC
YXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAg
ICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9w
MS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFy
ZUVxUHRyKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtNDA4Niw2ICs0Mjk5LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJ
c0JpZ0ludDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVlLmdwcigpKTsK
KworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2sp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5hbmQ2NCh2YWx1ZS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgcmVz
dWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1w
KCk7CisKKyAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgo
SklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBC
aWdJbnRUeXBlKSwgcmVzdWx0LmdwcigpKTsKKworICAgICAgICBjb250aW51YXRpb24ubGluaygm
bV9qaXQpOworICAgICAgICBibGVzc0Jvb2xlYW4ocmVzdWx0LmdwcigpKTsKKyAgICAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBiM2U0MWQ4ZDdlMS4u
ZGZhN2M2M2VkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
bWF5YmUgc3VwcG9ydCB0aGUgY2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJp
Z0ludCBhbmQgdGhlIG90aGVyIGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmICht
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICht
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UpCiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmlu
ZGV4IDhlZjczYjZmMmU4Li5hYjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgog
ICAgICAgICBvdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBC
aWdJbnRVc2U6Ci0gICAgICAgIG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJ
bnRVc2U6CisgICAgICAgIG91dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJCaWdJbnQzMiIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RV
c2U6CiAgICAgICAgIG91dC5wcmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0g
VXNlS2luZCB7CiAgICAgS25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8v
IFRoaXMgYml6YXJyZSB0eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRl
Y29kZSBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90
IG9iamVjdHMpLgogICAgIFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50
VXNlLAorICAgIEhlYXBCaWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVj
dFVzZSwKICAgICBNYXBPYmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1
NCwxMiBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtp
bmQpCiAgICAgICAgIHJldHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2Ug
U3ltYm9sVXNlOgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVz
ZToKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7Cisg
ICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7Cisg
ICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBj
YXNlIFByb21pc2VPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsK
ICAgICBjYXNlIERhdGVPYmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29s
IG1heUhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2
ZVR5cGVDaGVjayhraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBr
aW5kKQotewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2Fz
ZSBLbm93bkludDMyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJl
clVzZToKLSAgICBjYXNlIEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERv
dWJsZVJlcEFueUludFVzZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNl
S2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlu
bGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAg
Y2FzZSBLbm93blN0cmluZ1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0lu
dFVzZToKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6
CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RV
c2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5k
ZXggNWM2OWQxZDM4YzEuLjJmZDk3MWU2Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjAsNiArMjYwLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9y
TnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2Ug
SXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoK
ICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtNDgyLDcgKzQ4Myw5IEBAIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmlu
Z09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNl
OgogICAgICAgICAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2Ug
QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIE1hcE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1
YjQ5MjVjZmZiYy4uYzBmNGYyYjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbW1vblZhbHVlcy5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6
OmluaXRpYWxpemVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sq
IGJsb2MKICAgICBpbnRQdHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDMpOwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2Nr
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgYmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmgKaW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEw
IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZh
bHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVs
bHB0ciB9OwotICAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJv
IHsgbnVsbHB0ciB9OworI2VuZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAw
IH07CiAgICAgY29uc3QgdW5zaWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVl
IGJyYW5jaFdlaWdodHMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODAzNjM5MDdiOWUuLjUzMWQxM2Q2MzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1
Myw2ICsxMzUzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAg
ICAgIGNvbXBpbGVJc051bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
SXNCaWdJbnQ6CisgICAgICAgICAgICBjb21waWxlSXNCaWdJbnQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGNvbXBpbGVO
dW1iZXJJc0ludGVnZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjEzNSwxMSArMjEzOCwy
OCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAot
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJV
c2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50
MzIobGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQz
MihyaWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1
bGF0ZUFkZCh1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3Bl
Y3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7
CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7
CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIxNzYs
MjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAK
LSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMy
VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0lu
dDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50
MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVj
dWxhdGVTdWIodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1Nw
ZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4p
OworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0y
MTc3LDExICsyMjE0LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRV
c2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJ
bnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0
ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQg
PSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0
ID0gbV9vdXQuc3BlY3VsYXRlTXVsKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAg
ICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxw
dHIsIG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94Qmln
SW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJp
Z0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjg1
LDcgKzIzMzksMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwg
RnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9
IG1fbm9kZTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVl
KG5vZGUtPmNoaWxkMigpKTsKIApAQCAtMjU1NCwxMSArMjYyMiwxMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29tcGlsZVZhbHVlRGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7
Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uRGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjYzMywxOCArMjcwMiwyMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcGlsZVZhbHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAvLyBGSVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAg
ICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uTW9kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQo
KSk7Ci0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNl
LCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgIH0KQEAgLTI4MDksMTcgKzI4ODEsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbXBpbGVWYWx1ZVBvdygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAg
ICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgIC8vIEZJWE1FOiBtYXliZSBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgYmFzZSwgZXhwb25lbnQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVu
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChB
bnlCaWdJbnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBv
bmVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CiAgICAgfQpAQCAtMzIwMCw5ICszMjc2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
VmFsdWVCaXROb3QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAg
ICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
bkJpdE5vdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJpY2sg
cmVsaWVzIG9uIGRldGFpbHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEJpZ0ludDMyLCBhbmQg
d2lsbCBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYgd2UgbW92ZSBiaXRzIGFyb3VuZC4KKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAw
MDAwMTIpOworICAgICAgICAgICAgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAw
MGZmZmZmZmZmMDAwMDsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Io
b3BlcmFuZCwgbV9vdXQuY29uc3RJbnQ2NChtYXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFw
QmlnSW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIG9wZXJhbmQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjIwLDExICszMzEwLDIzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRv
IHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0QW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNDAsMTEg
KzMzNDIsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRPckJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgLy8gTm8gbmVlZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVk
IGJ5IGJpdEFuZAorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjYwLDEx
ICszMzc0LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdE1pc3NpbmdUYWcgPSBtX291dC5iaXRYb3IobGVmdCwgcmlnaHQp
OworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKHJlc3VsdE1pc3NpbmdU
YWcsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI4MCwxMSArMzQwNiwyOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0UlNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0aGluZyBzbWFy
dGVyIGhlcmUKKyAgICAgICAgICAgIC8vIFRoaW5ncyBhcmUgYSBiaXQgdHJpY2t5IGJlY2F1c2Ug
YSByaWdodC1zaGlmdCBieSBhIG5lZ2F0aXZlIG51bWJlciBpcyBhIGxlZnQtc2hpZnQgZm9yIEJp
Z0ludHMuCisgICAgICAgICAgICAvLyBTbyBldmVuIGEgcmlnaHQgc2hpZnQgY2FuIG92ZXJmbG93
LgorCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uVmFsdWVCaXRS
U2hpZnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjk2
LDI0ICszNDQwLDI1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5h
U2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAg
ICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50
MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsg
dGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGlj
cyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEJpdExT
aGlmdCgpCiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5zaGwoCiAgICAgICAgICAgICBs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJ
bnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAg
ICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0
SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMg
dXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAg
ICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0TFNoaWZ0KCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBh
IGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZS4KKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExT
aGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25C
aXRMU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTMzMzAsNyArMzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICAgICAgc2V0SW50MzIobV9vdXQubFNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFu
ZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8v
IEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGlu
Y2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoKQpAQCAtNzM1NSw2ICs3NTAwLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSAmIChTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KSkgewogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisjZW5kaWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbFBhdGggPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKQEAgLTczNjQsMTAgKzc1MTIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICAg
ICAgLy8gbm90TnVtYmVyIGNhc2UuCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlciwgY29udGludWF0aW9uKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlw
ZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qmln
SW50MzIpKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRp
ZgogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSksIHVuc3VyZShpc0NlbGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8g
V2UgaGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVy
aWMgc3RpbGwgZXhpc3RzLgpAQCAtODMyNCw3ICs4NDc2LDEwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAg
fHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQogICAgICAgICAgICAgfHwgbV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChBbnlCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVx
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTgzNjcsNyArODUyMiw5NCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAg
ICAgIC8vIE5vIG5lZWQgdG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBv
biBib3RoIHNpZGVzCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0
IHdpdGggaWYgKGxlZnQgPT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdo
dCBjaGVja3MgKHNlZSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAg
ICAvLyBUaGUgY29kZSB0aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBw
c2V1ZG8tY29kZToKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIo
bGVmdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNL
KGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmln
SW50OjplcXVhbHNUb0ludDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlm
IChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChK
U0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAg
ICAgQ0hFQ0soaXNIZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwo
SlNCaWdJbnQ6OmVxdWFscyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0lu
dDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNO
b3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNCaWdJbnQzMihsZWZ0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJl
KGxlZnRJc0JpZ0ludDMyKSwgdW5zdXJlKGxlZnRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBzZXQgdGhlIG9yZGVyIG9mIHRoZSBibG9ja3MgdG8gbWF4aW1pemUgZmFs
bHRocm91Z2gKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0JpZ0ludDMyKTsKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKGJvdGhBcmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElz
QmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMy
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiA9IG1f
b3V0LmFuY2hvcihtX291dC5lcXVhbChsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhvbmx5TGVm
dElzQmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0
aGVyQ2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVm
dCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1
bHRMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgcmlnaHQsIHVuYm94ZWRMZWZ0KSkpOworICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0
SXNOb3RCaWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldo
ZXRoZXJDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSwgdW5zdXJlKGxlZnRFcXVhbHNSaWdodCksIHVuc3VyZShs
ZWZ0SXNIZWFwQmlnSW50KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRFcXVh
bHNSaWdodCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0RXF1YWxzUmln
aHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNI
ZWFwQmlnSW50KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKHJpZ2h0SXNCaWdJbnQzMiksIHVu
c3VyZShyaWdodElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
cmlnaHRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJv
eEJpZ0ludDMyKHJpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0
SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90
QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVy
Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtC
aWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJp
ZyBpbnRzCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyODk1CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoSGVhcEJp
Z0ludCA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAgICAgICAgc2V0Qm9v
bGVhbihtX291dC5waGkoSW50MzIsIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiwgcmVzdWx0TGVmdElz
QmlnSW50MzIsIHJlc3VsdExlZnRFcXVhbHNSaWdodCwgcmVzdWx0UmlnaHRJc0JpZ0ludDMyLCBy
ZXN1bHRCb3RoSGVhcEJpZ0ludCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBr
aW5kKTsKQEAgLTg0NTAsMTEgKzg2OTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRd
IENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVz
ZQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtODU0MCw2ICs4NzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11
Y2ggc21hcnRlciBoZXJlLCBzZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUu
Zy4gU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50
eXBlZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSk7CiAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsm
XSAoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgewpAQCAtMTA1MDQsNyArMTA3NDcsMzEgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CiAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJl
c3VsdCwgcGF0Y2hwb2ludFJlc3VsdCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGls
ZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRo
IEJpZ0ludDMyLCB3ZSBzaG91bGQganVzdCBlbWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQp
CisgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXND
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2Vs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVu
c3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRp
b24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlz
Q2VsbFdpdGhUeXBlKHZhbHVlLCBtX25vZGUtPnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3Vs
YXRlZFR5cGVGb3JRdWVyeSgpLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50
MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICB9CiAgICAgdm9pZCBjb21waWxl
SXNDZWxsV2l0aFR5cGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpIHsKQEAgLTE0MjE0LDkgKzE0NDgxLDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBlbWl0QmluYXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhG
dW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAot
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBz
cGVjdWxhdGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAg
U25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQyODIsOCAr
MTQ1NTEsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBT
bmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
LnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDg5NSw3ICsx
NTE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVu
dHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8g
aWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3Ry
aW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMg
c3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJl
c3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAg
ICAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZp
bmVkCkBAIC0xNDkwNSw2ICsxNTE3Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAg
cmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2
YWx1ZSBpcyBudW1iZXIpIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91
YmxlKHZhbHVlKQorICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikg
eworICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAg
ICAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUg
PT0ganNUcnVlCiAgICAgICAgICAgICAvLyB9CkBAIC0xNDkxMiwxMyArMTUxODYsMTcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFw
QmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBu
b3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
bnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
SW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRv
dWJsZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
RG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgYmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisj
ZW5kaWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4g
cmVzdWx0czsKQEAgLTE0OTMyLDIwICsxNTIxMCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsK
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1
ZSwgcHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAg
ICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2Up
KTsKKyAgICAgICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkg
JiAoU3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBC
aWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFr
UG9pbnRlcihqc0VtcHR5U3RyaW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJ
bnRDYXNlLCBub3RTdHJpbmdPckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oaGVhcEJpZ0ludENhc2UsIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAg
ICAgIExWYWx1ZSBub25aZXJvQmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0
aCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJ
bnQpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RD
ZWxsQ2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmln
SW50Q2FzZSwgbm90Q2VsbENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0
OwogICAgICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGls
bFZhbGlkKCkpCiAgICAgICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFu
VHJ1ZTsKQEAgLTE0OTg4LDggKzE1MjY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
dW5ib3hEb3VibGUodmFsdWUpLCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJv
dmVuVHlwZShlZGdlKSAmIH5TcGVjQ2VsbCksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0lu
dDMyQ2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYmlnSW50MzJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZh
bHVlIGJpZ0ludDMyTm90WmVybyA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3IoYmlnSW50MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dEJpZ0ludDMyQ2FzZSwgY29udGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhub3REb3VibGVDYXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAg
ICBMVmFsdWUgbWlzY0lzVHJ1dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsK
ICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsK
QEAgLTE1NTk0LDEzICsxNTg4NiwxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0K
ICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAg
ICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsK
KyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAg
ICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIHN5bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVs
c2UgaWYgKGlzIG51bWJlcikgewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAg
ICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmln
aW50CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0
dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NjI4
LDYgKzE1OTIyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RC
aWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Js
b2NrIG5vdE51bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
Ym9vbGVhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRl
ZmluZWRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1NjgwLDcgKzE1OTc3LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNl
KTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHBy
b3ZlblR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwK
KyAgICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3Bl
Y0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJp
Z0ludENhc2UpLCB1bnN1cmUoc3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGJpZ0ludENhc2UsIHN5bWJvbENhc2UpOwpAQCAtMTU2OTYsOCArMTU5OTMsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJl
ckNhc2UpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNl
LCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1
ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVu
c3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJ
bnQzMkNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE51bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxs
OwogICAgICAgICBpZiAocHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAg
ICBpc051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpW
YWx1ZU51bGwpKTsKQEAgLTE2Mzg4LDE1ICsxNjY5MiwzMyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBP
cGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24p
CisgICAgTFZhbHVlIGxvd0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwg
bW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSk7CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9k
ZSk7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
OworCisgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZShyZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50
MzIocmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAg
dGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVy
bzsKKyAgICB9CisjZW5kaWYKKwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY1
ODIsNyArMTY5MDQsNzIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5h
ZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAg
IAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1Zh
bHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAg
ICAgICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OkJpZ0ludDMyTWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpC
aWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNW
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAg
aWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFs
KAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1
ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0
LmxTaHIoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVl
IGJveEJpZ0ludDMyKExWYWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LmJpdE9yKAorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1
ZSwgQjM6OkludDY0KSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNO
b3RBbnlCaWdJbnQoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVs
bFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0
eXBlLCB+U3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAg
IC8vIGlmIChpc0JpZ0ludDMyKQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAv
LyBpZiAoIWlzQ2VsbCkKKyAgICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0
dXJuICFpc0hlYXBCaWdJbnQKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBl
KSwgdW5zdXJlKGlzQmlnSW50MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZy
b21CbG9jayByZXR1cm5GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oaXNOb3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFs
dWUsIHR5cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHJldHVyblRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0lu
dCA9IG1fb3V0LmFuY2hvcihpc05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVy
blRydWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJ
TlQzMikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJv
dmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAt
MTY4OTQsOCArMTcyODEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgog
ICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdl
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdl
KTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAg
Y2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAg
ICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MDgxLDE4ICsxNzQ3
NiwzOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJv
bFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFs
dWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBp
c05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAg
IGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQp
KQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Nl
bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0
VG9GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291
dC5icmFuY2goaXNDZWxsKHZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUo
Y29udGludWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayByZXR1cm5Gb3JDZWxsID0gbV9vdXQuYW5jaG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5waGkoSW50MzIsIGRlZmF1bHRUb0ZhbHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1
ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAg
ICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3Bl
Y0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJu
IG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5i
aWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZh
bHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUg
aXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxU
b3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlw
ZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBp
c1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAg
ICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3
NTUwLDE2ICsxNzk2NSwzNSBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRn
ZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRn
ZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBl
ZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVW
YWx1ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7
CisgICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewot
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJ
bnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdl
LCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdl
IGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVk
Z2UgZWRnZSkKICAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVk
Z2UpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFs
dWUpLCBlZGdlLCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKHZhbHVlKSk7CiAgICAgfQogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3Vs
YXRlQmlnSW50MzIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQ
RV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90Qmln
SW50MzIodmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdl
IGVkZ2UpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVW
YWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7Cisg
ICAgfQorI2VuZGlmCisKICAgICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdl
LCBMVmFsdWUgY2VsbCkKICAgICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZShjZWxsKSwgZWRnZSwgU3BlY09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDIxNzE1
ZDNkZDIyLi45YmJhNzQzOWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JF
eGl0JiBleGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1f
dmFsdWVQcm9maWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9m
aWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7Cisg
ICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAg
ICAgfQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXpl
IGFuIG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggZDViOWFkMjJmOTUuLjdhZDA2NWRjYWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAg
ICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4
ID0gMDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+
aXNCaWdJbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9k
ZS5jZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVy
ZSB8fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGVi
YjQ0Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vw
ZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0Njlm
ZTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9j
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0
aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJ
c29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlu
bGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRl
eCA4MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApA
QCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAv
LyBCaWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICBy
ZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwg
MTApOworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJp
bmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYmYyOTg0YTEyODkuLmRmMTAzMjQzNGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAg
IGNhc2UgQmlnSW50VHlwZToKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBs
eVBhcmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKaW5kZXggZWI4MDgyZTliN2IuLjQ4ZWFhNDAzZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjg4LDcgKzY4OCw3IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93
aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsK
LSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAg
Ly8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAv
LyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAg
ICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQK
QEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1
ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICBy
ZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBu
dW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAv
LyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEh
dW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQg
PSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1
ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIo
KSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIo
KSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5
bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
IHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFs
dWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhp
cyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDog
Tm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBw
ZW5kKGp1bXAoKSk7CkBAIC03NTIsNiArNzU0LDE1IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJp
Z0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgbW92ZSh2YWx1
ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0
KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVz
dGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlz
Tm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBjb21wYXJlNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFs
dWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vs
c2UKQEAgLTc2Nyw3ICs3NzgsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5
SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8v
IEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8v
IGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3Ig
dmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVl
IGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgK
ICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFz
cXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC03NzcsNiArNzg4LDggQEAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWwKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8v
IH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5i
b3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgewor
ICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNl
IHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2
LDcgKzc5OSw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwg
PSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0
cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJp
Z0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNo
SWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyAr
ODMwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5j
aFB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0
ZWRJbW1QdHIoanNFbXB0eVN0cmluZyh2bSkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsK
IAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7
CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8s
IEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkp
KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCkBAIC04NDIsNiArODU1LDE1IEBAIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2
bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgfQogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90Qmln
SW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1
ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0
Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25a
ZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90Qmln
SW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1
YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0
cnVlKSkpKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggNjY4ZjBlNWFjMTUuLmRiNjQ4YWJiYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MjksNyArOTI5LDM3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1w
R1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKdW1w
IGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVy
c01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJl
ciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9kZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBi
cmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVt
YmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJldHVybiBiaWdJbnQzMjsKKyAgICB9CisKKyAgICBK
dW1wIGJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVt
cEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOwor
ICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQo
RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAg
IH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihKU1ZhbHVlUmVn
cyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgfQorICAg
IEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJl
ZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFu
Y2g2NChOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFn
KSk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIC8vIEZJWE1FOiByZW5h
bWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0
byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKICAg
ICB7CiAgICAgICAgIHJldHVybiBicmFuY2g4KApAQCAtOTUxLDEzICs5ODEsMTQgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQ
UiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAg
ICAgfQotICAgIAorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFy
IHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJy
YW5jaElmU3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQ
UiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAg
ICBKdW1wIGJyYW5jaElmU3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5
cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQ
UlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlw
ZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBi
cmFuY2hJZlR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90
QmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwg
QmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQorICAg
IEp1bXAgYnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJ
ZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwg
SlNGdW5jdGlvblR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBj
ZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUp
OyB9CiAgICAgCkBAIC0xMzM4LDYgKzEzNjksMTkgQEAgcHVibGljOgogICAgICAgICAKICAgICAg
ICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgdW5ib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAg
IHsKKyAgICAgICAgdXJzaGlmdDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdw
cik7CisgICAgfQorCisgICAgdm9pZCBib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAg
ICAgICAgbHNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAg
ICAgICAgb3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBncHIpOworICAg
IH0KICNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE3MTgsNyArMTc2Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIHN0cmluZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAg
ICAgIC8vICAgICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKQEAg
LTE3MjksNiArMTc3Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QK
ICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBib29sZWFuKSB7CiAgICAgICAgIC8vICAgICByZXR1
cm4gYm9vbGVhbgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAg
IC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgIC8vICAg
ICByZXR1cm4gdW5kZWZpbmVkCiAgICAgICAgIC8vIH0KQEAgLTE3NjAsMTAgKzE4MDYsMTAgQEAg
cHVibGljOgogCiAgICAgICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogCi0gICAgICAgIEp1bXAg
bm90QmlnSW50ID0gYnJhbmNoSWZOb3RCaWdJbnQoY2VsbEdQUik7CisgICAgICAgIEp1bXAgbm90
SGVhcEJpZ0ludCA9IGJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxsR1BSKTsKICAgICAgICAgZnVu
Y3RvcihUeXBlb2ZUeXBlOjpCaWdJbnQsIGZhbHNlKTsKIAotICAgICAgICBub3RCaWdJbnQubGlu
ayh0aGlzKTsKKyAgICAgICAgbm90SGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgICAgICBmdW5j
dG9yKFR5cGVvZlR5cGU6OlN5bWJvbCwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgbm90Q2Vs
bC5saW5rKHRoaXMpOwpAQCAtMTc3OSw2ICsxODI1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgSnVt
cCBub3RCb29sZWFuID0gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MsIHRlbXBHUFIpOwogICAgICAg
ICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJvb2xlYW4sIGZhbHNlKTsKICAgICAgICAgbm90Qm9vbGVh
bi5saW5rKHRoaXMpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBKdW1wIG5vdEJpZ0lu
dDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOwor
ICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RC
aWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5
cGVvZlR5cGU6OlVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGM2ZTYxYjg5YmY5Li5kNWVhOTlmMzNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtMzcwLDYgKzM3MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsKQogICAgICAg
ICBERUZJTkVfT1Aob3BfaXNfYm9vbGVhbikKICAgICAgICAgREVGSU5FX09QKG9wX2lzX251bWJl
cikKKyAgICAgICAgREVGSU5FX09QKG9wX2lzX2JpZ19pbnQpCiAgICAgICAgIERFRklORV9PUChv
cF9pc19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9pc19jZWxsX3dpdGhfdHlwZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2plcV9udWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NjcxNjY2MWRmNGYuLjQxZjZiZjg0OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUy
Nyw2ICs1MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX3Vu
ZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pc19ib29sZWFuKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9p
c19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jp
Z19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVj
dChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRo
X3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxs
KGNvbnN0IEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcAppbmRleCAzYTMyYzMyNjE4OS4uZjUwYzMwMzA2ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDc2LDYgKzQ3Niw3IEBAIHZv
aWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFy
aXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1
Y3Rpb24sIG5lZ2F0ZUlDKTsKKyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNh
bGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBh
IEJpZ0ludAogICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudElu
c3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5l
Z2F0ZSk7CiB9CiAKQEAgLTQ4NCw2ICs0ODUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVn
YXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVROZWdJQyogbmVnSUMgPSBiaXR3
aXNlX2Nhc3Q8SklUTmVnSUMqPihtX2luc3RydWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvbikpOworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9z
ZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50
CiAgICAgZW1pdE1hdGhJQ1Nsb3c8T3BOZWdhdGU+KG5lZ0lDLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uQXJpdGhOZWdh
dGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGZkZTAwYmNjOGM5Li5iY2IzZWI4
Y2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJl
ciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yODMsNiArMjgzLDM0
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5t
X29wZXJhbmQ7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Cisg
ICAgSnVtcCBpc0NlbGwgPSBicmFuY2hJZkNlbGwocmVnVDApOworCisgICAgbW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrKSwgcmVnVDEpOworICAgIGFuZDY0KHJlZ1QxLCBy
ZWdUMCk7CisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkJpZ0ludDMyVGFnKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
IHsgcmVnVDAgfSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworCisgICAgaXNDZWxsLmxpbmso
dGhpcyk7CisgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZWdUMCk7Cisg
ICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKKworICAgIGRvbmUu
bGluayh0aGlzKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisjZWxzZQorICAg
IC8vIElmIHdlIG9ubHkgaGF2ZSBIZWFwQmlnSW50cywgdGhlbiB3ZSBlbWl0IGlzQ2VsbFdpdGhU
eXBlIGluc3RlYWQgb2YgaXNCaWdJbnQuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CkBAIC01NzAsMjgg
KzU5OCw1MSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaQogICAgIFZpcnR1YWxSZWdpc3RlciBz
cmMyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMx
LCByZWdUMCwgc3JjMiwgcmVnVDEpOwotICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFy
ZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCisKKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2Ug
ZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91
YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICByZXN1
bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZ290byBkb25l
OworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgZ290byBz
bG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8KKworICAgIC8v
IFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91
YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJl
IG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVy
CisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVu
IGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhp
Z2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAx
PDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcgb25seSBk
b3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAg
ICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93
ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDIpOworICAgIGFk
ZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCByZWdUNSk7
CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0KEFib3Zl
T3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBy
ZWdUMSwgcmVnVDUpOworICAgIEp1bXAgZG9uZSA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdU
NSk7CisKICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8v
IEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFu
ZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBj
b3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQz
Miwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncwor
I2Vsc2UKKyAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmlu
Z3MpLgogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMikpOwotICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMg
YSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBh
bmQgdGhlbiB0ZXN0Ci0gICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9
IGJyYW5jaElmSW50MzIocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJl
Z1QwKSk7Ci0gICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNo
SWZJbnQzMihyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsK
LSAgICByaWdodE9LLmxpbmsodGhpcyk7CiAKLSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKQotICAgICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QxLCByZWdU
MCwgcmVnVDApOwotICAgIGVsc2UKLSAgICAgICAgY29tcGFyZTY0KE5vdEVxdWFsLCByZWdUMSwg
cmVnVDAsIHJlZ1QwKTsKLSAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1Qw
IH0pOwotCi0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgIGRvbmUubGluayh0
aGlzKTsKKyAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkK
KyAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTY0KDEpLCByZWdUNSk7CisgICAgYm94Qm9vbGVhbihy
ZWdUNSwgSlNWYWx1ZVJlZ3MgeyByZWdUNSB9KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGRzdCwgcmVnVDUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjE0LDI0ICs2NjUsNDggQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3AKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJl
Z1QwLCBzcmMyLCByZWdUMSk7CiAKLSAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMg
KHRvIGNvdmVyIHN0cmluZ3MpLgorICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1p
bmcgJ3R5cGUnIHRvIGJlIFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmln
aHQgaXMgRG91YmxlKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmln
aHQpCisgICAgICAgZ290byB0YWtlbjsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlz
IENlbGwpCisgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICov
CisKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJp
Z2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhh
dCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFu
Y2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJ
bnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2
aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBh
bGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2
aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCBy
ZWdUMik7CisgICAgbW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1Qy
KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigx
KSwgcmVnVDUpOworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2g2NChBYm92ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9
IGJyYW5jaDY0KEVxdWFsLCByZWdUMCwgcmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVP
cFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdl
dCk7CisKICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8v
IEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFu
ZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBj
b3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQz
Miwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncwor
I2Vsc2UKKyAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmlu
Z3MpLgogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmQ2VsbChyZWdUMikpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRv
dWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0
aGVuIHRlc3QKLSAgICAvLyBpZiBpdCdzIGEgZG91YmxlLgotICAgIEp1bXAgbGVmdE9LID0gYnJh
bmNoSWZJbnQzMihyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDAp
KTsKLSAgICBsZWZ0T0subGluayh0aGlzKTsKLSAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZklu
dDMyKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwotICAg
IHJpZ2h0T0subGluayh0aGlzKTsKLQotICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVx
VHlwZTo6U3RyaWN0RXEpCi0gICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCBy
ZWdUMCksIHRhcmdldCk7Ci0gICAgZWxzZQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVx
dWFsLCByZWdUMSwgcmVnVDApLCB0YXJnZXQpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0
cmljdEVxVHlwZTo6TlN0cmljdEVxKSB7CisgICAgICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQp
OworICAgICAgICBhcmVFcXVhbC5saW5rKHRoaXMpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC02ODYsNyArNzYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
c3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwo
cmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0Jp
Z0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IGIxMWY2NTVmY2I2Li5j
ODA2MTU5ZjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtMjg4LDYgKzI4OCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29s
KGRzdCwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IElu
c3RydWN0aW9uKikKK3sKKyAgICAvLyBXZSBlbWl0IGlzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQs
IHNpbmNlIEJpZ0ludDMyIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IHBsYXRmb3Jtcy4KKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9p
c19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0
aFR5cGU+KCk7CkBAIC04NjYsNyArODcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJp
Yyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKHNy
YywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxs
KHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAgaXNC
aWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIyYjlhMWQxZTljLi44MDA4
MTQ4MTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0xMjk2LDYgKzEyOTYsMTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY28KICAgICByZXR1
cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZ2xvYmFsT2JqZWN0LCBzcmMxLCBzcmMyKTsKIH0KIAor
I2lmIFVTRShCSUdJTlQzMikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVF
cUhlYXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
aGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChoZWFwQmlnSW50LT5pc0hlYXBCaWdJbnQoKSk7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPihoZWFwQmlnSW50KS0+ZXF1YWxzVG9J
bnQzMihzbWFsbEludCk7Cit9CisjZW5kaWYKKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIGNvbnN0IEpTVmFsdWUqIHZhbHVl
cywgaW50IHNpemUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjgx
NSw2ICsyODI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gcHJvZmls
ZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxl
KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJh
dGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjgyNyw4ICsyODQxLDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVz
KHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChw
cmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFs
dWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIC12YWx1ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXMo
dm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHBy
aW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjgzNiw2ICsyODU4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogCiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2Fs
bCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEg
QmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0yODUwLDEwICsyODczLDIwIEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAg
ICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgYXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJpbVZh
bHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg2NCw2ICsyODk3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25W
YWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFu
ZCwgSklUTmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
QEAgLTI4ODQsOSArMjkxOCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAg
IEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAot
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlm
ICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hl
YXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5
TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgfQpAQCAtMjg5OCw2ICsyOTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1F
OiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwg
c2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTE3LDkgKzI5NjMsMTgg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3Bl
cmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJ
bnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51
cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8v
IEZJWE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBu
b3QgdGhlIHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBp
ZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgcHJpbVZhbHVl
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBp
ZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpKTsK
IAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjAwZmNhMjlkYzIuLjIw
OWIzYzNmOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApA
QCAtMjA1LDYgKzIwNSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVF
cShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkCiBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKICNpZiBVU0UoSlNWQUxVRTY0
KQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5B
TDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0lu
dDMyKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50
KSBXVEZfSU5URVJOQUw7CiAjZWxzZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0
KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAppbmRleCA1MjQzNWE2NjEyMC4uMmEyYmI5OWY5
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVB
c21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fSlNW
QUxVRTY0IDAKICNlbmRpZgogCisjaWYgVVNFKEJJR0lOVDMyKQorI2RlZmluZSBPRkZMSU5FX0FT
TV9CSUdJTlQzMiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCisjZW5k
aWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAx
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IDEwMjk1NTQyMTg5Li4xZGQwZGVmOWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTk2LDYgKzE5NiwxMSBAQCBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBWYWx1ZU51bGwgICAgICAg
PSBjb25zdGV4cHIgSlNWYWx1ZTo6VmFsdWVOdWxsCiAgICAgY29uc3QgVGFnTnVtYmVyICAgICAg
ID0gY29uc3RleHByIEpTVmFsdWU6Ok51bWJlclRhZwogICAgIGNvbnN0IE5vdENlbGxNYXNrICAg
ICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpOb3RDZWxsTWFzaworICAgIGlmIEJJR0lOVDMyCisgICAg
ICAgIGNvbnN0IFRhZ0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFsdWU6OkJpZ0ludDMyVGFnCisg
ICAgICAgIGNvbnN0IE1hc2tCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMk1h
c2sKKyAgICBlbmQKKyAgICBjb25zdCBMb3dlc3RPZkhpZ2hCaXRzID0gY29uc3RleHByIEpTVmFs
dWU6Okxvd2VzdE9mSGlnaEJpdHMKIGVsc2UKICAgICBjb25zdCBJbnQzMlRhZyA9IGNvbnN0ZXhw
ciBKU1ZhbHVlOjpJbnQzMlRhZwogICAgIGNvbnN0IEJvb2xlYW5UYWcgPSBjb25zdGV4cHIgSlNW
YWx1ZTo6Qm9vbGVhblRhZwpAQCAtNTIxLDYgKzUyNiw3IEBAIGNvbnN0IEpTRnVuY3Rpb25UeXBl
ID0gY29uc3RleHByIEpTRnVuY3Rpb25UeXBlCiBjb25zdCBBcnJheVR5cGUgPSBjb25zdGV4cHIg
QXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHByIERlcml2ZWRBcnJh
eVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9iamVjdFR5cGUK
K2NvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRUeXBlCiAKICMgVGhl
IHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBwYXJ0aWN1bGFyIG9y
ZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNoIHN0YXRlbWVudCBp
biBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2MjY1MmE2
NjIzNS4uZjU1YzU3NTY2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMzAzLDYgKzEzMDMsMTIg
QEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogZW5kKQogCiAKKyMgT24gMzItYml0IHBsYXRmb3Jt
cyBCSUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkLCBzbyB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dp
dGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2lz
X2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
KyAgICBub3RTdXBwb3J0ZWQoKQorZW5kKQorCisKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2Nl
bGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQwLCB0MykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMzQxNjgwYWJlZTguLjljMmM1
NWQyNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTg0NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lz
X3VuZGVmaW5lZF9vcl9udWxsLCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0
CiBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVx
dWFsaXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIGNyZWF0ZUJvb2xlYW4pCiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUl
LCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAg
ICAgIGdldChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQyLCB0MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbwor
ICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
ICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQp
OworICAgICAgICAjIGlmIChyZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAg
ICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0Owor
CisgICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCBy
aWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRo
YXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJh
bmNoSWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMg
YW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywg
bGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1i
ZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAg
ICAgICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCiAgICAgICAg
IG1vdmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAg
ICAgICAgbW92ZSBMb3dlc3RPZkhpZ2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAg
ICAgICBhZGRxIHQ1LCB0MworICAgICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgMSwg
dDUKKyAgICAgICAgYnFhZXEgdDMsIHQ1LCAuc2xvdworCisgICAgICAgIGNxZXEgdDAsIHQxLCB0
NQorICAgICAgICBidHFueiB0NSwgdDUsIC5kb25lICNpcyB0aGVyZSBhIGJldHRlciB3YXkgb2Yg
Y2hlY2tpbmcgdDUgIT0gMCA/CisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlz
IGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtl
cyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwp
CisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xv
dwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQw
LCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJl
clRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAu
cmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKLSAgICAgICAg
b3JxIFZhbHVlRmFsc2UsIHQwCi0gICAgICAgIHJldHVybih0MCkKKworICAgIC5kb25lOgorICAg
ICAgICBjcmVhdGVCb29sZWFuKHQ1KQorICAgICAgICByZXR1cm4odDUpCiAKICAgICAuc2xvdzoK
ICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtODcxLDMz
ICs4OTUsNTMgQEAgZW5kCiAKIAogc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVu
ZCkKKyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAog
CiBzdHJpY3RFcU9wKG5zdHJpY3RlcSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCByZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChv
cGVyYW5kKSB4b3JxIFZhbHVlVHJ1ZSwgb3BlcmFuZCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1
YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikK
K21hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwganVt
cElmRXF1YWwsIGp1bXBJZk5vdEVxdWFsKQogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2Rl
TmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAg
ICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQzLCB0MSkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBk
bworICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAg
ICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgaWYgKGxlZnQgPT0gcmlnaHQpCisg
ICAgICAgICMgICAgIGdvdG8ganVtcFRhcmdldDsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxs
IHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAg
ICMgZ290byBvdGhlckp1bXBUYXJnZXQKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVt
ZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBi
cmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYg
d2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNr
IGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBp
dCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAg
ICAgICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0
cyBvbmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3Zl
IG9yIGVxdWFsIDE8PDUwLgogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQy
CisgICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUK
KyAgICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQy
LCB0MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cK
KworICAgICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAg
ICAgICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChz
aW5jZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRv
IGEgbm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENl
bGxNYXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAg
ICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFh
ZXEgdDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywg
LnNsb3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAu
anVtcFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAg
ICAgIGp1bXAobV90YXJnZXRMYWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90
YXJnZXRMYWJlbCwgZGlzcGF0Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFs
KGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywzMyArOTUx
LDM2IEBAIGVuZAogCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0
ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQpCi0KKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1w
KHRhcmdldExhYmVsKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRj
aCkgZGlzcGF0Y2goKSBlbmQpCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9w
Sm5zdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQpCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRj
aCkgZGlzcGF0Y2goKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRj
aCkganVtcCh0YXJnZXRMYWJlbCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8l
b3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQot
ICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFBy
b2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5
cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQKIAotICAgICAgICBnZXQobV9zcmNEc3Qs
IHQwKQotICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQx
LCB0MikKLSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJx
YiB0MywgbnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xv
dykKLSAgICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0
MCwgOF0KLSAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKLSAgICAg
ICAgZGlzcGF0Y2goKQorICAgIGdldChtX3NyY0RzdCwgdDApCisgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MQorICAgIG1ldGFkYXRhKHQyLCB0MykKKyAgICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRh
dGEgaW4gdDIKKyAgICAjIEZJWE1FOiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBh
dGggZm9yIEJpZ0ludDMyLiBXZSBjb3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBp
biBoZXJlIGZvciB0aGVtLgorICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgIGludGVn
ZXJPcGVyYXRpb24odDEsIC5zbG93KQorICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgc3RvcmVx
IHQxLCBbY2ZyLCB0MCwgOF0KKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50
KQorICAgIGRpc3BhdGNoKCkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF8lb3Bjb2RlTmFtZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCisKIGVu
ZAogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfdG9fbnVtYmVyLCBPcFRvTnVtYmVyLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQpAQCAtMTI4MCw2ICsxMzI3LDIwIEBAIGxsaW50
T3BXaXRoUmV0dXJuKG9wX2lzX251bWJlciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIHJldHVybikKIGVuZCkKIAogCitsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdf
aW50LCBPcElzQmlnSW50LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAg
Z2V0KG1fb3BlcmFuZCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwg
dDApCisgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICBjYmVxIEpT
Q2VsbDo6bV90eXBlW3QwXSwgSGVhcEJpZ0ludFR5cGUsIHQxCisgICAgb3JxIFZhbHVlRmFsc2Us
IHQxCisgICAgcmV0dXJuKHQxKQorLm5vdENlbGxDYXNlOgorICAgIGFuZHEgTWFza0JpZ0ludDMy
LCB0MAorICAgIGNxZXEgdDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgIG9ycSBWYWx1ZUZhbHNlLCB0
MAorICAgIHJldHVybih0MCkKK2VuZCkKKwogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93
aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBy
ZXR1cm4pCiAgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQwKQogICAg
IGdldChtX29wZXJhbmQsIHQxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcAppbmRleCA4NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVlMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC04Myw2ICs4MywxMCBAQCBj
b25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRp
ZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0
dXJuIGlkZW50aWZpZXI7CiAKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7CisgICAgSlNWYWx1ZSBiaWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0s
IGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRo
cm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisKICAgICAvLyBGSVhNRTogV2UgYXJlIGFsbG9jYXRp
bmcgYSBKU0JpZ0ludCBqdXN0IHRvIGJlIGFibGUgdG8gdXNlCiAgICAgLy8gSlNCaWdJbnQ6OnRy
eUdldFN0cmluZyB3aGVuIHJhZGl4IGlzIG5vdCAxMC4KICAgICAvLyBUaGlzIGNyZWF0ZXMgc29t
ZSBHQyBwcmVzc3VyZSwgYnV0IHNpbmNlIHRoZXNlIGlkZW50aWZpZXJzCkBAIC05MCwxMSArOTQs
MTUgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1h
bElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICAvLyBpdCB3b250IGJlIG11Y2ggcHJv
YmxlbWF0aWMsIGdpdmVuIHN1Y2ggY2FzZXMgYXJlIHZlcnkgcmFyZS4KICAgICAvLyBUaGVyZSBp
cyBhIGxvdCBvZiBvcHRpbWl6YXRpb25zIHdlIGNhbiBhcHBseSBoZXJlIHdoZW4gbmVjZXNzYXJ5
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MjcK
LQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBKU0JpZ0lu
dCogYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0
cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMs
IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwotICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcodm0sIGJpZ0ludCwgMTApKSk7CisgICAgSlNC
aWdJbnQqIGhlYXBCaWdJbnQ7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNC
aWdJbnQzMigpKQorICAgICAgICBoZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGhl
YXBCaWdJbnQgPSBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisKKyAgICBtX2lkZW50aWZpZXJzLmFw
cGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZt
LCBoZWFwQmlnSW50LCAxMCkpKTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCA3YTY0MmMwMjZmZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNp
bmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmZmM2Y3OTcyMGIuLjVmMGQ1NDg0ODIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlv
IExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzUsMTggKzc1LDYgQEAgdm9pZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBCaWdJbnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSkKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotc3RhdGljIGJvb2wgaXNTYWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3VtZW50KQot
ewotICAgIGlmIChhcmd1bWVudC5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgaWYgKCFhcmd1bWVudC5pc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBkb3VibGUgbnVtYmVyID0gYXJndW1lbnQuYXNEb3VibGUoKTsKLSAgICByZXR1cm4gdHJ1bmMo
bnVtYmVyKSA9PSBudW1iZXIgJiYgc3RkOjphYnMobnVtYmVyKSA8PSBtYXhTYWZlSW50ZWdlcigp
OwotfQotCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBBU1NFUlQoYXJndW1lbnQuaXNQ
cmltaXRpdmUoKSk7CkBAIC05NCwyMCArODIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRv
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiAg
ICAgCiAgICAgaWYgKGFyZ3VtZW50LmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXJndW1lbnQpOwotICAgIAorCisgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigp
KSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgYXJndW1lbnQuYXNCb29sZWFuKCkpKTsKKyNlbHNl
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoYXJndW1l
bnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVj
dCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JO
dWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKGFy
Z3VtZW50LmlzQm9vbGVhbigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFu
KCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJn
dW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0
eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50
LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJp
bmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9i
amVjdCwgdmlldykpOwotICAgIH0pKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJh
dGlvbiJfcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxC
aWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKQEAgLTExOSwyMCArMTExLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
CiAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgaWYgKHByaW1pdGl2ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIGlmICghaXNTYWZlSW50ZWdl
cihwcmltaXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzYWZlIGludGVn
ZXIiX3MpKTsKLSAgICAgICAgCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgaWYg
KHByaW1pdGl2ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisgICAgaWYg
KHByaW1pdGl2ZS5pc0ludDMyKCkpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBwcmltaXRpdmUu
YXNJbnQzMigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9
CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc1VJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzVUlu
dDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91Ymxl
IG51bWJlciA9IHByaW1pdGl2ZS5hc0RvdWJsZSgpOworICAgICAgICBpZiAodHJ1bmMobnVtYmVy
KSAhPSBudW1iZXIgfHwgc3RkOjphYnMobnVtYmVyKSA+IG1heFNhZmVJbnRlZ2VyKCkpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGEgc2FmZSBpbnRlZ2VyIl9zKSk7CiAKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyT3JIZWFwLCB2bSwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQotICAgIAor
CiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmlt
aXRpdmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50T2JqZWN0LmNwcAppbmRleCBlZTAwNDVkYWM5Ni4uZTYxOTgyYjkzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdt
YWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3
IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShCaWdJbnRPYmplY3Qp
OwogY29uc3QgQ2xhc3NJbmZvIEJpZ0ludE9iamVjdDo6c19pbmZvID0geyAiQmlnSW50IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCaWdJbnRP
YmplY3QpIH07CiAKIAotQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBiaWdJbnQpCitCaWdJbnRP
YmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBCaWdJbnRP
YmplY3Qodm0sIGdsb2JhbE9iamVjdC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9i
amVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGJpZ0ludCk7CkBAIC00OSw3ICs0OSw3IEBAIEJpZ0lu
dE9iamVjdDo6QmlnSW50T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9
CiAKLXZvaWQgQmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQmlnSW50KiBi
aWdJbnQpCit2b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVl
IGJpZ0ludCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JpZ0ludE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50T2JqZWN0LmgKaW5kZXggNDRmYzc2ZmJkZjkuLmE2MzU0YTE2ZWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4u
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJP
YmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmln
SW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0lu
dCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVj
dDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
QmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCBkYjRhNjE4ODk5ZC4u
ZmI1YjlmYWIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDEyICs3OSwyNCBAQCB2b2lkIEJpZ0ludFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdGhp
c1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogaGVhcC1hbGxvY2F0
aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJlLWltcGxlbWVudGluZyB0b1N0
cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0aGF0IEknbSBkZWZlcnJpbmcg
aXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIoKSkKKyAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0aGlzVmFsdWUuYmlnSW50MzJB
c0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7CiAgICAg
ICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+KHZtLCB0
aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCi0gICAgICAgICAgICByZXR1
cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAgICAgICAgaWYgKEJpZ0ludE9i
amVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhp
c1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBiaWdJbnRP
YmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBp
ZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKyAgICAg
ICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk5LDggKzExMSw2IEBAIHN0YXRpYyBKU1ZhbHVlIGJp
Z0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJ
bnRPYmplY3QiX3MpOwogCi0gICAgQVNTRVJUKHZhbHVlKTsKLQogICAgIGludDMyX3QgcmFkaXgg
PSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKQEAgLTExOCw2ICsxMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0lu
dFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBpbnRy
b2R1Y2UgdGhlIHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5kcyBhbmQgc2ltaWxhciB0aGlu
Z3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxl
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJ
bXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NGQ4ZmI0YjQyMi4uMjRlODgz
N2QzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMu
aCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNDcwLDEzICs0NjksOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQogICAg
IEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBKU1Zh
bHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBW
YXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlh
bnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQg
PSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAgUkVU
VVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0p
OwogfQogCkBAIC00ODUsMTMgKzQ3OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMp
CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwogICAg
IEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwot
ICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGdsb2Jh
bE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUg
cmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0
VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsKICAg
ICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQs
IHsgfSk7CiB9CiAKQEAgLTUwOCw3ICs0OTcsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQ
cm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEK
ICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxl
OwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1iZXIo
KSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAo
cmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMy
KCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigp
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAob3Bl
cmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDMy
T3ZlcmZsb3coKTsKQEAgLTUyOCwxMCArNTI1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQ
cm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEK
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50
KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UKIHN0
YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0
YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0Niw4ICs1NDAsMjEgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJh
bmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VY
Q0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZh
bHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7
CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIFJF
VFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBcml0
aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHBy
aW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRo
UHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAg
ICAgfSk7CkBAIC01ODUsOCArNTkyLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQot
ICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1
bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50
KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxz
ZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwOCwx
MyArNjE5LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpT
VmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAg
ICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVl
IHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3Vs
dFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZh
cmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91
YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAK
QEAgLTY1MCw3ICs2NTYsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAv
LyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRv
IGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVy
LiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0Jp
Z0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhl
c2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRo
ZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcyLDI0
ICs2NzgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwgbGVm
dCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmlj
ID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0
ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBj
LCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAt
IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklM
SU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9w
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAg
fSk7CkBAIC03MDEsMjYgKzY5MSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBH
RVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0
byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRp
dmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsK
LSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwot
ICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhy
ZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpA
QCAtNzMyLDI0ICs3MDQsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0
ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJp
Z2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAg
ICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsK
LSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRV
Uk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1OCwyNSArNzE1LDkgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93Pigp
OwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAg
ICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAg
YXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihy
ZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVu
dGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6
Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3co
YSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2xzaGlmdCkKQEAgLTc4NSwyMiArNzI2LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBK
U1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklM
RUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxp
bnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3JzaGlmdCkKQEAgLTgwOSwyMiArNzM4LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBK
U1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAg
IFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQot
ICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJp
YykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENI
RUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg1MCw3OSArNzY3LDQ3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBH
RVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQg
PSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9G
SUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAg
YXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdF
VF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcg
b3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90
PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmlj
ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9
IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpz
VmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUo
KTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24u
IikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQz
Ml90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGds
b2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVy
aWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9i
YWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdp
c2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0
ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6Omdl
dDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMp
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMzNDU0NDJmNTQuLjQ2YTli
MTAxNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25U
eXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsK
LSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogSlNCaWdJ
bnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4OCwzNCArMTg4LDIxIEBAIEpT
VmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMp
OwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xlRGlnaXRWYWx1ZUZvclN0
cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAg
ICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAgICAgIERpZ2l0IHJEaWdpdCA9
IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0K
LQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCitKU1ZhbHVlIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3
IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAg
ICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczgoKSwgcy5s
ZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwg
cy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiB9CiAKLUpTQmlnSW50
KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUs
IFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgs
IEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQogewogICAgIGlm
IChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwg
cy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwg
UGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gcGFyc2VJbnQo
Z2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgs
IHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiB9
CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQogewogICAgIHJl
dHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNl
cHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQxLDIzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVt
YWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0lu
CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRo
aW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29u
c3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJz
b2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpVbnNpZ25lZCk7CisgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVu
Z3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0
aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENv
bnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCAxKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlU3ViT25lKGdsb2JhbE9i
amVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxP
YmplY3QsIHgsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6
YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSkKQEAgLTUzMiw3ICs1MjYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSQogICAgIGlmICh4
LT5zaWduKCkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAKLSAgICAvLyB4ICYgKC15
KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5
LTEpCiAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB5LCB5
LT5sZW5ndGgoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAg
ICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBAIC0xNjQ0LDcgKzE2MzgsNyBA
QCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVy
aWMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgdW5z
aWduZWQgcmFkaXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJldmlzaXQgdXNhZ2Ugb2YgVmVj
dG9yIGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5nOwog
CiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwpAQCAtMTgwMiw3ICsxNzk2
LDcgQEAgYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
clR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9k
ZSBlcnJvclBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJv
clBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAKQEAgLTE4MTAsNyArMTgwNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAg
ICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0pKQogICAgICAg
ICArK3A7CiAKLSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJhY3RlcnMKKyAgICAv
LyBDaGVjayBSYWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFb
cF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFb
cCArIDFdLCAnYicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwg
dm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ246
OlVuc2lnbmVkLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwpAQCAtMTgyNCwy
NCArMTgxOCwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogCiAgICAgUGFyc2VJbnRTaWdu
IHNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlmIChwIDwgbGVuZ3RoKSB7Ci0g
ICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgZWxz
ZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CiAg
ICAgICAgICAgICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7CiAgICAgICAgICAgICArK3A7
Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3BdID09ICcrJykKKyAgICAgICAg
ICAgICsrcDsKICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoZ2xvYmFs
T2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwot
Ci0gICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKLSAgICAgICAgcmVzdWx0LT5z
ZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBw
LCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
clR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWdu
ZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VN
b2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKK0pTVmFsdWUg
SlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
Q2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24g
c2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDAp
OwogICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1Miw3ICsxODQwLDcgQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25z
KQogICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5
bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50
IikpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
ICAgICB9CiAKICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCkBAIC0xODY2LDQ0ICsxODU0
LDg0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBsZW5ndGggPSBlbmRJbmRleCAr
IDE7CiAKLSAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMy
LCAwKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKLQotICAgIHVuc2ln
bmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWdu
ZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdB
JyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihn
bG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlm
IHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNh
bm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFs
aXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBs
ZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAo
ZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0g
ZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtp
XSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAg
ICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19j
YXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworI2VuZGlmCiAg
ICAgfQogCi0gICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQg
PyB0cnVlIDogZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJn
ZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJ
TlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRj
aCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIg
PSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZv
ckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICAgIGxl
bmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2Ogor
ICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAotICAg
IEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBh
cnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBh
cnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJh
ZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdB
JyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgaW5p
dGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBsZW5ndGgpIHsKKyAgICAg
ICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgQ3Jhc2hPbk92
ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsraSwgKytwKSB7CisgICAg
ICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gcmFkaXg7
CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtwXSA8IGxpbWl0MCkKKyAg
ICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAgICAgICAgICAgICAgICBk
aWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3Bd
ID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRh
dGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlm
IChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAg
ICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3Io
Z2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwgbXVsdGlwbGllci51bnNh
ZmVHZXQoKSk7CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7CisgICAgICAgICAgICBpZiAo
cCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQYXJzZUludFNpZ246
OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IGRpZ2l0KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb20odm0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGhlYXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwg
aW5pdGlhbExlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOworICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdl
IGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5v
dCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgaWYgKCFoZWFw
UmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBo
ZWFwUmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworICAg
ICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2Fz
dDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdp
dCkpOworICAgIH0KIAotICAgIHJldHVybiBudWxscHRyOworICAgIGhlYXBSZXN1bHQtPnNldFNp
Z24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAgcmV0dXJuIGhlYXBSZXN1bHQt
PnJpZ2h0VHJpbSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRp
Z2l0KHVuc2lnbmVkIG4pCkBAIC0xOTI3LDE4ICsxOTU1LDIwIEBAIGJvb2wgSlNCaWdJbnQ6OmVx
dWFsc1RvTnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAgQVNTRVJUKG51bVZhbHVlLmlz
TnVtYmVyKCkpOwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpIHsKLSAgICAgICAg
aW50IHZhbHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAgICAgIHJldHVybiAodGhpcy0+
bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMt
PmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2
NF90Pih2YWx1ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpCisgICAg
ICAgIHJldHVybiBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50MzIoKSk7CiAgICAgCiAgICAg
ZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAgICByZXR1cm4gY29tcGFyZVRv
RG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKIH0KIAorYm9v
bCBKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIGlmICghdmFs
dWUpCisgICAgICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAgICByZXR1cm4gKHRoaXMtPmxl
bmd0aCgpID09IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5k
aWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRf
dD4odmFsdWUpKSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6
Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIHsKICAgICAvLyBUaGlzIGFs
Z29yaXRobSBleHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJRUVFIDc1NApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0ZTYwOTlmNDcuLjk3ZmM5
MTY1MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGlt
YUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MCwxMyAr
OTAsMTIgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgUGFyc2VJbnRNb2RlIHsgRGlzYWxsb3dF
bXB0eVN0cmluZywgQWxsb3dFbXB0eVN0cmluZyB9OwogICAgIGVudW0gY2xhc3MgUGFyc2VJbnRT
aWduIHsgVW5zaWduZWQsIFNpZ25lZCB9OwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUlu
dChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQ
YXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24g
PSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNl
TW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHN0cmluZ1RvQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldyk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVy
cm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRT
aWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFy
c2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOworICAgIHN0YXRpYyBKU1ZhbHVlIHN0cmluZ1RvQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldyk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRy
eUdldFN0cmluZyhWTSYsIEpTQmlnSW50KiwgdW5zaWduZWQgcmFkaXgpOwogCi0gICAgT3B0aW9u
YWw8dWludDhfdD4gc2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpOwogICAgIFN0cmluZyB0b1N0
cmluZyhKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHJhZGl4KTsKICAgICAKICAgICBlbnVtIGNs
YXNzIENvbXBhcmlzb25Nb2RlIHsKQEAgLTExMyw2ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxzKEpTQmlnSW50KiwgSlNCaWdJ
bnQqKTsKICAgICBib29sIGVxdWFsc1RvTnVtYmVyKEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZXF1YWxzVG9JbnQzMihpbnQzMl90KTsKICAgICBzdGF0aWMgQ29tcGFyaXNv
blJlc3VsdCBjb21wYXJlKEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKICAgICBib29sIGdl
dFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVl
JiByZXN1bHQpIGNvbnN0OwpAQCAtMjIyLDEwICsyMjIsMTAgQEAgcHJpdmF0ZToKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBw
YXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBFcnJvclBhcnNlTW9kZSk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUp
OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0lu
dCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNl
TW9kZSwgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQsIFBhcnNlSW50TW9kZSA9
IFBhcnNlSW50TW9kZTo6QWxsb3dFbXB0eVN0cmluZyk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSwg
UGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQsIFBhcnNlSW50TW9kZSA9IFBhcnNl
SW50TW9kZTo6QWxsb3dFbXB0eVN0cmluZyk7CiAKICAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9j
YXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZWQgY2hh
cmNvdW50KTsKIApAQCAtMjU4LDkgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgQ2FnZWRVbmlxdWVQ
dHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgRGlnaXQ+IG1fZGF0YTsKIH07CiAKLWlubGluZSBKU0Jp
Z0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKK2lubGluZSBKU0JpZ0ludCogYXNIZWFwQmln
SW50KEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0JpZ0lu
dCgpKTsKKyAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpKTsKICAgICBy
ZXR1cm4ganNDYXN0PEpTQmlnSW50Kj4odmFsdWUuYXNDZWxsKCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDU0ODAxMGViMWMwLi41
YzVhMzJhY2U3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdl
dHRlclNldHRlci5oIgpAQCAtNzEsNiArNzIsMTQgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVy
U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQo
IWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICBy
ZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZy
b20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAgICAgICAgcmV0
dXJuIDAuMDsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJldHVy
biAxLjA7CiAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQg
ZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCkBAIC0xMDEsNiArMTEwLDEwIEBAIEpTT2JqZWN0KiBK
U1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVl
KCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1
cm4gQmlnSW50T2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgKnRoaXMpOworI2VuZGlm
CiAKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3Qs
ICp0aGlzKSk7CkBAIC0xMTgsNiArMTMxLDE0IEBAIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xv
d0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwog
ICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RC
b29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIEpTQ2VsbCog
aGVhcEJpZ0ludCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KEpTQmlnSW50OjpjcmVhdGVGcm9tKGds
b2JhbE9iamVjdC0+dm0oKSwgYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAgICAgLy8gRklYTUU6
IHRoZXJlIG11c3QgYmUgYSBzaW1wbGVyIHdheSB0byBmaW5kIHRvVGhpcyBmb3IgSlNCaWdJbnQs
IGJ1dCBJIGNhbid0IGV2ZW4gZmluZCB3aGVyZSBpdCBpcyBkZWZpbmVkLgorICAgICAgICByZXR1
cm4gaGVhcEJpZ0ludC0+bWV0aG9kVGFibGUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPnRvVGhpcyho
ZWFwQmlnSW50LCBnbG9iYWxPYmplY3QsIGVjbWFNb2RlKTsKKyAgICB9CisjZW5kaWYKKwogICAg
IEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTUxLDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5
bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKGlzQmln
SW50KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBn
bG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2wo
KSk7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwpAQCAt
MTQwLDYgKzE2MSwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAoaXNCb29sZWFuKCkpCiAgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
YmlnSW50UHJvdG90eXBlKCk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVs
bCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RB
bk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTI4Niw2ICszMTEsOCBAQCB2
b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAg
IG91dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIGVs
c2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6Omlu
Zm8oKSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgaW5Db250ZXh0KCpq
c0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250ZXh0KSk7CisgICAgICAgIGVsc2UgaWYg
KGlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgb3V0LnByaW50KCJCaWdJbnRbaGVhcC1hbGxv
Y2F0ZWRdOiBhZGRyPSIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAo
c3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEpTT2JqZWN0OjppbmZvKCkpKSB7
CiAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkp
OwogICAgICAgICAgICAgb3V0LnByaW50KCIgd2l0aCBidXR0ZXJmbHkgIiwgUmF3UG9pbnRlcihh
c09iamVjdChhc0NlbGwoKSktPmJ1dHRlcmZseSgpKSk7CkBAIC0zMDUsNiArMzMyLDEwIEBAIHZv
aWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICBvdXQu
cHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQu
cHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChpc0Jp
Z0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0lu
dDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZB
TElEIik7CiB9CkBAIC0zNDcsNiArMzc4LDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0
cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsK
ICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5l
ZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAg
ICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsK
KyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0z
ODQsMTggKzQxOSwyNSBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVybkVtcAogICAgICAgICByZXR1cm4g
dm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBpZiAoaXNVbmRlZmluZWQoKSkKICAg
ICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKLSAgICBpZiAo
aXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOwotICAgICAgICByZXR1
cm4gZXJyb3JWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIpIDw9IDkpCisgICAgICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhpbnRlZ2VyICsgJzAnKTsK
KyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdm0ubnVtZXJpY1N0cmluZ3Mu
YWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNC
aWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8gZGlnaXQg
PSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpkaWdpdCArICcwJyk7Ci0g
ICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGJp
Z0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkpOworI2VuZGlmCisgICAgaWYgKGlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBCaWdJbnQoKTsK
KyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2FzZXMgaGVyZTog
b25lLWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBldmVyeXRoaW5n
IGVsc2UuCisgICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRl
KHZtLCBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApLnJlbGVhc2VJbXBsKCkucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9y
VmFsdWUoKSk7CiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7CiAgICAgfQorICAgIGlmIChp
c1N5bWJvbCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVy
biBlcnJvclZhbHVlKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyU3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA1
ODZhZjNmYWIzNy4uYTkxMTQzMGU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0xNzYsNiArMTc2LDEwIEBAIHB1YmxpYzoKICAgICBlbnVtIEpTVHJ1ZVRhZyB7IEpT
VHJ1ZSB9OwogICAgIGVudW0gSlNGYWxzZVRhZyB7IEpTRmFsc2UgfTsKICAgICBlbnVtIEpTQ2Vs
bFRhZyB7IEpTQ2VsbFR5cGUgfTsKKyAgICBlbnVtIEpTQmlnSW50VGFnIHsgSlNCaWdJbnQzMk9y
SGVhcCB9OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcgeyBKU0Jp
Z0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNE
b3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4NSw2ICsxODksMTEgQEAgcHVibGljOgog
ICAgIEpTVmFsdWUoSlNGYWxzZVRhZyk7CiAgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CiAgICAg
SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTVmFs
dWUoSlNCaWdJbnQzMlRhZywgaW50MzJfdCk7CisjZW5kaWYKKyAgICAvLyBSZXR1cm5zIGVpdGhl
ciBhIEJpZ0ludDMyIG9yIGEgSGVhcEJpZ0ludC4KKyAgICBKU1ZhbHVlKEpTQmlnSW50VGFnLCBW
TSYsIGludDY0X3QpOwogCiAgICAgLy8gTnVtYmVycwogICAgIEpTVmFsdWUoRW5jb2RlQXNEb3Vi
bGVUYWcsIGRvdWJsZSk7CkBAIC0yMTgsNiArMjI3LDkgQEAgcHVibGljOgogICAgIGRvdWJsZSBh
c0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91Ymxl
IGFzTnVtYmVyKCkgY29uc3Q7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGludDMyX3QgYmlnSW50
MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qgb25seSBiZSBjYWxsZWQgb24gYSBCaWdJbnQzMgor
I2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBhc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0OyAv
LyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBidXQgb3RoZXJ3aXNlIGxpa2UgYXNJbnQzMigpLgog
CkBAIC0yMzcsNiArMjQ5LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsK
ICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0Owor
ICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludDMyKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBj
b25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CkBAIC0yNDUsNyArMjU5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25z
dDsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb09yTnVsbChWTSYpIGNvbnN0OwotICAg
ICAgICAKKwogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgogICAgIGJvb2wgZ2V0U3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiwgV1RGOjpTdHJpbmcmKSBjb25zdDsKICAgICBXVEY6OlN0cmluZyBn
ZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEg
c3RyaW5nCkBAIC0yNjQsOSArMjc4LDEwIEBAIHB1YmxpYzoKICAgICAvLyB0b051bWJlciBjb252
ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhjZXB0aW9u
IGhhcwogICAgIC8vIGJlZW4gc2V0IGluIHRoZSBDYWxsRnJhbWUgYWxyZWFkeS4KICAgICBkb3Vi
bGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAKLSAgICBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiB0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBW
YXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CisKKyAgICBKU1ZhbHVlIHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0
OworICAgIEpTVmFsdWUgdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Cisg
ICAgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludCgpIGNvbnN0OwogCiAgICAgLy8gdG9OdW1iZXIgY29u
dmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0IHNpZGUgZWZmZWN0cy4KICAgICBPcHRp
b25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0OwpAQCAtMzE1LDggKzMz
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93
Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAg
IHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiB2MSwgSlNDZWxsKiB2Mik7CiAgICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJpY3RF
cXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7
CkBAIC00MTQsMTEgKzQyOCwyMCBAQCBwdWJsaWM6CiAgICAgICogVGhlc2UgdmFsdWVzIGhhdmUg
dGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogICAgICAqIC0gQml0IDEgKE90aGVyVGFnKSBpcyBz
ZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBiZQogICAg
ICAqICAgcXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1ZXMsIGlu
Y2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgotICAgICAqIC0gV2l0aCBiaXQgMyBpcyBt
YXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKKyAg
ICAgKiAtIFdpdGggYml0IDMgbWFza2VkIG91dCAoVW5kZWZpbmVkVGFnKSwgVW5kZWZpbmVkIGFu
ZCBOdWxsIHNoYXJlIHRoZQogICAgICAqICAgc2FtZSB2YWx1ZSwgYWxsb3dpbmcgbnVsbCAmIHVu
ZGVmaW5lZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgogICAgICAqCiAgICAgICogTm8gdmFsaWQg
SlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4MCwgdGhpcyBpcyB1c2VkIHRvIHJl
cHJlc2VudCBhcnJheQogICAgICAqIGhvbGVzLCBhbmQgYXMgYSBDKysgJ25vIHZhbHVlJyByZXN1
bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2YWx1ZSBvZiAwKS4KKyAgICAgKgor
ICAgICAqIFdoZW4gVVNFKEJJR0lOVDMyKSwgd2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50YXRp
b24gZm9yIEJpZ0ludHMgdGhhdCBhcmUgc21hbGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAgKiAg
ICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtz
IGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3QgYmUg
Y29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMK
KyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGws
IHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fubm90
IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNo
IGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1
ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90
IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0
cnVlCiAgICAgICovCiAKICAgICAvLyBUaGlzIHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5jb2Rl
IGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQyOCwx
MSArNDUxLDE5IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBhcmUg
c2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKICAgICAvLyBpZiBhbnkgYnV0
IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1iZXIu
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJlclRhZyA9IDB4ZmZmZTAwMDAwMDAw
MDAwMGxsOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RhbnQgaXMgdXNlZCBmb3IgYSB0cmlj
ayBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RyaWN0RXEsIHRvIGRldGVjdCBpZiBlaXRoZXIg
b2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRvdWJsZQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsKKyAgICBzdGF0aWNfYXNzZXJ0KExvd2Vz
dE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcpOworICAgIHN0YXRpY19hc3NlcnQoISgoTG93ZXN0T2ZI
aWdoQml0cz4+MSkgJiBOdW1iZXJUYWcpKTsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9v
bCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgogICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50MzJfdCBPdGhlclRhZyAgICAgICA9IDB4MjsKICAgICBzdGF0aWMgY29u
c3RleHByIGludDMyX3QgQm9vbFRhZyAgICAgICAgPSAweDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQzMl90IFVuZGVmaW5lZFRhZyAgID0gMHg4OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBz
dGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50MzJUYWcgICAgPSAweDEyOworICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1hc2sgICA9IE51bWJlclRhZyB8IEJpZ0ludDMy
VGFnOworI2VuZGlmCiAgICAgLy8gQ29tYmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51bWVy
aWMgaW1tZWRpYXRlcy4KICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVGYWxzZSAg
ICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGlu
dDMyX3QgVmFsdWVUcnVlICAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXgg
NWIzZmY4YWM0NGUuLjBhNzg4MDMzN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1h
dGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yNDAsNiArMjM5LDEzIEBAIGlu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQogICAgIHUuYXNCaXRzLnBh
eWxvYWQgPSByZWludGVycHJldF9jYXN0PGludDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRy
KSk7CiB9CiAKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50VGFnLCBWTSYgdm0sIGlu
dDY0X3QgdmFsKQoreworICAgIHUuYXNCaXRzLnRhZyA9IENlbGxUYWc7CisgICAgYXV0byBwdHIg
PSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsKTsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0g
cmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30K
KwogaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VSVCh0
YWcoKSAhPSBEZWxldGVkVmFsdWVUYWcpOwpAQCAtMzI5LDYgKzMzNSwxMiBAQCBBTFdBWVNfSU5M
SU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBK
U0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNI
ZWFwQmlnSW50KCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5h
c0JpdHMucGF5bG9hZCk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNv
ZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7
CkBAIC00NjQsNiArNDc2LDIwIEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcp
CiAgICAgdS5hc0ludDY0ID0gVmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUoSlNCaWdJbnRUYWcsIFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKK3sKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKHZhbHVlIDw9IElOVF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikgeworICAg
ICAgICAvLyBUaGUgJiB+TnVtYmVyVGFnIHBhcnQgaXMgZm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90
aGVyd2lzZSB0aGV5IGdldCBzaWduLWV4dGVuZGVkLgorICAgICAgICB1LmFzSW50NjQgPSAoKHZh
bHVlIDw8IDE2KSAmIH5OdW1iZXJUYWcpIHwgQmlnSW50MzJUYWc7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKworICAgIEpTQ2VsbCogcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIHZhbHVlKTsKKyAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
cHRyKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25z
dAogewogICAgIC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFy
IHRoZSAndW5kZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KQEAgLTUyMiw4ICs1NDgs
MjIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAg
cmV0dXJuIHUucHRyOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hl
YXBCaWdJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAorI2lmIFVTRShCSUdJTlQzMikKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpT
QmlnSW50MzJUYWcsIGludDMyX3QgdmFsdWUpCit7CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBw
YXJ0IGlzIGZvciBuZWdhdGl2ZSBudW1iZXJzLCBvdGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRl
bmRlZC4KKyAgICB1LmFzSW50NjQgPSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAx
NikgJiB+TnVtYmVyVGFnKSB8IEJpZ0ludDMyVGFnOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKwogaW5saW5lIGludDY0X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsK
ICAgICBpZiAobnVtYmVyICE9IG51bWJlcikKQEAgLTYxMCw5ICs2NTAsMzEgQEAgaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Jp
Z0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0lu
dCgpOworICAgIHJldHVybiBpc0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lu
bGluZSBib29sIEpTVmFsdWU6OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVy
biAodS5hc0ludDY0ICYgQmlnSW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50
MzJfdCBKU1ZhbHVlOjpiaWdJbnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0Jp
Z0ludDMyKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4g
MTYpOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNT
eW1ib2woKTsKQEAgLTYyMCw3ICs2ODIsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJv
bCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgp
LT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiAhaXNDZWxs
KCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXND
ZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRl
clNldHRlcigpIGNvbnN0CkBAIC03NjAsOCArODIyLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6
OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUm
IG51CiAgICAgICAgIHZhbHVlID0gKnRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0gICAgbnVtYmVyID0gUE5hTjsKKyAgICBpZiAo
aXNVbmRlZmluZWQoKSkgeworICAgICAgICBudW1iZXIgPSBQTmFOOworICAgICAgICB2YWx1ZSA9
ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNCaWdJ
bnQzMigpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90
IGFsbG93ZWQuIl9zKTsKKyAgICBudW1iZXIgPSAwLjA7CiAgICAgdmFsdWUgPSAqdGhpczsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3NSw0NCArODQ2LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91
YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0KTsKIH0KIAotQUxXQVlT
X0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBK
U1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsK
LSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIGlmIChp
c0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gYXNEb3VibGUoKTsKLSAgICBpZiAoaXNCaWdJbnQo
KSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0aGlzKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8
IGlzRG91YmxlKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAg
Vk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0
aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVy
biBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzRG91YmxlKCkgfHwgcHJpbVZhbHVlLmlzQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7CisKICAgICBkb3VibGUgdmFsdWUgPSBwcmlt
VmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgVmFyaWFudDxKU0JpZ0ludCosIGludDMyX3Q+IEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVl
IEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAogewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Cisg
ICAgaWYgKGlzSW50MzIoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgaWYgKGlzRG91YmxlKCkgJiYgY2FuQmVJbnQzMihhc0RvdWJsZSgpKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKCkpOwotICAgIGlmIChpc0JpZ0ludCgp
KQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgICAgICByZXR1cm4ganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSkpOwogCiAgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsK
LSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChw
cmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBp
ZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAg
IHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAg
IHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6
dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKQEAgLTEwMzIsMzcg
KzExMDQsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxp
bmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICBWTSYgdm0gPSBnZXRWTShn
bG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBkbyB7Ci0gICAgICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAg
ICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOwotICAgICAgICBib29sIHMyID0gdjIuaXNTdHJp
bmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMyKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIp
KSk7Ci0KLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgczIpIHsKLSAgICAgICAgICAgIFN0
cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpT
QmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJp
bmcpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAg
ICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKG4pOwotICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmICh2MS5pc051bWJlcigpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNOdW1i
ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJl
cigpOworICAgICAgICAgICAgLy8gR3VhcmFudGVlaW5nIHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJl
ciBpdCBpcyB2MiBtYWtlcyBzb21lIG9mIHRoZSBjYXNlcyBiZWxvdyBzaW1wbGVyLgorICAgICAg
ICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoczEgJiYg
djIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgU3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmco
djEpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2MSA9IEpT
VmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBU
aGlzIGRlYWxzIHdpdGggQm9vbGVhbnMsIEJpZ0ludDMyLCBPYmplY3RzLCBhbmQgaXMgYSBzaG9y
dGN1dCBmb3IgYSBmZXcgbW9yZSB0eXBlcy4KKyAgICAgICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVy
ZSBhbmQgbm90IGJlZm9yZSwgYmVjYXVzZSBpdCBpcyBOT1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4K
KyAgICAgICAgaWYgKHYxID09IHYyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAg
ICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQpAQCAtMTA4MCw3ICsxMTMyLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlMKIAogICAgICAgICBpZiAodjEuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKHYy
LmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHBy
ZXZpb3VzbHkKICAgICAgICAgICAgIEpTVmFsdWUgcDEgPSB2MS50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgICAgICAgICAgdjEgPSBwMTsKQEAgLTExMDIsNTYgKzExNTQsODQgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlMKICAgICAgICAgYm9vbCBzeW0yID0gdjIuaXNTeW1ib2woKTsKICAgICAgICAg
aWYgKHN5bTEgfHwgc3ltMikgewogICAgICAgICAgICAgaWYgKHN5bTEgJiYgc3ltMikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gYXNTeW1ib2wodjEpID09IGFzU3ltYm9sKHYyKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHYxID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBw
cmV2aW91c2x5CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAg
ICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKKyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5n
KCk7CisgICAgICAgIGlmIChzMSkgeworICAgICAgICAgICAgaWYgKHMyKQorICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxP
YmplY3QsIGFzU3RyaW5nKHYyKSkpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7Cisg
ICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0byBlbnRlciB0aGUgbmV4dCBjYXNlLCBz
byBsb3NpbmcgdGhlIGludmFyaWFudCBvZiBvbmx5IHYyIGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUK
KyAgICAgICAgfQogICAgICAgICBpZiAoczEgfHwgczIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBk
MSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJl
cihnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGQxID09IGQyOworICAgICAgICAgICAgLy8gV2Ug
YXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgc3RyaW5nIGlzIHYyICh0aGFua3MgdG8gdGhlIHN3YXAg
YWJvdmUpCisgICAgICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAg
IFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0
cmluZyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGlmICghdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOyAvLyBGb3IgQmlnSW50MzIKKyAgICAgICAgICAgICAgICAvLyBXZSBmYWxs
dGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBjb2RlIGZvciBjb21wYXJpbmcgQmlnSW50cyAod2hpY2gg
aXMgb25seSBtaXNzaW5nIHRoZSBCaWdJbnQzMi9CaWdJbnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hl
Y2sgYWJvdmUpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2
MS5pc051bWJlcigpIHx8IHYxLmlzQm9vbGVhbigpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUg
ZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDIgPSB2
Mi50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsK
ICAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOwotICAg
ICAgICAgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYxID0g
SlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJl
cihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBC
aWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVl
ZCBvbmUgbW9yZSBzd2FwIHRvIHJlcGFpciB0aGUgcnVsZSB0aGF0IG9ubHkgdjIgaXMgYWxsb3dl
ZCB0byBiZSBhIG51bWJlciBpbiB0aGVzZSBjb21wYXJpc29ucworICAgICAgICAgICAgc3RkOjpz
d2FwKHYxLCB2Mik7CiAgICAgICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFuKCkpIHsKLSAgICAg
ICAgICAgIGlmICh2MS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051
bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkpOwotICAgICAgICAg
ICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYyID0gSlNWYWx1
ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9i
YWxPYmplY3QpKTsKKyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQv
TnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJlcih2Mik7CiAKLSAgICAgICAgaWYgKHYyLmlz
QmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2
MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2
MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0ludDMyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpID09IHYyLmFzSW50MzIoKTsKKyAg
ICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMyQXNJbnQzMigpKSA9PSB2Mi5hc0RvdWJsZSgpOwor
ICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCisKKyAgICAgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAg
ICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFz
SW50MzIoKSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKHYyLmlz
TnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVh
bHNUb051bWJlcih2Mik7CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdjEgPT0gdjI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxlICh0cnVlKTsKIH0KIAogLy8gRUNNQSAx
MS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
CitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKQogewotICAgIEFT
U0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCkt
PmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCisgICAgaWYgKHYxLT5pc1N0
cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5l
cXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkg
JiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJ
bnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2MS0+aXNIZWFwQmlnSW50KCkgJiYgdjIt
PmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNf
Y2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MikpOwogICAgIHJl
dHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE2MywxMCArMTI0MywxNyBAQCBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAg
ICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAKLSAgICBpZiAoIXYx
LmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQz
MigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIu
YmlnSW50MzJBc0ludDMyKCkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHJldHVybiB2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQz
Mih2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFs
T2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOwogCi0gICAgcmV0dXJuIHN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAgIHJldHVybiB2MSA9
PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMo
KSBjb25zdApAQCAtMTE4NCwxNSArMTI3MSwyMyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6
cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVt
YmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5p
c0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKLSAgICAKLSAgICBp
ZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsK
LSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdl
dFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3Ry
aW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYy
U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci0gICAgICAgIHJldHVy
biB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2
Mi5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNI
ZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+
ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlmCisKKyAgICBpZiAo
djEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpIHsKKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5p
c1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBjb25z
dCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7
CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+
dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBpZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmlu
ZykKKyAgICAgICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJl
dHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5hc0NlbGwo
KS0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoSlNCaWdJbnQ6
OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKQEAgLTEyMDYsNiArMTMwMSwxMCBA
QCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiAgICAgICAg
IHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDog
RmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0NlbGwoKSkKICAgICAg
ICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFuKCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBiaWdJbnQzMkFzSW50MzIoKSA/
IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVl
KCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNGVkNjUyMzM3OS4uOTBjNWE3ZmMxMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTA4LDcgKzEwOCw3
IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5p
c1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBp
ZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJp
Z0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9i
YWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTExOCw3ICsxMTgsNyBA
QCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJv
bCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBj
ZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZt
LCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBK
U1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBl
KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUp
OwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlw
ZSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2
ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFBy
aW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmpl
Y3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVj
dCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVl
KTsKIH0KQEAgLTE4MCw3ICsxODAsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAo
aXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRo
aXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlm
IChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmln
SW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBA
IC0xOTAsNyArMTkwLDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAg
ICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3Ry
aW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkp
CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQo
aXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMp
LT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAppbmRleCAxMDY3NDlkZTNjZS4uN2Y5MjUwNGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJvdGVjdGVkOgogcHVibGlj
OgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsK
LSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25z
dDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0
OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAyZGFmN2JjMGRkYi4uYzI4MzgzNjgz
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
QEAgLTIwNSw5ICsyMDUsOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2Vs
bDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKKyAgICByZXR1cm4gbV90
eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9s
KCkgY29uc3QKQEAgLTM0MSw3ICszNDEsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVh
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIChpc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+
dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9C
b29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTM1MCw3ICszNTAsNyBA
QCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAg
ICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVU
cmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAppbmRleCAyMmMwMTIwNWMyZi4uN2U4YjI2MGFmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTAzOCw2ICsxMDM4LDEwIEBAIGlubGluZSBib29sIEpT
VmFsdWU6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAg
ICAgICByZXR1cm4gYXNEb3VibGUoKSA+IDAuMCB8fCBhc0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxz
ZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRv
Qm9vbGVhbihnbG9iYWxPYmplY3QpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJ
bnQzMigpKQorICAgICAgICByZXR1cm4gISFiaWdJbnQzMkFzSW50MzIoKTsKKyNlbmRpZgogICAg
IHJldHVybiBpc1RydWUoKTsgLy8gZmFsc2UsIG51bGwsIGFuZCB1bmRlZmluZWQgYWxsIGNvbnZl
cnQgdG8gZmFsc2UuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CmluZGV4IGExMzM3YzZhNGVmLi4wZGM1Yjc0YzAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoQ2VsbFR5cGUpCiAg
ICAgQ0FTRShTdHJpbmdUeXBlKQogICAgIENBU0UoU3ltYm9sVHlwZSkKLSAgICBDQVNFKEJpZ0lu
dFR5cGUpCisgICAgQ0FTRShIZWFwQmlnSW50VHlwZSkKICAgICBDQVNFKFN0cnVjdHVyZVJhcmVE
YXRhVHlwZSkKICAgICBDQVNFKEN1c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FTRShBUElW
YWx1ZVdyYXBwZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRl
eCAwZjg2OGE2YWUwNy4uZDE0NjQzM2Q0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCkBAIC0yNiw4ICsyNiw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAg
Ly8gVGhlIENlbGxUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlz
IGEgSlNDZWxsLgogICAgIENlbGxUeXBlLAogICAgIFN0cmluZ1R5cGUsCi0gICAgQmlnSW50VHlw
ZSwKLSAgICBMYXN0TWF5YmVGYWxzeUNlbGxQcmltaXRpdmUgPSBCaWdJbnRUeXBlLAorICAgIEhl
YXBCaWdJbnRUeXBlLAorICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJ
bnRUeXBlLAogICAgIFN5bWJvbFR5cGUsCiAKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YVR5cGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKaW5kZXggM2NkNzEzZDg0
ZjMuLjg4ZTMwZjIwOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU2V0T25GbGFn
czEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVy
biBtX2ZsYWdzICYgZmxhZzsgfQogICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFn
KSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZs
YWcgPj4gOCk7IH0KIAotICAgIHVpbnQ4X3QgbV90eXBlOworICAgIEpTVHlwZSBtX3R5cGU7CiAg
ICAgdWludDhfdCBtX2ZsYWdzOwogICAgIHVpbnQxNl90IG1fZmxhZ3MyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZS5jcHAKaW5kZXggYzRlYmJlYzUwMzUuLjI3YTIyMWMyZWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlv
blNjb3BlLmNwcApAQCAtMjYsOSArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCIKIAotI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNs
dWRlICJTY3JpYmJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA0OTA1ZDViYWYwNy4uNTNlZDEyNGU1
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDEx
ICszNiw2IEBAIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGVxdWFsU2xvd0Nh
c2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwogfQogCi1ib29sIEpTVmFsdWU6OnN0cmlj
dEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKLXsKLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9i
YWxPYmplY3QsIHYxLCB2Mik7Ci19Ci0KIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nh
c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikK
IHsKICAgICAvLyBleGNlcHRpb24gZm9yIHRoZSBEYXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFs
dWUoKQpAQCAtNzMsMjEgKzY4LDIzIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nh
c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWCiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCBwMVN0cmlu
ZywgYXNTdHJpbmcocDIpKSk7CiAgICAgfQogCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IHAxLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBwMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBhZGRpdGlvbi4iX3MpOwotICAgIH0KLQotICAgIHJldHVybiBqc051bWJlcihXVEY6Omdl
dDxkb3VibGU+KGxlZnROdW1lcmljKSArIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7
CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBk
b3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0OworICAgIH07CisgICAgYXV0byBi
aWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJm
bG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgKz0gcmlnaHQ7CisgICAgICAgIGlm
IChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJl
c3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAg
KHZvaWQpIHJpZ2h0OworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCisgICAgfTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFyaXRobWV0aWNCaW5h
cnlPcChnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OmFkZCwgZG91YmxlT3AsIGJpZ0lu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24u
Il9zKSk7CiB9CiAKIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCkBAIC0xMjgsNyArMTI1LDcgQEAgYm9v
bCBqc0lzT2JqZWN0VHlwZU9yTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2
LmFzQ2VsbCgpLT50eXBlKCk7Ci0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09
IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBCaWdJbnRUeXBlKQorICAgIGlmICh0eXBlID09IFN0cmlu
Z1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gSGVhcEJpZ0ludFR5cGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAg
ICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChnbG9iYWxPYmplY3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCmluZGV4IDRiYmUyM2MwNzI1Li42OTM4ZTI2NmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0yMzksNiArMjM4LDM1IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21S
ZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlCiAgICAgcmV0dXJu
IHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdjEsIEpTVmFsdWUgcHJpbVZhbHVlKQoreworICAg
IEFTU0VSVChwcmltVmFsdWUuaXNQcmltaXRpdmUoKSk7CisgICAgQVNTRVJUKCFwcmltVmFsdWUu
aXNCaWdJbnQoKSk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHByaW1WYWx1ZS5p
c1N0cmluZygpKSB7CisgICAgICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9i
YWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgICAgIGlmICghYmlnSW50VmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5l
ZDsKKworICAgICAgICBpZiAoYmlnSW50VmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmUodjEsIGJpZ0ludFZhbHVlLmFzSGVhcEJpZ0ludCgp
KTsKKworICAgICAgICBBU1NFUlQoYmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIC8vIEZJWE1FOiB1c2Ugc29tZXRoaW5nIGxlc3MgaGFja3ksIGUu
Zy4gc29tZSBraW5kIG9mIEpTQmlnSW50Ojpjb21wYXJlVG9JbnQzMgorICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihiaWdJbnRW
YWx1ZS5iaWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlmCisgICAgfQorCisgICAgZG91YmxlIG51
bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5l
ZCk7CisgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIG51bWJlclZhbHVl
KTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCwgSlNCaWdJbnQ6OkNvbXBhcmlzb25N
b2RlIGNvbXBhcmlzb25Nb2RlKQogewogICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0lu
dDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQpAQCAtMjU1LDUxICsyODMsNTAgQEAgQUxXQVlT
X0lOTElORSBib29sIGJpZ0ludENvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWwKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKHYx
LmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBh
cmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpLCBj
b21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgaWYgKHYxLmlzQmlnSW50KCkpIHsKLSAgICAgICAg
SlNWYWx1ZSBwcmltVmFsdWUgPSB2MjsKLSAgICAgICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5n
VG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
LSAgICAgICAgICAgIGlmICghYmlnSW50VmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6
Y29tcGFyZShhc0JpZ0ludCh2MSksIGJpZ0ludFZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEp
LCBhc0JpZ0ludChwcmltVmFsdWUpKSwgY29tcGFyaXNvbk1vZGUpOwogCi0gICAgICAgIGRvdWJs
ZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybiBiaWdJ
bnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjEpLCBu
dW1iZXJWYWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaWYgKGNvbXBh
cmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCisgICAgICAg
ICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPCB2Mi5iaWdJbnQzMkFzSW50MzIoKTsK
KyAgICAgICAgQVNTRVJUKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9k
ZTo6TGVzc1RoYW5PckVxdWFsKTsKKyAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigp
IDw9IHYyLmJpZ0ludDMyQXNJbnQzMigpOwogICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IHYxOwotICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBKU0Jp
Z0ludCogYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0
LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyNlbmRpZgorCisg
ICAgSlNCaWdJbnQqIHYxSGVhcEJpZ0ludCA9IG51bGxwdHI7CisgICAgSlNCaWdJbnQqIHYySGVh
cEJpZ0ludCA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRo
IGZvciBhIGNvbXBhcmlzb24gYmV0d2VlbiBhIHNtYWxsIGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAg
ICBpZiAodjEuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHYxSGVhcEJpZ0ludCA9IHYxLmFzSGVh
cEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2MS5pc0JpZ0ludDMy
KCkpCisgICAgICAgIHYxSGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2MS5i
aWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkK
KyAgICAgICAgdjJIZWFwQmlnSW50ID0gdjIuYXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIGVsc2UgaWYgKHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRp
ZgorCisgICAgaWYgKHYxSGVhcEJpZ0ludCAmJiB2MkhlYXBCaWdJbnQpCisgICAgICAgIHJldHVy
biBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKHYxSGVhcEJpZ0ludCwgdjJI
ZWFwQmlnSW50KSwgY29tcGFyaXNvbk1vZGUpOworCisgICAgaWYgKHYxSGVhcEJpZ0ludCkgewor
ICAgICAgICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIHYxSGVhcEJpZ0ludCwgdjIpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGlmICghYmlnSW50VmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1
bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYmlnSW50VmFsdWUsIGFzQmlnSW50KHYyKSksIGNvbXBhcmlz
b25Nb2RlKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoY29tcGFyaXNvblJl
c3VsdCwgY29tcGFyaXNvbk1vZGUpOwogICAgIH0KLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlz
QmlnSW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpj
b21wYXJlKGFzQmlnSW50KHByaW1WYWx1ZSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2Rl
KTsKLSAgICAKLSAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKKyAg
ICBhdXRvIGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShn
bG9iYWxPYmplY3QsIHYySGVhcEJpZ0ludCwgdjEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICAvLyBIZXJlIHdlIGNoZWNrIGludmVydGVkIGJlY2F1c2UgQmln
SW50IGlzIHRoZSB2MgotICAgIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25S
ZXN1bHQgPSBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYyKSwgbnVtYmVyVmFs
dWUpOwogICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6
Okxlc3NUaGFuKQogICAgICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47Ci0KICAgICByZXR1cm4gY29tcGFyaXNvblJl
c3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFy
aXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6RXF1YWw7CisKKwogfQog
CiBBTFdBWVNfSU5MSU5FIGJvb2wgdG9QcmltaXRpdmVOdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdiwgSlNWYWx1ZSYgcCwgZG91YmxlJiBuKQpAQCAtMzU3LDcg
KzM4NCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICB9CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RT
dHJpbmcyKSB7CisgICAgaWYgKHdhc05vdFN0cmluZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAg
ICAgICBpZiAocDEuaXNCaWdJbnQoKSB8fCBwMi5pc0JpZ0ludCgpKQogICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRDb21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAy
LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKSk7CiAKQEAgLTQwNyw3ICs0MzQs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wganNMZXNzRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmlu
ZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAg
IGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpT
QmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSAr
NDc5LDM0OCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNBZGQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBqc0FkZE5vbk51
bWJlcihnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQorLy8gQmlnSW50MzJPcCBleHBlY3RzIGl0cyBvcGVyYW5kcyB1bmJveGVkLCBhbmQgcmV0dXJu
cyBpdHMgcmVzdWx0IHVuYm94ZWQgYXMgd2VsbAordGVtcGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0lu
dE9wZXJhdGlvbiwgdHlwZW5hbWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBCaWdJbnQzMk9w
PgorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGFyaXRobWV0aWNCaW5hcnlPcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0
aW9uJiYgaGVhcEJpZ0ludE9wLCBEb3VibGVPcGVyYXRpb24mJiBkb3VibGVPcCwgQmlnSW50MzJP
cCYmIGJpZ0ludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBsZWZ0
TnVtZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNOdW1iZXIo
KSAmJiByaWdodE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRv
dWJsZU9wKGxlZnROdW1lcmljLmFzTnVtYmVyKCksIHJpZ2h0TnVtZXJpYy5hc051bWJlcigpKSk7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAg
aWYgKEpTVmFsdWUgcmVzdWx0ID0gYmlnSW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50
MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAg
ICAgICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJv
bSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBC
aWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsKKyAgICAgICAgaWYgKHJpZ2h0TnVt
ZXJpYy5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmln
SW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9w
KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KSkpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQo
KSkgeworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAg
ICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBy
aWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKSwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIH0gZWxzZSBpZiAocmlnaHRO
dW1lcmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KSwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CiAgICAgfQorI2Vsc2UKKyAgICAodm9p
ZCkgYmlnSW50MzJPcDsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmln
aHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgp
LCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAg
ICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6Omdl
dDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7Cisg
ICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3Vi
bGUgeworICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJ
bnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93
PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgLT0gcmlnaHQ7CisgICAgICAgIGlmIChV
TkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3Vs
dC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZv
aWQpIHJpZ2h0OworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpzdWIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXgg
b2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxl
ZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKiByaWdo
dDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMy
X3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgQ2hlY2tl
ZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0
ICo9IHJpZ2h0OworICAgICAgICBpZiAocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICAodm9pZCkgbGVm
dDsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0lu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGlj
YXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBk
b3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAg
ICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0g
W10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJp
Z2h0KTsKKyNlbHNlCisgICAgICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9Owor
CisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNC
aWdJbnQ6OmRpdmlkZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzUmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwg
ZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmln
aHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3Qp
IC0+IEpTVmFsdWUgeworICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIG1vcmUgY2xldmVy
IGhlcmUuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBh
cml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpyZW1haW5k
ZXIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIHJlbWFpbmRlci4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNQ
b3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikK
K3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+
IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsK
KyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90LCBpbnQzMl90KSAtPiBK
U1ZhbHVlIHsKKyAgICAgICAgLy8gRXhwb25lbnRpYXRpb24gb24gaW50ZWdlcnMgaXMgYm90aCBz
b21ld2hhdCBzbG93IGluIHRoZSBiZXN0IGNhc2UsIGFuZCB2ZXJ5IGxpa2VseSB0byBvdmVyZmxv
dy4KKyAgICAgICAgLy8gU28gZG9uJ3QgYm90aGVyIHRyeWluZyB0byBhdm9pZCBhIGhlYXAgYWxs
b2NhdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfTsK
KworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpT
QmlnSW50OjpleHBvbmVudGlhdGUsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXgg
b2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uLiJfcyk7Cit9CisKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0luYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVy
aWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgKyAxKTsKKworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7Cisg
ICAgICAgIGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVt
ZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgKyAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxv
d2luZyBuZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEg
aGVscGVyIGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdWYWx1ZSA+IElOVF9NQVgpCisgICAgICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
bmV3VmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5p
c0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6
aW5jKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0lu
dCosIGRvdWJsZT4gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBk
b3VibGU+IHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworCisgICAg
aWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihv
cGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5ld1Zh
bHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGluZXMg
bWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAg
ICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAgfQor
I2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIG9w
ZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBpZiAob3Bl
cmFuZE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIofm9wZXJhbmRO
dW1lcmljLmFzSW50MzIoKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmRO
dW1lcmljLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgfm9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisg
ICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFu
ZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIHNo
aWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIs
IGJvb2wgaXNMZWZ0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnROdW1l
cmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50
T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0lu
dDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBsZWZ0SW50MzIgPSBsZWZ0TnVtZXJpYy5hc0ludDMy
KCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkg
JiAzMTsKKyAgICAgICAgaW50MzJfdCByZXN1bHQgPSBpc0xlZnQgPyAobGVmdEludDMyIDw8IHJp
Z2h0SW50MzIpIDogKGxlZnRJbnQzMiA+PiByaWdodEludDMyKTsKKyAgICAgICAgcmV0dXJuIGpz
TnVtYmVyKHJlc3VsdCk7CisgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0
TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAg
ICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpOwor
ICAgICAgICBpbnQzMl90IHJpZ2h0SW50MzIgPSByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmIChyaWdodEludDMyIDwgMCkgeworICAgICAgICAgICAgaXNMZWZ0ID0g
IWlzTGVmdDsKKyAgICAgICAgICAgIHJpZ2h0SW50MzIgPSAtcmlnaHRJbnQzMjsKICAgICAgICAg
fQogCi0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgLy8gVGhpcyBzdGQ6Om1pbiBpcyBhIGJpdCBoYWNr
eSwgYnV0IHJlcXVpcmVkIGJlY2F1c2UgaW4gQysrIGl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB0
byBkbyBhIHNoaWZ0IHdoZXJlIHRoZSByaWdodCBvcGVyYW5kIGlzIGdyZWF0ZXIgb3IgZXF1YWwg
dG8gdGhlIGJpdC13aWR0aCBvZiB0aGUgbGVmdCBvcGVyYW5kLgorICAgICAgICBpZiAoIWlzTGVm
dCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGxlZnRJ
bnQzMiA+PiBzdGQ6Om1pbihyaWdodEludDMyLCAzMSkpOworCisgICAgICAgIC8vIEluIHRoZSBj
YXNlIG9mIGEgbGVmdCBzaGlmdCB3ZSBjYW4gb3ZlcmZsb3cuIEkgZGVhbCB3aXRoIHRoaXMgYnkg
YWxsb2NhdGluZyBIZWFwQmlnSW50cy4KKyAgICAgICAgLy8gRklYTUU6IGl0IG1pZ2h0IGJlIHBv
c3NpYmxlIHRvIGRvIHNvbWV0aGluZyBzbWFydGVyLCB0cnlpbmcgdG8gZG8gdGhlIGxlZnQgc2hp
ZnQgYW5kIGRldGVjdGluZyBzb21laG93IGlmIGl0IG92ZXJmbG93ZWQuCisgICAgICAgIEpTQmln
SW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0SW50MzIp
OworICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHJpZ2h0SW50MzIpOworICAgICAgICBpZiAoaXNMZWZ0KQorICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwg
bGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVm
dEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogICAgIH0KKyNlbmRpZgorCisgICAgaWYg
KCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpIHsK
KyAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBpc0xlZnQgPyAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIgOiAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRp
b24uIjsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGVycm9yTWVzc2FnZSk7CisgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50
KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJp
Yy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHRO
dW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vs
c2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVh
cEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVh
cEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50
LCByaWdodEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTFNoaWZ0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7
CisgICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxPYmplY3Qs
IHYxLCB2MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RGOjpnZXQ8
ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RGOjpnZXQ8
ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFsdWUgKiBy
aWdodFZhbHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJvb2wgaXNM
ZWZ0ID0gZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xl
ZnQpOwogfQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0lu
dE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkK
IHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2Vs
bHMoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
aWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigpKQorICAg
ICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCksIHJpZ2h0
TnVtZXJpYy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51
bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpOworICAg
IC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQsIGFuZCBm
b3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVzZSBjb3Vs
ZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBzbWFsbCBi
aWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8gQnV0IGl0
IGlzIHF1aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2UgYSBzaWdu
IGJpdCB3aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCisj
ZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHROdW1lcmlj
LmlzQmlnSW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKU0JpZ0lu
dCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVy
aWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0
TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNl
bHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNIZWFwQmln
SW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJ
bnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKIH0K
IAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYw
KQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICBy
ZXR1cm4gbGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBm
b3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBhbmQgcmUt
Ym94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUu
CisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5lIGJvb2wg
aXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
Qml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6
ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgYXV0byBp
bnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Cisg
ICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJy
ZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJvciIg
YW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBK
U1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1pbmxpbmUg
dm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZh
bHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAgICAgc3Rh
dGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3
aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRvIGludDMy
T3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAg
ICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRs
eSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhvciIgYW5k
IHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1Zh
bHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhlIGVuZCB0
byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVj
dCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOwog
fQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNs
dWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJuIEFTU0VSVF9F
TkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNkZWZpbmUgU0NS
SUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKworaW5saW5lIGJv
b2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4o
U0NSSUJCTEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBz
aXplX3Qgc2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVl
IHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAgICAgc3RhdGlj
X2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNl
X2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDNkYzE3
YjczMzU5Li40MDJkYWE3MTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMzIxLDcgKzMyMSw3IEBAIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5n
VHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7CiAg
ICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkK
KyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkK
ICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAKICAgICBB
U1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA4ZDBlZGEyZWMyMC4u
NjUyY2Y5NDQ0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAKQEAgLTIxMTgsNyArMjExOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgdWlu
dDhfdCogdm1TdGFja0VuZCA9IHZtU3RhY2tTdGFydCAtIG9yaWdpbmFsTWF4UGVyVGhyZWFkU3Rh
Y2tVc2FnZTsKICAgICBwdHJkaWZmX3Qgc2l6ZURpZmYgPSB2bVN0YWNrRW5kIC0gZW5kOwogICAg
IFJFTEVBU0VfQVNTRVJUKHNpemVEaWZmID49IDApOwotICAgIFJFTEVBU0VfQVNTRVJUKHNpemVE
aWZmIDwgVUlOVF9NQVgpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihzaXplRGlmZikgPCBVSU5UX01BWCk7CiAKICAgICBPcHRpb25zOjptYXhQZXJUaHJlYWRTdGFj
a1VzYWdlKCkgPSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2UgKyBzaXplRGlmZjsKICAg
ICBoZWxwZXIudXBkYXRlVk1TdGFja0xpbWl0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYzVhMWQxMmNmYS4uZjJjNzll
YjliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8
cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVz
ZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lO
VDMyKSBmbGFnLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDMtMDIg
IFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEpTQyAzMmJp
dCBhbGlnbm1lbnQgaW5jcmVhc2UgZ2NjIHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDFh
ZDYxNTA3NmM5Li4xNmM5YmQxMjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5
LDEwIEBACiAjZW5kaWYKICNlbmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVm
aW5lZChVU0VfSlNWQUxVRTMyXzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUg
VVNFX0JJR0lOVDMyIDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBt
b3JlIHNwZWNpZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8q
IFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lm
IENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392341</attachid>
            <date>2020-03-03 15:49:53 -0800</date>
            <delta_ts>2020-04-06 13:03:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>402345</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI4MDYyYmY4ZWQuLmUxODdkNDUxZDdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTAyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wMy0wMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIGJ5IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1
YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2
MzEuLjNiNTZjODU4YjI4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcg
KzE0LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNh
bWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1
dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4
RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2Jh
NDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9
IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0lu
dEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIg
KyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChh
KSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQo
bG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUp
OwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNh
bE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNl
LCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWpp
dC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1v
ZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAK
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9k
Rm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAg
KyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAs
ICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0
IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEw
biwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZh
bHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiAr
IHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdl
bmVyYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMK
aW5kZXggNGU1OGNhNjA3NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5
cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMg
Y29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vIE1vZGlmaWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rp
b24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
IGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVj
dGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiAr
IHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAx
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIx
MDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4s
IC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
LCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4s
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4
MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4s
IC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAt
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0K
LQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09
IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIw
YjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09
IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4g
MG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIz
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAw
eDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzgw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4
YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0x
biwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4g
Pj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0g
LTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZu
ID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24s
IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEy
N24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwg
LTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5
biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4s
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRm
ZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMK
QEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVz
ZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBh
c3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5j
dGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9Jbmxp
bmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVz
dHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4u
ODI1ZTg1ZDZiNjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFu
ZC1vdGhlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIu
anMKQEAgLTU5LDE3ICs1OSwxNyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsK
ICAgICAgICAgICAgIG5vSW5saW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RD
YXNlSW5kZXh9KTsKIAogICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7
bGVmdH0sICR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAo
dGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7
bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25v
bW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAg
ICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3Jp
Z2h0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9y
cGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVz
dWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNM
ZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0p
ICE9ICR7bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNS
aWdodENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0p
CiAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENv
bnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRl
c3RQb2x5bW9ycGhpYygke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9
KSI7CisgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9u
KCR7bGVmdH0sICR7b3BlcmF0b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50
UmVzdWx0fSkiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICAr
K3Rlc3RDYXNlSW5kZXg7CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEt
b24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9u
LXZhcmlvdXMtdHlwZXMuanMKaW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMKQEAgLTgzLDcgKzgzLDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAi
LCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAg
ICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRD
YXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0
IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0
Q2FzZXNbbGVmdENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkz
LDcgKzk0LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENh
c2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQg
PSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAg
ICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXgg
KyAiKSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3
YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1z
dHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3Qt
ZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAg
IHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAg
IGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFy
ZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJl
LmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFk
RW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBl
dmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNl
cHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhYmQx
ODQ2MDFiLi41OGMzMTFjMzYzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtOTc1LDYgKzk3NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmgKICAgICBydW50aW1lL1Njb3Bl
T2Zmc2V0LmgKICAgICBydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKKyAgICBydW50aW1l
L1NjcmliYmxlLmgKICAgICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUv
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDY0ZGEwYjYxNTguLmIxMDc3ZGNhZmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODcgQEAKKzIwMjAtMDMtMDIgIFJvYmluIE1v
cmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGlu
ZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIi
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhdHRlbXB0cyB0byBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgQmlnSW50cywgd2hl
biB0aGV5IGFyZSBzbWFsbCAoMzIgYml0IG9yIGxlc3MpLgorICAgICAgICBJdCB3b3JrcyBieSBp
bmxpbmluZyB0aGVtIGludG8gSlNWYWx1ZSBvbiA2NC1iaXQgcGxhdGZvcm1zLCBhdm9pZGluZyB0
aGUgYWxsb2NhdGlvbiBvZiBhIEpTQmlnSW50LgorICAgICAgICBUaGUgYml0IHBhdHRlcm4gd2Ug
dXNlIGlzIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiB3
b3JrcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICAtIEl0IGNhbm5v
dCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3Ag
Yml0cworICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBh
IENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAgICAtIEl0
IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQg
MCB3aGljaCBpcyBzZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQg
d2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0g
SXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlz
IHNldCB0byB0cnVlCisKKyAgICAgICAgVGhpcyBlbnRpcmUgY2hhbmdlIGlzIGdhdGVkIGJ5IFVT
RShCSUdJTlQzMiksIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc2FibGUgaWYgaXQgdHVybnMgb3V0
IHRvIGhhdmUgYnVncy4KKyAgICAgICAgSXQgc2hvdWxkIGFsc28gbWFrZSBpdCBtdWNoIGVhc2ll
ciB0byB2ZXJpZnkgaWYgYSBnaXZlbiBidWcgY29tZXMgZnJvbSBpdCBvciBmcm9tIHNvbWV0aGlu
ZyBlbHNlLgorCisgICAgICAgIE5vdGUgdGhhdCBpbiB0aGlzIHBhdGNoIHdlIGNyZWF0ZSBzdWNo
IHNtYWxsIEJpZ0ludHMgd2hlbiBwYXJzaW5nIEJpZ0ludCBjb25zdGFudHMsIGFuZCBtb3N0IG9w
ZXJhdGlvbnMgKGUuZy4gQWRkIG9yIEJpdE9yKSBwcm9kdWNlIGEgQmlnSW50MzIgaWYgYm90aCBv
ZiB0aGVpciBvcGVyYW5kcyBhcmUgQmlnSW50MzIsCisgICAgICAgIGJ1dCB3ZSBkb24ndCBwcm9k
dWNlIGEgQmlnSW50MzIgZnJvbSBmb3IgZXhhbXBsZSB0aGUgc3Vic3RyYWN0aW9uL2RpdmlzaW9u
IG9mIHR3byBsYXJnZSBoZWFwLWFsbG9jYXRlZCBKU0JpZ0ludHMsIGV2ZW4gaWYgdGhlIHJlc3Vs
dCBmaXRzIGluIDMyLWJpdHMuCisgICAgICAgIEFzIGEgcmVzdWx0LCBzbWFsbCBCaWdJbnRzIGNh
biBub3cgZWl0aGVyIGJlIGhlYXAtYWxsb2NhdGVkIG9yIGlubGluZWQgaW4gdGhlIEpTVmFsdWUu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNsdWRlcyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIG9m
IHZhcmlvdXMgc2xvdyBwYXRocywgd2hpY2ggYXJlIG5vdyBncm91cGVkIHRvZ2V0aGVyIGluIE9w
ZXJhdGlvbnMuaAorICAgICAgICBCZWNhdXNlIHRoaXMgaW5jcmVhc2VkIHRoZSBzaXplIG9mIE9w
ZXJhdGlvbnMuaCBzaWduaWZpY2FudGx5LCBJIHNwbGl0IHRoZSBwYXJ0cyBvZiBPcGVyYXRpb25z
Lmggd2hpY2ggYXJlIG9ubHkgdXNlZCBieSB0aGUgR0MgaW50byBTY3JpYmJsZS5oLCB0byBhdm9p
ZCBibG9hdGluZyBjb21waWxlIHRpbWVzLgorCisgICAgICAgIEluIHRoZSBERkcgYW5kIEZUTCB3
ZSBub3cgaGF2ZSAzIFVzZUtpbmRzIGZvciBCaWdJbnRzOiBIZWFwQmlnSW50VXNlLCBCaWdJbnQz
MlVzZSBhbmQgQW55QmlnSW50VXNlLgorICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCB3aGVu
IHdlIG5vdyB0aGF0IHdlIGFyZSByZWNlaXZpbmcgQmlnSW50cywgYnV0IHNwZWN1bGF0aW9uIGlu
ZGljYXRlcyBhIG1peCBvZiBoZWFwLWFsbG9jYXRlZCBhbmQgc21hbGwgKGlubGluZWQpIGJpZy1p
bnRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGEgbmFpdmUgaW1wbGVtZW50YXRpb24gb2Yg
dGhpcyBwYXRjaCBzaWduaWZpY2FudGx5IHJlZ3Jlc3NlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgU3Ry
aWN0RXEgKGFuZCBpdHMgdmFyaWFudHMpLCBhcyBpdCBpcyBubyBsb25nZXIgdHJ1ZSB0aGF0IGEg
Y2VsbCBhbmQgYSBub24tY2VsbCBjYW5ub3QgYmUgZXF1YWwuCisgICAgICAgIEJlZm9yZSB0aGlz
IHBhdGNoLCB0aGUgY29kZSB3YXMganVtcGluZyB0byBhIHNsb3cgcGF0aCBpZiBlaXRoZXI6Cisg
ICAgICAgIC0gYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBkb3VibGUKKyAgICAgICAgLSBvciBi
b3RoIG9wZXJhbmRzIGFyZSBjZWxscworICAgICAgICBOb3csIGl0IGFsc28gbmVlZHMgdG8ganVt
cCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwuCisgICAgICAgIFRv
IHJlY292ZXIgdGhpcyBwZXJmb3JtYW5jZSBjb3N0LCBJIHNpZ25pZmljYW50bHkgcmV3cm90ZSB0
aGlzIGNvZGUsIGZyb20KKyAgICAgICAgICBpZiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENl
bGwpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICAgfQorICAgICAg
ICAgIGlmICghIGxlZnQgaXMgSW50MzIpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0IGlzIE51bWJl
cikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICBp
ZiAoISByaWdodCBpcyBJbnQzMikgeworICAgICAgICAgICAgaWYgKHJpZ2h0IGlzIE51bWJlcikK
KyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1
cm4gbGVmdCA9PSByaWdodAorICAgICAgICBUbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgIGlm
IChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNs
b3dQYXRoCisgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAg
ICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
SSBiZWxpZXZlIHRoaXMgdG8gYmUgZmFzdGVyIHRoYW4ganVzdCByZXBsYWNpbmcgKGxlZnQgaXMg
Q2VsbCAmJiByaWdodCBpcyBDZWxsKSBieSBhbiB8fCwgYmVjYXVzZSBJIGZvdW5kIGEgYml0LXRy
aWNrIHRvIGNoZWNrIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpIHdoaWNoIHNo
b3VsZCBoZWxwIHJlZHVjZSB0aGUgcHJlc3N1cmUgb24gdGhlIGJyYW5jaCBwcmVkaWN0b3IuCisg
ICAgICAgIEVhcmx5IEpldFN0cmVhbTIgdGVzdHMgYXBwZWFyIHRvIGNvbmZpcm0gdGhhdCB0aGlz
IHBhdGNoIGlzIHJvdWdobHkgbmV1dHJhbCB3aGlsZSBpdCB3YXMgYSAwLjUlIHJlZ3Jlc3Npb24g
YmVmb3JlIEkgdXNlZCB0aGlzIHRyaWNrLCBidXQgdGhlIG51bWJlcnMgYXJlIHN0aWxsIHRvbyBu
b2lzeSwgSSBwbGFuIHRvIGRvIG1vcmUgbWVhc3VyZW1lbnRzIGJlZm9yZSBsYW5kaW5nIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgSSBkb24ndCB5ZXQgaGF2ZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZv
ciB0aGlzIHBhdGNoIG9uIGEgQmlnSW50IGJlbmNobWFyaywgSSB3aWxsIGdldCBzdWNoIG51bWJl
cnMgYmVmb3JlIHRyeWluZyB0byBsYW5kIGl0LCBidXQgSSdkIGxpa2Ugc29tZSByZXZpZXcgaW4g
dGhlIG1lYW50aW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyOjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRPYnNlcnZlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0lu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0
U2V0QmlnSW50MzIgY29uc3QpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAg
ICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1
bHRzOjpkaWRPYnNlcnZlTm9uSW50MzIpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6
OmRpZE9ic2VydmVCaWdJbnQpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9i
c2VydmVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNl
cnZlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVIZWFw
QmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmln
SW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSGVh
cEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRCaWdJbnQz
Mik6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwp
OgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0RhdGFGb3Jt
YXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNw
cDoKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9y
dFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpkdW1wU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21D
bGFzc0luZm8pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0
aW9uRnJvbUpTVHlwZSk6CisgICAgICAgIChKU0M6OmxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlF
cXVpdmFsZW50U3BlY3VsYXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oOgorICAgICAgICAoSlNDOjppc0JpZ0ludDMyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlND
Ojppc0hlYXBCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQmlnSW50U3BlY3Vs
YXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlz
QW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFz
ZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6Zml4dXBUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Om9i
c2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpj
b21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVk
Z2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0
Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVM
U2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUJpdFJTaGlmdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
aGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
QWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3Vi
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpTcGVj
dWxhdGVCaWdJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0lu
dDMyT3BlcmFuZDo6flNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjplZGdlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6Om5vZGUgY29uc3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OnVzZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9s
ZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVBbnlCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQmlnSW50MzJDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAg
ICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzQ2VsbCk6
CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKToKKyAgICAgICAg
KiBmdGwvRlRMQ29tbW9uVmFsdWVzLmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlU3ViKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTXVsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURp
dik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1v
ZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVBv
dyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJp
dE5vdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1
ZUJpdEFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVW
YWx1ZUJpdE9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVZhbHVlQml0WG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFyaXRoQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUFyaXRoQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpdFVSU2hpZnQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNCaWdJbnQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBlT2YpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dIZWFwQmlnSW50KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6aXNOb3RCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OnVuYm94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmlzTm90QW55QmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNl
bGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVCaWdJ
bnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFu
eUJpZ0ludCk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVp
bGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgICogaGVhcC9QcmVjaXNl
QWxsb2NhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFBy
ZXZpZXcpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVh
bik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZSk6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJyYW5jaElmQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJy
YW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6dW5ib3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRUeXBl
T2YpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
QXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1l
cmljKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9f
bnVtZXJpYyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
Lmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
QXJlbmEuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNp
bWFsSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnRv
QmlnSW50KToKKyAgICAgICAgKEpTQzo6Y2FsbEJpZ0ludENvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0JpZ0ludE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9CaWdJbnRPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc0JpZ0ludFZhbHVlKToKKyAgICAg
ICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKToKKyAgICAgICAg
KEpTQzo6dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgICogcnVu
dGltZS9KU0JpZ0ludC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5jKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRlYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpi
aXR3aXNlQW5kKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6Cisg
ICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb051bWJlcik6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbHNUb0ludDMyKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6Cisg
ICAgICAgIChKU0M6OmFzSGVhcEJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnN5bnRoZXNpemVQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpk
dW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpkdW1wRm9yQmFja3RyYWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9T
dHJpbmdTbG93Q2FzZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YXNIZWFwQmlnSW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpp
c0JpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YmlnSW50MzJBc0ludDMy
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNQcmltaXRpdmUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjp0b051bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0JpZ0lu
dE9ySW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OnN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
cHVyZVN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbiBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6dG9QcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omdl
dFByaW1pdGl2ZU51bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9OdW1iZXIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHVy
ZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNU
eXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBy
dW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OmNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKToKKyAgICAg
ICAgKEpTQzo6YmlnSW50Q29tcGFyZSk6CisgICAgICAgIChKU0M6OmpzTGVzcyk6CisgICAgICAg
IChKU0M6OmpzTGVzc0VxKToKKyAgICAgICAgKEpTQzo6YXJpdGhtZXRpY0JpbmFyeU9wKToKKyAg
ICAgICAgKEpTQzo6anNTdWIpOgorICAgICAgICAoSlNDOjpqc011bCk6CisgICAgICAgIChKU0M6
OmpzRGl2KToKKyAgICAgICAgKEpTQzo6anNSZW1haW5kZXIpOgorICAgICAgICAoSlNDOjpqc1Bv
dyk6CisgICAgICAgIChKU0M6OmpzSW5jKToKKyAgICAgICAgKEpTQzo6anNEZWMpOgorICAgICAg
ICAoSlNDOjpqc0JpdHdpc2VOb3QpOgorICAgICAgICAoSlNDOjpzaGlmdCk6CisgICAgICAgIChK
U0M6OmpzTFNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNSU2hpZnQpOgorICAgICAgICAoSlNDOjpi
aXR3aXNlQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VBbmQpOgorICAgICAgICAo
SlNDOjpqc0JpdHdpc2VPcik6CisgICAgICAgIChKU0M6OmpzQml0d2lzZVhvcik6CisgICAgICAg
ICogcnVudGltZS9TY3JpYmJsZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuaC4KKyAgICAgICAgKEpTQzo6c2NyaWJibGVGcmVlQ2VsbHMp
OgorICAgICAgICAoSlNDOjppc1NjcmliYmxlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6c2NyaWJi
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlND
Ojpwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKToKKwogMjAyMC0wMy0wMiAgSnVzdGlu
IE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIGJ5
IHZhbCBjYWNoaW5nIGRvZXMgbm90IGtlZXAgdGhlIHN1YnNjcmlwdCBhbGl2ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOC4uYmE2NTFiMGU0MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYsNiArODY2LDcgQEAKIAkJMkFEODkzMkIxN0Uz
ODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhl
YXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYz
NkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291
cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzExMUI4QTIzOTcyNTY1MDBBQTM0
Q0UgLyogU2NyaWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3
MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCAqLzsgfTsKIAkJMzNB
OTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQTkyMEJDMjNEQTJDNkQw
MDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzNCMkE1NDcyMjY1MzQ4MTAwNUEwRjc5IC8q
IEIzVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVDODRGQjFCREFDREFDMDA4MEZGNzQgLyogQjNWYWx1ZUlubGluZXMuaCAqLzsg
fTsKQEAgLTM1MDcsNiArMzUwOCw3IEBACiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBT
dHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVj
dHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFE
NDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBB
NUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhw
cmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2
ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHBy
ZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0QTIy
NEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBw
YXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1p
bmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
RWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTQzLDYgKzc1NDUsNyBAQAogCQkJCTBG
RTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oICovLAogCQkJ
CTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5jcHAgKi8sCiAJCQkJMEZF
MDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggKi8sCisJCQkJMzMxMTFCOEEy
Mzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8sCiAJCQkJMTQ3MzQxRTAxREMyQ0U5NjAw
QUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUNEMURDMDJENzkw
MEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi8sCiAJCQkJODg1MjE1MUE5QzM4NDIzODlC
MzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywKQEAgLTg5MDcsNiArODkxMCw3IEBACiAJCQkJ
MEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRp
bmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8q
IFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEg
LyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIw
MEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1
RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBj
MTAwMjQwNGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNDY5OCw3ICs0Njk4LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAgICAvLwotICAgICAgICAvLyBBbiBpbW1lZGFp
dGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBi
ZWVuIGVtaXR0ZWQuCisgICAgICAgIC8vIEFuIGltbWVkaWF0ZSBzaG91bGQgYmUgYXBwZW5kZWQg
d2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KICAgICAgICAg
Ly8gVGhlIHdyaXRlcyBhcmUgdW5jaGVja2VkIHNpbmNlIHRoZSBvcGNvZGUgZm9ybWF0dGVycyBh
Ym92ZSB3aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4KIAogICAgICAgICB2b2lkIGltbWVkaWF0ZTgo
aW50IGltbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5jcHAKaW5kZXggZmVhNjY3NDViNjIuLmYyYzA1ODRkNDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0
KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1v
ZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChD
Q2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1Jl
Z2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAh
c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAg
IGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygp
ICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpA
QCAtNDgsOSArNDgsMTggQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9i
c2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJs
ZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIENDYWxsSGVscGVyczo6SnVt
cCBub3RCaWdJbnQzMiA9IGppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVn
cywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQo
aml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIubGluaygmaml0KTsKKyNlbHNlCisgICAgKHZv
aWQpIHRlbXBHUFI7CisjZW5kaWYKKwogICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIGVtaXRTZXRCaWdJbnQoaml0KTsK
KyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ3MucGF5
bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBCaWdJbnQoaml0KTsKICAgICBkb25lLmFwcGVu
ZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVyaWMubGluaygmaml0KTsKQEAgLTg4LDE5ICs5
NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJp
YyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0Zmll
bGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJp
Z0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0
U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBCaXRmaWVsZFR5
cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7CisgICAgcmV0dXJuIChtX2JpdHMg
JiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25zdAogewotICAgIEJpdGZpZWxk
VHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgQml0ZmllbGRUeXBlIG1h
c2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBt
YXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12b2lk
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYg
aml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBC
aWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEVtaXRTZXRC
aWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3Vs
dHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkpCisgICAgICAg
IGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsK
IH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4K
K3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQzMihDQ2FsbEhl
bHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCisg
ICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQz
Mik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgogdm9pZCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBjb25zdAogewpAQCAtMTQ5LDggKzE3OCwxMiBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxl
PFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkludDUyT3Zl
cmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKICAgICAgICAgfQotICAgICAg
ICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmlu
dChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUhl
YXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkhlYXBCaWdJ
bnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIoKSkgeworICAgICAgICAgICAgb3V0LnByaW50
KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQ
cm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdjMWZlNzEzYjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsMjEgKzc0LDI0IEBA
IHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwKICAgICAgICAgSW50
MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAgICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwg
NCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgSGVhcEJpZ0lu
dCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmlnSW50MzIgICAgICAgICA9IDEgPDwgNiwKICAg
ICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDY7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNzsKIAogICAgIE9i
c2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAgICBleHBsaWNpdCBPYnNlcnZlZFJlc3VsdHMo
dWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0cyhiaXRzKQogICAgIHsgfQogCi0gICAgYm9v
bCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJs
ZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50KTsgfQorICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBO
ZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KICAg
ICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0Rv
dWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0Rv
dWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5lZ1plcm9Eb3VibGU7IH0KICAgICBib29sIGRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTmVnWmVyb0RvdWJsZTsg
fQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSB7IHJldHVybiBtX2JpdHMgJiBOb25O
dW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYg
QmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYg
KEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAgICBib29sIGRpZE9ic2VydmVIZWFwQmlnSW50
KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJp
Z0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50MzI7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50MzJPdmVyZmxvdzsgfQogICAg
IGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMgJiBJbnQ1Mk92
ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIGRpZE9i
c2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMo
KSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlTm9uTnVtZXJpYygp
OyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRS
ZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJp
Z0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVIZWFwQmln
SW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigpIGNvbnN0IHsgcmV0dXJuIG9i
c2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQzMigpOyB9CiAgICAgYm9vbCBkaWRPYnNl
cnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9i
c2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUludDUyT3ZlcmZs
b3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJp
dChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNl
cnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3Vi
bGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChPYnNlcnZl
ZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsg
c2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRI
ZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsgfQorICAg
IHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6Qmln
SW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChP
YnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZElu
dDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cpOyB9
CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9iaXRzIHw9IE9i
c2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVy
ZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSB8IE9ic2VydmVkUmVzdWx0
czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgICAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUu
aXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6
OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9i
aXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVtZXJpYzsKQEAgLTEzOSwxOSArMTQ5LDIyIEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJ
bnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNl
ZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVt
ZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVS
ZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgdm9pZCBlbWl0
T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIs
IFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKIAogICAgIC8vIFNldHMgKElu
dDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9E
b3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0OwogICAgIHZvaWQg
ZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAotICAgIC8vIFNldHMgTm9uTnVt
ZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAg
ICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBC
aWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAg
Ym9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0
SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0Owor
I2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMm
KSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBlbWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhl
bHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0OwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC0x
NzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CiBj
bGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5
cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVtQml0c05lZWRlZDsKIAotICAgIHN0YXRpY19h
c3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQg
PD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRo
ZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOworICAgIHN0YXRpY19hc3NlcnQo
YXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6
ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0aGUgdHlwZSBv
ZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgVW5h
cnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19j
YXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlm
dCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlIDogcHVi
bGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugc3BlY2lhbEZhc3RQYXRo
Qml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2
ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0gc2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEp
IDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRo
ZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0
aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQg
bm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAm
IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2Vj
dC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzcGVjaWFsRmFz
dFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRpY19jYXN0PEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spKSwgIlRoZXNlIGJpdHMg
c2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBo
aWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLjQ4Yjc4NzBlY2RiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTMyNyw2ICszMjcsNyBA
QCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAgOmlzX3VuZGVmaW5lZF9vcl9udWxsLAogICAg
ICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlzX251bWJlciwKKyAgICAgICAgOmlzX2JpZ19p
bnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAgICAgIDppc19vYmplY3Rfb3JfbnVsbCwKICAg
ICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXgg
OWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVz
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMu
aCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2
N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NCw2ICsxNzQsNyBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0
ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgb3BlcmFuZCkK
ICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc051bWJlciwgb3Bl
cmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzT2JqZWN0
LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVjdE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VT
KE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBAIC00MjMsOSArNDI0LDEwIEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkK
ICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAgIERFRlMoT3BJc1VuZGVmaW5lZCwgZHN0KQot
ICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQorICAgIERFRlMoT3BJc1VuZGVmaW5l
ZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jvb2xlYW4sIGRzdCkKICAgICBERUZTKE9wSXNO
dW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJbnQsIGRzdCkKICAgICBERUZTKE9wSXNPYmpl
Y3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RPck51bGwsIGRzdCkKICAgICBERUZTKE9wSXND
ZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggOTFlZWZhMDA5OGUuLjNjMGVjZmNmMmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTksNyArNTksNiBAQAogI2lu
Y2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCmluZGV4IDMyZjU4OGRi
ZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBAQCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90
IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUsCiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAog
ICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAgICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERh
dGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZv
cm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZv
cm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRh
Rm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZv
cm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAor
ICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0lu
dDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMg
YW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIs
IAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44
MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2
LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJz
JiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0Cit2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3Mg
cmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgTm9uZToKQEAgLTY3LDEyICs2NywxMiBAQCB2
b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhl
bHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBVbmFyeUFy
aXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNl
cnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS51
bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBt
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9m
aWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVz
dWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS5iaW5hcnlB
cml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwgbW9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgK
aW5kZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUluZGV4LmgiCiAjaW5jbHVk
ZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiVGFnUmVnaXN0
ZXJzTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODMsNyArODQsOCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBK
U1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFyeSByZWdpc3RlciBpcyBvbmx5
IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3RpbmcgQmlnSW50MzIpLgorICAgIHZv
aWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVt
cEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpIGNvbnN0OwogICAgIHZv
aWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCAxMDUzYmE1MmI1NC4u
NzcxYzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSArMjM5LDYgQEAgdm9pZCBkdW1wU3BlY3VsYXRp
b24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAg
ICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBp
c1RvcCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQpCi0gICAgICAg
ICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgPT0gU3BlY0ludDMyT25s
eSkKQEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0m
IG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAgIAorCisgICAgaWYgKCh2YWx1ZSAmIFNwZWNC
aWdJbnQpID09IFNwZWNCaWdJbnQpCisgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgeworICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmln
SW50MzIpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludDMyIik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHZhbHVlICYgU3Bl
Y0hlYXBCaWdJbnQpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICB9CisjZW5kaWYKKwog
ICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCiAgICAgICAgIHN0ck91dC5wcmlu
dCgiRG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBAIC00MzEsNyArNDQyLDcgQEAgU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICAKICAgICBpZiAoY2xhc3NJbmZvID09
IEpTQmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgICAgICBy
ZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBpZiAoY2xhc3NJbmZvID09IEpTRmluYWxPYmpl
Y3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKQEAgLTQ5OSw4ICs1
MTAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIGlmIChzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpCiAgICAgICAgIHJldHVybiBTcGVj
U3ltYm9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEJpZ0ludFR5
cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQorICAgICAgICByZXR1cm4gU3BlY0hlYXBC
aWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRGVyaXZlZEFy
cmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJyYXk7CiAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKQEAgLTUzNiw2
ICs1NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlIHZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0RvdWJsZTsKICAgICAgICAgcmV0
dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBpZiAodmFsdWUuaXNDZWxsKCkp
CiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKICAg
ICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01OTUsOCArNjA4LDggQEAgT3B0aW9uYWw8U3Bl
Y3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkKICAgICAgICAg
cmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBTeW1ib2xUeXBlOgogICAgICAgICByZXR1cm4g
U3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5cGU6Ci0gICAgICAgIHJldHVybiBTcGVjQmln
SW50OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJp
Z0ludDsKICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAg
ICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02MzIsNiArNjQ1LDEwIEBAIFNwZWN1bGF0ZWRU
eXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKFNwZWN1
bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAmIFNwZWNTdHJpbmcpCiAgICAgICAgIHR5cGUg
fD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBlICYgU3BlY0JpZ0ludCkKKyAgICAgICAgdHlw
ZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNWRiMThjNjQ4MmQu
LmRmMGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwxNCBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51
bGwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTWlz
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7
IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQu
CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkg
dmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZp
ZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hl
YXBCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcAorc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgc21hbGwgQmlnSW50IHRoYXQg
aXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQmlnSW50MzIgfCBTcGVj
SGVhcEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3
T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDM7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmlt
aXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8
IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkg
bm9uLU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
T2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3Bl
Y0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFy
Z3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1Jl
Z0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFw
T2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRP
YmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90
aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9y
IGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY09iamVj
dCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8IFNwZWNCaWdJbnQ7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwg
U3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFi
b3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCitz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVj
Q2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4K
K3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVt
YmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9y
IFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBT
cGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4
Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9u
ZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgogc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRvcCAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1iZXI7IC8vIEl0IGNhbiBiZSBhbnl0
aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4b3RpYyBlbmNvZGluZ3Mgb2YgbnVt
YmVycy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9vbCBpc1N5bWJvbFNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjU3ltYm9s
OwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQzMjsKK30KKworaW5saW5l
IGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmlnSW50OworfQorCiBpbmxpbmUgYm9vbCBpc0Jp
Z0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1
ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNCaWdJ
bnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0FycmF5U3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGZhM2FiYmQxMWFkLi4xNDg0ZGY4
OTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4K
ICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAqCkBAIC0xNjY4LDcgKzE2Njgs
MTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgewogICAgICAg
ICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVt
aXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgICAgICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRz
dCwgb3AubV92YWx1ZSwgSGVhcEJpZ0ludFR5cGUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9i
amVjdCIpIHsKQEAgLTI4NzYsNyArMjg4MCw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ4CiAg
ICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmlt
cGwoKSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWduID8gSlNC
aWdJbnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5z
aWduZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUlu
dChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVy
cm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAgICAgIEpT
VmFsdWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRl
bnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDI5ODkzNzQwYTg1Li4wYTAwM2I4ZjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA4OSw3
ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0g
SGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5n
TWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJl
cEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJ
bnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1h
cCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFzaE1hcDx1
aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8dWludDY0
X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNi4uOTgzM2VhYzE5MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0
b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgi
CkBAIC0yMTQsNyArMjEzLDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRp
dHkoVk0mIHZtLCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9v
bCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0
dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAg
ICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAg
QVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5
cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7Cisg
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmlu
Z1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBIZWFw
QmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKICAgICAgICAgICAg
ICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgpAQCAt
NTAyLDcgKzUwMSwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSkgeworICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMy
KTsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICB9IGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzIsNyArNTM2LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEJpbmFyeUJpdHdpc2VPcChub2RlKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2YgYmluYXJ5VXNlS2lu
ZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVjaWFsaXplIHRvIChmb3IgZXhhbXBsZSkgYSBIZWFw
QmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdodC1vcGVyYW5kLgorICAgICAg
ICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIpOworICAgICAgICAgICAgQVNTRVJU
KFVTRV9CSUdJTlQzMik7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
SGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBB
bnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTcyMiwx
MSArNzMyLDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIFZhbHVlU3Vi
OgogICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2Rl
LCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJp
Z0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50
KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgLy8g
RklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNwZWNTdHJpbmcgaGVyZSBmb3IgVmFsdWVTdWI/IEl0
IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0IGZvciBWYWx1ZUFkZC4KICAgICAgICAgICAgIHNl
dFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVj
QmlnSW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTg4Niw2ICs4OTksNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZU5l
Z2F0ZTogeworICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gbXVjaCBzbWFydGVyIHRoaW5n
cyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRkL1ZhbHVlU3ViLgogICAgICAgICBjbG9iYmVyV29y
bGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlTnVtYmVyIHwg
U3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTU4LDcgKzk3MiwxMSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCB0eXBlT2ZEb3VibGVJbmNPckRlYyhmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgog
ICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTk3NCw3ICs5OTIsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkWSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZFggJiYgY2hpbGRZICYmIGNoaWxkWC5p
c051bWJlcigpICYmIGNoaWxkWS5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVk
IHRvIGNhbGwgYGRpZEZvbGRDbG9iYmVyV29ybGRgIGhlcmUgYmVjYXVzZSB0aGlzIHBhdGggaXMg
b25seSBwb3NzaWJsZQotICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlw
ZWRVc2UuIEluIHRoZSBjYXNlIG9mIEJpZ0ludFVzZSwgY2hpbGRyZW4gd2lsbCBiZQorICAgICAg
ICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlwZWRVc2UuIEluIHRoZSBjYXNlIG9m
IEFueUJpZ0ludFVzZSBvciBmcmllbmRzLCBjaGlsZHJlbiB3aWxsIGJlCiAgICAgICAgICAgICAv
LyBjbGVhcmVkIGJ5IGBBYnN0cmFjdEludGVycHJldGVyOjpleGVjdXRlRWZmZWN0c2AuCiAgICAg
ICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAgICAgICAvLyBPdXIgYm94aW5n
IHNjaGVtZSBoZXJlIG1hdGNoZXMgd2hhdCB3ZSBkbyBpbiBvcGVyYXRpb25WYWx1ZVBvdy4KQEAg
LTk4Miw3ICsxMDAwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBC
aWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsK
KyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8
fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRU
eXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5Miw3ICsxMDEyLDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZU11bDogewotICAgICAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0
aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRoIFZhbHVlU3ViPworICAgICAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMDU2LDcgKzEw
NzksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAoaGFuZGxlQ29uc3Rh
bnREaXZPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmIChub2RlLT5i
aW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2Rl
LCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNl
KQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0xMzgwLDYgKzE0MDUsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAg
ICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50
OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2Fz
ZSBJc09iamVjdE9yTnVsbDoKQEAgLTE0MDgsNiArMTQzNCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzTnVtYmVyKCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNCaWdJbnQo
KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBOdW1iZXJJc0lu
dGVnZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKE51bWJl
ckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNoaWxkLnZhbHVlKCkpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNTYyLDcgKzE1OTEsMjIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3Bl
Y0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4o
dHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCEoY2hpbGQu
bV90eXBlICYgU3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBpZiB0aGUgU3BlY3VsYXRlZFR5cGUgaW5mb3JtcyB1cyB0aGF0IHdlIHdvbid0
IGhhdmUgYSBCaWdJbnQzMiAob3IgdGhhdCB3ZSB3b24ndCBoYXZlIGEgSGVhcEJpZ0ludCksIHRo
ZW4gd2UgY2FuIHRyYW5zZm9ybSB0aGlzIG5vZGUgaW50byBhIElzQ2VsbFdpdGhUeXBlKEhlYXBC
aWdJbnRUeXBlKSAob3IgYSBoeXBvdGhldGljYWwgSXNCaWdJbnQzMiBub2RlKS4KIAorICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAg
aWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKSB7CiAgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKQEAgLTE5MzYsMTMgKzE5ODAsMTUg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisg
ICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjaGVjayBoZXJlLCBhbmQgbm90IGxhdGVyIChh
ZnRlciB0aGUgdHlwZS1iYXNlZCByZXBsYWNlbWVudCBieSBmYWxzZSkuCisgICAgICAgIC8vIFNh
YW0gc2VlbXMgdG8gYWdyZWUgdGhhdCB0aGUgdHdvIGNoZWNrcyBjb3VsZCBiZSBzd2l0Y2hlZCwg
SSdsbCB0cnkgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoCiAgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0
IHRoaXMgY29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KLSAgICAgICAg
ICAgIGF1dG8gaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgewot
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUu
aXNTdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25z
dGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVl
ICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBC
aWdJbnQoKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmIChpc05vblN0cmluZ0Nl
bGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25zdGFudChyaWdodCkpIHsKKyAg
ICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KGxlZnQpIHx8IGlz
Tm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQocmlnaHQpKSB7CiAgICAgICAgICAgICAgICAg
bV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFuKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE5NTcsMTkgKzIwMDMsMjQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IG5v
ZGUtPmNoaWxkMigpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJv
b2xlYW5Vc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMy
VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVz
ZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSB8
fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkg
fHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKSB8fAot
ICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpIHx8Ci0gICAg
ICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpIHx8
Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NV
c2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50
VXNlLCBOb3RTdHJpbmdWYXJVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkgfHwKLSAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBjYXNlIG5vdCBpbnZvbHZpbmcg
TmFOIHdoZXJlIHggPT09IHggaXMgbm90IGd1YXJhbnRlZWQgdG8gcmV0dXJuIHRydWU/CisgICAg
ICAgICAgICAvLyBJZiBub3QgSSBtaWdodCBzbGlnaHRseSBzaW1wbGlmeSB0aGF0IGNoZWNrLgor
ICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkKKyAgICAgICAgICAg
ICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpCisgICAgICAgICAgICAg
ICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgICAgICB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUt
PmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKQorICAgICAgICAgICAg
ICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFy
VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdW
YXJVc2UsIFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkKKyAgICAgICAgICAgICAgICB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICAgICAgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBkMWZhMGIzMTc4Ny4uYzhjMjVjMzBkMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NTYyLDYg
KzU1NjIsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX251bWJlcik7CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIG9wX2lzX2JpZ19pbnQ6IHsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklH
SU5UMzIpOworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0JpZ0ludD4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2Rl
Lm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
SXNCaWdJbnQsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19iaWdfaW50
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxs
V2l0aFR5cGU+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29w
ZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDc1OWI3NzgwYTZjLi4wM2U4OWIyNmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQ5LDYgKzE0OSw3IEBAIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9pc191bmRlZmluZWRfb3JfbnVsbDoKICAgICBj
YXNlIG9wX2lzX2Jvb2xlYW46CiAgICAgY2FzZSBvcF9pc19udW1iZXI6CisgICAgY2FzZSBvcF9p
c19iaWdfaW50OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0
X29yX251bGw6CiAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlwZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIzMThmZTAzYWUuLmVjMWVmOWYwMjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NSw2
ICsxNzUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgSXNVbmRlZmluZWRP
ck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNl
IElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6
CiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgpAQCAtMjYwLDcgKzI2MSw3IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6
Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Cisg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShu
b2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY4NSw3ICs2ODYsOSBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAg
Y2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIGNhc2Ug
SGVhcEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAgICAgICAgICAgICBk
ZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOgpAQCAtNzA3LDcgKzcxMCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBWYWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0TFNoaWZ0OgogICAgIGNhc2UgVmFs
dWVCaXRSU2hpZnQ6Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNl
KSkgeworICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2Ygc2luZ2xlLWFyZ3VtZW50IGlzQmlu
YXJ5VXNlS2luZCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gc3BlY2lhbGl6aW5nIChmb3IgZXhhbXBs
ZSkgZm9yIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3Bl
cmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiNDNmN2NmNTRl
MS4uYWM2ODM0MzMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3
aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
aXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYg
IXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5n
KCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAgICAgICAgICB9OwogCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KGNo
aWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDU1ZDNjOGZkNWRjLi5lYWE1YjI0MTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUu
aCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAt
MTQ3LDYgKzE0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2Ug
SXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoK
ICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlOTdkZTEwZjZmNC4uOTI0
ODZmYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIwMSwxNCArMjAxLDM0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQo
Tm9kZVJlc3VsdEludDMyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBp
cyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhlcndpc2Uu
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9wdGltaXplIGluYy9kZWMgdG8g
YSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4gdGhhdCBjYXNlLgorICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOwor
ICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUobV9pbmRleEluQmxvY2ssIFNwZWNIZWFwQmlnSW50LCBKU0NvbnN0YW50LCBub2RlLT5vcmln
aW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0YW50T25lLmdldCgpKSkp
OworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25z
dGFudE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRzIGFyZSBjZWxscywgc28g
dGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBW
YWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50MzIsIEpT
Q29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4u
c2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVm
YXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBm
b3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0Nl
bGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3
aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVj
IHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIGluIHRoYXQgY2FzZS4KICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3Vi
KTsKLSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0NvbnN0YW50LCBub2RlLT5vcmln
aW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0YW50T25lLmdldCgpKSkp
OworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+b3Jp
Z2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAx
KSkpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2Rl
Q29uc3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUgY3VycmVudGx5IGNlbGxzLCBz
byB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyNlbmRpZiAvLyBV
U0UoQklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0g
SW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJp
dGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNCwxMiArMjU0LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAg
ICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgp
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxk
Mi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAgICAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50
eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNo
aWxkMik7CkBAIC0yNjcsOCArMjk1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVC
aXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAgICAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTMxMiw3ICszNTMsMTcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG9w
ZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAg
ICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmln
SW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4ob3BlcmFu
ZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hv
dWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZWxzZQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworI2Vu
ZGlmCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3Bl
Y3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NTcsOSArNTA4LDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxk
Mi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGls
ZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hp
bGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CisjZW5kaWYKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTU0NSw4ICs2
MDQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5j
aGlsZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChs
ZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihsZWZ0Q2hpbGQubm9k
ZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0
Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KQEAgLTU4NywxMiArNjU5LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBF
ZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0
Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihsZWZ0
Q2hpbGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihyaWdodENoaWxkKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxlZnRDaGlsZC5ub2RlKCksIHJp
Z2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4o
bGVmdENoaWxkKTsKQEAgLTY1NiwxMiArNzM2LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJ
TlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5j
bGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVVbnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTI1NDAsNiArMjYyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgogICAgICAgICBjYXNl
IElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAgICBjYXNlIElzT2JqZWN0
T3JOdWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGly
ZWN0QXJndW1lbnRzOgpAQCAtMjg4MCw3ICsyOTY5LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgp
KQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CkBAIC0yOTUzLDcgKzMwNTEsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBpcyBCaWdJbnQsIHdlIGF0
dGVtcHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNpbmNlIGl0IGNhbiBvbmx5
IHJldHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDMzLDEzICsz
NTQwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNl
IEtub3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBC
aWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICAgICAgY2FzZSBTdHJp
bmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAg
ICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkKICAgICAgICAgICAgICAg
ICB8fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAg
ICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0
YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6
IHdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UgPwor
ICAgICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBhbGwgb2YgdGhlIFVzZUtp
bmRzIHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NDksMTIgKzQwNTgsMjYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVT
dHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29t
cGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BB
bmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENv
bXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyNlbmRpZgog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkg
JiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxLi5mODE3MGQ5MmJm
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5j
bHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAppbmRleCAxMzQ1NWI1YzI5Zi4uOTdmMTdhMDg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjU0MSw2ICsyNTQxLDE4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
OworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpCiAgICAg
ewpAQCAtMjc0MSw3ICsyNzUzLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBv
cDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBib29sIHNo
b3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAmJiBvcDItPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpICYmIG9wMi0+c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZFNw
ZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBvcDItPnNob3VsZFNw
ZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKaW5kZXggZTIxMWVhNzdkODUuLmFmMGYzZjc0MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTUsNiArMzk1LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzVW5kZWZpbmVkT3JOdWxsLCBOb2RlUmVzdWx0Qm9v
bGVhbikgXAogICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBt
YWNybyhJc051bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICAvKiBJc0JpZ0ludCBpcyBv
bmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIuIE90aGVyd2lzZSB3ZSBlbWl0IElzQ2VsbFdpdGhU
eXBlICovXAorICAgIG1hY3JvKElzQmlnSW50LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1h
Y3JvKE51bWJlcklzSW50ZWdlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09i
amVjdCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09iamVjdE9yTnVsbCwgTm9k
ZVJlc3VsdEJvb2xlYW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
CmluZGV4IDIzZWJlMGQ3YmM3Li5iMjIxMTliOWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxMyBAQCB2b2lkIE9TUkV4aXQ6OmNv
bXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQs
IGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUg
YSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdSZWdpc3RlciwKICAgICAgICAg
ICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0LgogICAgICAgICAgICAg
ICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291
cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUg
bm90Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdpc3RlciwgZm9yIHRoZSBzYW1l
IHJlYXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmluZCBhIGxlc3MgZ3Jvc3Mgd2F5
IG9mIGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcgdGhlc2Ugb3BlcmF0aW9ucyB1
bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0ZXJzIGFyb3VuZD8KKyAgICAg
ICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9O
b3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3Rlcik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdw
cigpKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1Zh
bHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzayksIEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KQEAgLTM5OCw3
ICs0MDEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBW
TSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5h
c0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRW
YWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAg
ICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00MDcsMTAgKzQxMCwxMCBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUo
c2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsKICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BU
b1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3Mo
KSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1f
anNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5oCmluZGV4IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCAyZmRiOWM5ZDc2Ny4uYTI2NWMwYWE3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNs
dWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1
ZGUgPHd0Zi9JbmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjaWYgRU5B
QkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMSw1NiArMjIwLDYgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwg
aWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50T3Bl
cmF0aW9uLCB0eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRpb24mJiBudW1iZXJPcCwg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwot
Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihudW1iZXJPcChXVEY6Omdl
dDxkb3VibGU+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKSkp
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMy
T3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYml0d2lzZUJp
bmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50T3BlcmF0aW9u
JiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JN
ZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQot
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFs
dWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IG9wMi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUucmVsZWFzZSgpOwotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQzMk9wKFdURjo6Z2V0PGludDMy
X3Q+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpKTsKLX0K
LQogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFyc2VJbnRSZXN1bHQoZG91
YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0PGludD4oaW5wdXQpOwpA
QCAtNDcwLDcxICs0MTksMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0
byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
bGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0g
ICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3Vi
bGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIHJlbWFpbmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0
PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIodmFsdWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0luYyhnbG9i
YWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0g
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBv
cDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmROdW1l
cmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2YWx1
ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0RlYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXROb3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpOwogCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFu
ZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50
Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NDMsMTUgKzQ1NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJp
Z2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICBy
ZXR1cm4gbGVmdCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9w
KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQz
Mk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2Fu
ZCcgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VB
bmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU2MCwxNSAr
NDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9
IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJ
bnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdp
c2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQz
Mk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAg
ICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lz
ZSAnb3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3
aXNlT3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01Nzcs
MTUgKzQ3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJp
dHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewot
ICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lz
ZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0lu
dE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJp
dHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC01OTQsMTUgKzQ4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1
dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQq
IGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGlu
dDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAweDFmKTsKLSAgICB9Owot
Ci0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3Ax
LCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCkBAIC02MTEsMTUgKzQ5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBp
bnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPj4gKHJpZ2h0
ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9w
ZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSU2hpZnQoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQml0VVJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjU3LDE1ICs1Mjks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10g
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCog
cmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZGl2aWRlKGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0g
W10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVy
biBsZWZ0IC8gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24gb3BlcmF0aW9uLiIp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NzQsMTUgKzUzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQs
IGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQ
b3cobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9uIG9wZXJh
dGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNQb3coZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KSkpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEFicyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQpAQCAtMTQ3
OSw3ICsxMzM1LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3QsIGlucHV0KSk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNDkxLDcgKzEzNDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Vi
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVy
biBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7
CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUwMiw3
ICsxMzU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJbnQ6
OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MTQsNyAr
MTM3MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50Ojpt
dWx0aXBseShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogICAg
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTE1MjYsNyArMTM4Miw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAg
cmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmln
aHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MzgsNyArMTM5NCw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0
T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93SGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NTAsNyArMTQwNiw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE1NjIsNyArMTQxOCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRB
bmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgcmV0dXJu
IEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3Bl
cmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc0LDcgKzE0MzAsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9i
amVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFk
ZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTg2LDcgKzE0
NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6YWRk
KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xNTk4LDcgKzE0NTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAg
IHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVy
YW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MTAsNyArMTQ2Niw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xv
YmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAg
LTE2MjgsNyArMTQ4NCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAotICAgIHJl
dHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpOworICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKGdsb2JhbE9i
amVjdCwgb3AxLCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1l
VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYXJnMSwg
RW5jb2RlZEpTVmFsdWUgYXJnMikKQEAgLTE2NzMsMTAgKzE1MjksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUp
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV1RG
OjpnZXQ8SlNCaWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhU
aGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1
YnNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXgg
MGYxYzg3NTRjZDYuLjNmMDRmODljZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3Qq
LCBKCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEpTR2xvYmFsT2Jq
ZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFk
ZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9k
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9ySGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5B
TDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9s
VGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlRGlyZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1
aW50MzJfdCBtaW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4ODg1OGIz
OGMxLi5lM2NmNzk1YzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUzMiw3ICs1MzIs
MTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0lu
dDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTAwMyw2ICsxMDE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9y
TnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2UgSXNOdW1iZXI6Cisg
ICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAg
ICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQx
NC4uZDU1OGE3NTc4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBTdHJpbmdV
c2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAgICAgICAgY2FzZSBTeW1ib2xV
c2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToK
KyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgog
ICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmlu
Z09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6CkBAIC0yNjMsNiArMjY1
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxs
OgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0Jp
Z0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAg
IGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC02NzUsMTAgKzY3OCwxMCBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGJvb2wgaWdubwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2FzZSBWYWx1ZU1vZDoKICAgICBj
YXNlIFZhbHVlUG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSk7CisgICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNl
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6Ci0gICAgICAg
IHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlOworICAgICAgICBy
ZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEhlYXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlOGQwNjgwNzkuLjVlMTkyMzQ0NGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE3MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuY2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogCiAgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnQzMlVzZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0lu
dDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJS
ZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9kZSwgYnJh
bmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1MzcsNDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYgY2hp
bGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJhbmQo
dGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBC
aWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBhcm91
bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAw
MDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJC
aXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAor
I2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAgICAg
ICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50
KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVy
YW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUgQW55
QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQuanNW
YWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICszNjA1LDE4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUpCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dK
SiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JB
bnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUt
PmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAg
IEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxkLnVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAgaWYg
KGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihy
aWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxk
KTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0zNjMw
LDExICszNjYxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9k
ZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFy
aWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgp
KSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0
LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0lu
dFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogICAg
IGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNlKHRo
aXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdo
dENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJlZ3Mg
PSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDMsODQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUpCiAg
ICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGls
ZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlICYm
IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisKICAg
ICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAgICAg
ICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0
QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1ZUJpdFhv
cjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9yLCBvcGVy
YXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVyZSB3aXRo
IHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQocmlnaHQu
Z3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1
ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVyYXRvciwg
b3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJmZXJlIHdp
dGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0KHJpZ2h0
LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFs
dWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBzbyB3ZSBt
dXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAgICAgIG1f
aml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQub3I2
NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFTU0VSVChs
ZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAgR1BS
UmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZv
ciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxlZnRDaGls
ZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBzcGVjdWxhdGVC
aWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAg
IHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChvcCkgewog
ICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55Qmln
SW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9u
VmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJpdE9y
OgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0T3JHZW5l
cmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0K
LSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBu
b2RlKQpAQCAtMzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJp
dHdpc2VPcChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5v
ZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25fR0pKIHNuaXBwZXRT
bG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlmdAogICAgICAgICA/
IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0OwpAQCAt
Mzc2NSw5ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQx
KCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGlz
S25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdo
dENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsK
KyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90
TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1Zh
bHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1OSwyNyArMzkyNiwy
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKiBub2Rl
KQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRH
UFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsK
IAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmln
aHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRCaXRPcDxK
SVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihub2RlKTsKKyAg
ICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVy
YXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyArMzk1NCwyNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxk
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNo
aWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0SGVh
cEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Ao
bm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9kZSkKQEAgLTM5
MTgsNyArMzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKE5vZGUq
IG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJp
Z2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9w
KG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDE1LDY5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxl
ZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5j
aGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewot
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMg
ZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8v
IEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3Jl
IGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAg
ICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShy
aWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQ
Uik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92
ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQu
YnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIs
IHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9y
bWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hv
dWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJ
bnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwg
cmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVl
UmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVn
cygpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6IGNhbGwgYSBtb3JlIHNwZWNp
YWxpemVkIGZ1bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGRO
b3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0lu
dAorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVC
aWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0
Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0
R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKQEAgLTQwMDYsNDQgKzQxMjMsOTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7
CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRz
U2NyYXRjaEZQUlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hH
UFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7Ci0j
ZW5kaWYKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBy
aWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJl
YWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdo
dCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRy
aWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJl
c3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94
QmlnSW50MzIodGVtcEdQUik7CiAKLSAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7Ci0gICAgICAgIGF1dG8g
cmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKLSAgICAgICAg
YXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKyAgICAgICAg
Ly8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFj
cm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CiAK
LSAgICAgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBu
ZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKTsKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNw
ZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8g
YW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1
bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJ
bnQzMi9IZWFwQmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAvLyBGSVhN
RTogd2h5IGRvIGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVNdWwgdXNlIGlzS25vd25Ob3RO
dW1iZXIgYnV0IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgc3BlY3VsYXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZUFueUJp
Z0ludChyaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0Lmpz
VmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFs
dWVSZWdzKCk7CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdo
dEdQUiA9IHJpZ2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAotICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0
ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJ
R0lOVDMyKQogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKLSAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworCisgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBS
UmVnID0gZmFsc2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsK
KyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CisjZW5kaWYKKworICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0
aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOworICAg
IGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKKyAg
ICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworCisgICAg
Y29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0
Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAg
ICByZXR1cm47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJl
cGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYx
Myw2ICs0Nzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUq
IG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkK
IHsKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUgc2hvdWxkIGhhdmUgYmVlbiB0
cmFuc2Zvcm1lZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1cFBoYXNlCisgICAgLy8gRklY
TUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBz
b21lIHBhdGggZm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKQEAgLTQ2MjgsNiArNDc5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVOZWdhdGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRo
LCBhdCBsZWFzdCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBhbHNvIGZvciBIZWFwQmlnSW50
IGhlcmUuCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCku
YmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwogICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwpA
QCAtNDgwOCwyOSArNDk3Niw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVN
dWwoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBjb2RlIGJldHdlZW4gY29t
cGlsZVZhbHVlQWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBpbGVWYWx1ZU11bCBmb3IgQmln
SW50MzIgaXMgbmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdldCByaWQgb2YgdGhlIGR1cGxp
Y2F0aW9uLgorICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVk
IHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAg
ICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3Ig
YSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIo
dGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUg
dGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0g
bV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRl
bXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFu
IGluZm9ybWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhN
RTogc2hvdWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5i
b3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hp
bGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEJpZ0ludCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0
Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewot
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpT
VmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90
TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5u
b2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1Zh
bHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTAxMCwyOSArNTIxMiwz
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxk
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklY
TUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdo
IHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIERpdiBnZXRz
LgorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1
bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tu
b3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2Rl
KCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBA
IC01MDQ2LDYgKzUyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYo
Tm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VSVChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IGxlZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCkBAIC01Mjk1
LDI5ICs1NTAzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2Rl
KiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2Um
IHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3Ig
QmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ug
b2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJp
Z0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENo
aWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kQmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwog
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2Us
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxl
ZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgcmlnaHRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxk
KTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3Mgb3Ax
UmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIG9wMlJlZ3MgPSBvcDIu
anNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNTg1OSwzMCArNjA3MSwz
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxk
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEgZmFzdCBwYXRoIGZvciBCaWdJ
bnQzMiBmb3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxvdyBwcmV0dHkgb2Z0ZW4uCisg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJl
ZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQu
Z3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UG93SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKIAotICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
IHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENo
aWxkKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAg
ICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC02MDMw
LDYgKzYyNDUsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFy
ZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlm
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUy
UmVwVXNlKSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7
CkBAIC02MDU3LDYgKzYyNzgsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUq
IG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgICAgICAg
ICAgY29tcGlsZVN0cmluZ0lkZW50Q29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBj
YXNlIGhlcmUgKGFuZCBhZGQgYSBjb3JyZXNwb25kaW5nIHRlc3QsIHdlIHNob3VsZCByZWFsbHkg
aGF2ZSBjYXVnaHQgdGhpcykKIAogICAgIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewog
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKSB7CkBAIC02MTM2
LDcgKzYzNTksMjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUq
IG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0jaWYgVVNFKEpTVkFM
VUU2NCkgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAh
PSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0
KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVCaWdJbnQz
MkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAg
ICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAg
ICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2Vu
ZGlmCisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRl
dGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0g
VUlOVF9NQVgpIHsKQEAgLTYxODMsOCArNjQyMyw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICBjb21waWxlQmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5
KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtNjI3OCw4ICs2
NTE4LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0eShub2RlLCBub2RlLT5jaGls
ZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IAotICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSk7
CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUt
PmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICByZXR1cm4gbm9uU3BlY3VsYXRp
dmVTdHJpY3RFcShub2RlKTsKIH0KIApAQCAtMTA1NDEsMTggKzEwNzgxLDE4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRlU3lt
Ym9sKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKLSAgICBERkdf
VFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgflNwZWND
ZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChjZWxsKSk7Cisg
ICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2Us
IH5TcGVjQ2VsbENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElmTm90SGVhcEJp
Z0ludChjZWxsKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJpZ0ludChF
ZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2Ug
ZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVk
Z2UpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKKyAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKQEAg
LTEwNzIyLDggKzEwOTYyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2Rl
KiwgRWRnZSBlZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBzcGVjdWxhdGVTeW1i
b2woZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmlnSW50VXNlOgotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGNhc2UgQmlnSW50
MzJVc2U6CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2Up
OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
dHJpbmdPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdChlZGdlKTsKQEAg
LTEzMDczLDE3ICsxMzMyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1l
cmljKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRSZWdzID0gYXJndW1lbnQu
anNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBh
IGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0eXBlT2YsIGFuZCBmb3IgYm9v
bGlmeSBvciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBmaWxlKS4KIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50UmVncyk7Ci0gICAgc2xv
d0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChhcmd1bWVudFJlZ3MucGF5bG9h
ZEdQUigpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJbnQgPSBtX2ppdC5qdW1w
KCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoYXJn
dW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSGVh
cEJpZ0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCBz
Y3JhdGNoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7CisgICAgaXNIZWFwQmlnSW50
LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVz
dWx0UmVncyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTQyLDkgKzE0MTkxLDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2Rl
LCBOb2RlKiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSogbm9k
ZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQg
dmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAvLyBGSVhNRTogW0VT
TmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxz
IGZvciBiaWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CkBAIC0xMzk1Niw4ICsxNDIwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQudXNlKCk7CiAgICAgcmlnaHQu
dXNlKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOwot
ICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOworICAgIHNwZWN1
bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOworICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWws
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IGIxZmIwZThjOTdhLi5hNjU1ZGU5ODNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Niw2ICsz
NDYsOSBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSk7CiAg
ICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlQm9vbGVhbihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVCaWdJbnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVyYXRlZE9wZXJhbmRUeXBlIGNo
ZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAgICAgdm9pZCBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+KTsKQEAgLTExNDgs
NiArMTE1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2Rl
KiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVDb25kaXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2go
Tm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJy
YW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwpAQCAtMTE3Miw3
ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1pc2NTdHJpY3RFcShOb2RlKik7
CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7Ci0gICAgdm9pZCBjb21w
aWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUhlYXBCaWdJbnRFcXVh
bGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFs
aXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwogCkBAIC0xMjIy
LDYgKzEyMjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBj
b21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZUJpZ0ludDMyQ29tcGFy
ZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAg
ICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CkBAIC0x
Mjk3LDExICsxMzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlTm90KE5v
ZGUqKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3Bl
cmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQgZW1pdFVudHlwZWRCaXRPcChO
b2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXR3
aXNlT3AoTm9kZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2Rl
Kik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVW
YWx1ZUJpdFJTaGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2hpZnRPcChOb2RlKik7CkBA
IC0xNTc5LDYgKzE1ODgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlSW50MzIoRWRn
ZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwQW55SW50KEVkZ2Up
OwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQg
c3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQoRWRn
ZSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1
bGF0ZURvdWJsZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjI4LDggKzE2NDEsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlKTsKICAgICB2b2lkIHNw
ZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1i
b2woRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOwot
ICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJp
Z0ludChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAg
dm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRn
ZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDcsNiArMjYyMCw1NiBAQCBwcml2
YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKyNpZiBVU0UoQklHSU5UMzIp
CitjbGFzcyBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisg
ICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQor
ICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKworICAg
IEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0K
KworICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5u
b2RlKCk7CisgICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9n
cHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlk
ID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkpOworICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAg
bV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJ
VCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwor
fTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUgREZHX1RZUEVfQ0hFQ0tfV0lU
SF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBq
dW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBfZHRjX3NvdXJjZSA9IChz
b3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRWRnZSBfZHRjX2Vk
Z2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IGIwMTlkODVkZjljLi4zZWE5ZjNjOTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MTg1LDcg
KzQxODUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgp
LCBub2RlLCAiQ2hlY2tBcnJheU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJJc0JpZ0ludCBpcyBvbmx5IHVzZWQgd2hlbiBV
U0VfQklHSU5UMzIsIHdoaWNoIGNhbiBvbmx5IGJlIHRydWUgaW4gNjQgYml0IG1vZGUiKTsKKyAg
ICAgICAgYnJlYWs7CisKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXgg
YjA3Y2IyNTc1ZDEuLjNlM2Q4NjY0YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzgsNyArMTM4LDggQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFG
b3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgY2FzZSBE
YXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKICAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7
CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0zNDAsOCArMzQxLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAgIH0KICAgICAKLSAgICBKU1Zh
bHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFu
ZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+
Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwog
ICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICBHUFJSZWcgYXJnMkdQUiA9IGFy
ZzIuZ3ByKCk7CiAgICAgCkBAIC0zNjMsNDMgKzM2Nyw2NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNo
Tm9kZQogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVy
OjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsK
LSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0
LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotICAgICAgICAKLSAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxR1BSKTsKLSAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbGVmdERvdWJsZSA9IG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzFHUFIp
OwotICAgICAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyR1BSKTsKLSAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgcmlnaHREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51bWJlcihhcmcyR1BSKTsK
LSAgICAgICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBicmFuY2g2
NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGFy
ZzFHUFIsIGFyZzJHUFIsIHRha2VuKTsKLSAgICAgICAganVtcChub3RUYWtlbiwgRm9yY2VKdW1w
KTsKLSAgICAgICAgCi0gICAgICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7CisgICAgICAg
IC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFsc2Up
OgorICAgICAgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAg
ICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAg
ICAgICAgIGdvdG8gdGFrZW47CisgICAgICAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlz
IENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgZ290byBub3RUYWtl
bjsKKyAgICAgICAgICovCisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRo
Q2FzZXM7CisKKyAgICAgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERv
dWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9m
IHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElm
SW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBK
U1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQg
b3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgIC8vIElmIGl0IGlz
IG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJp
dCBzZXQKKyAgICAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8
NTAuCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBtX2ppdC5t
b3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoYXJnMkdQUiwgc2Ny
YXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpM
b3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYWRkNjQoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7CisgICAg
ICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9IEpTVmFsdWU6Okxv
d2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
NjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKICAgICAgICAgYnJhbmNoNjQoSklUQ29tcGls
ZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsK
ICAgICAgICAgCi0gICAgICAgIGxlZnREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICByaWdo
dERvdWJsZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBzaWxlbnRTcGlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBh
cmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQ
UiwgYXJnMkdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKLSAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgCisgICAgICAgIC8vIElmIHdlIHN1cHBv
cnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3Bl
cmFuZCBpcyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAgICAgLy8g
SWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xv
dyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVh
cEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgICAgIC8vIEluc3RlYWQgb2YgZG9p
bmcgdHdvIGJyYW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25lLCBieSBvYnNlcnZpbmcgdGhh
dAorICAgICAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGlzIHRoZSBz
YW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgICAgICAvLyAgICAgIEJvdGggYXJl
ICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgICAgICAvLyAyLiBTaW5jZSB3ZSBrbm93IHRoYXQg
bmVpdGhlciBpcyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKSBpcyBl
cXVpdmFsZW50IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQorICAgICAgICAvLyAgICAgIElm
IGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIHNldCBhbmQgdGhlIHRl
c3Qgd2lsbCBmYWlsCisgICAgICAgIC8vICAgICAgSWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQz
MiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgICAgICAvLyAgICAgIEFuZCBpZiBh
dCBsZWFzdCBvbmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXInIHRhZyB3aWxsIGFsc28gYmUg
MCwgbWFraW5nIHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIG1f
aml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxzZQorICAgICAgICBt
X2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICAgICAg
c2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUikpOworCisg
ICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKKworICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhp
cywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZl
cnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIs
IHRha2VuKTsKICAgICB9Ci0gICAgCisKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5v
ZGUsIGJvb2wgaW52ZXJ0KQogeworICAgIC8vIEZJWE1FOiBzb21lIG9mIHRoaXMgY29kZSBzaG91
bGQgYmUgc2hhcmVhYmxlIHdpdGggbm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJnMVJl
Z3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgYXJnMlJlZ3MgPSBhcmcy
LmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOworICAgIEdQ
UlJlZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CkBAIC00MjgsMzMg
KzQ1Niw2MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xl
U3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIHVuYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV9qaXQub3I2NChhcmcxUmVn
cy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgLyogQXQgYSBoaWdoIGxl
dmVsIHdlIGRvIChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxzZSk6CisgICAgSWYgKGxlZnQg
aXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAg
ICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZ290
byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAg
Z290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8KIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOwogCi0gICAgSklUQ29tcGls
ZXI6Okp1bXAgdHdvQ2VsbHNDYXNlID0gbV9qaXQuYnJhbmNoSWZDZWxsKHJlc3VsdEdQUik7Ci0K
LSAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFyZzFS
ZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihhcmcx
UmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIGxlZnRPSy5saW5rKCZtX2ppdCk7Ci0gICAgSklU
Q29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMlJlZ3MpOwot
ICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGFyZzJSZWdzLCBJ
bnZhbGlkR1BSUmVnKSk7Ci0gICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0KLSAgICBtX2ppdC5j
b21wYXJlNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVx
dWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7Ci0KLSAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0gICAgdHdvQ2VsbHNDYXNl
LmxpbmsoJm1faml0KTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2NChK
SVRDb21waWxlcjo6Tm90RXF1YWwsIGFyZzFSZWdzLmdwcigpLCBhcmcyUmVncy5ncHIoKSkpOwor
ICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQg
aXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdv
dWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElm
TnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMy
LCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcg
YWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwg
dGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcg
b25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgIG1faml0Lm1vdmUoYXJnMUdQUiwgcmVzdWx0R1BSKTsKKyAgICBtX2pp
dC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0LmFkZDY0KFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHNjcmF0Y2guZ3By
KCkpOworICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1bHRHUFIp
OworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9IEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02
NChuZXh0TG93ZXN0T2ZIaWdoQml0cykpKTsKKworICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21w
aWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywg
cmVzdWx0R1BSKTsKKworICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0
byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBIZWFw
QmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAvLyBJZiB3ZSBkb24ndCBzdXBwb3J0IEJpZ0ludDMy
LCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYgYm90aCBvcGVyYW5kcyBhcmUg
Y2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFuZCBTdHJpbmcgPT09IFN0cmlu
ZykKKyAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2lu
Z2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJp
Z2h0IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAg
IC8vICAgICAgQm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAiCisgICAgLy8gMi4gU2luY2Ug
d2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAgICAv
LyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIHNldCBh
bmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgLy8gICAgICBJZiBhdCBsZWFzdCBvbmUgaXMgbm90
IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisgICAgLy8gICAgICBBbmQgaWYg
YXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNvIGJl
IDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIG1faml0
LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxzZQorICAgIG1faml0Lm9y
NjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgIHNsb3dQYXRoQ2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKIAotICAgIG1faml0Lm1v
dmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCghaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKyAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BSKTsKIAogICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFS
ZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKKyAgICBtX2ppdC54
b3I2NChUcnVzdGVkSW1tNjQoaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKwogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogfQogCkBAIC0xMDAzLDYgKzEwNTgsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCYgcmV0
dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50
NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0
QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NS
QVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAg
ICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzQsNiArMTI5MSw4IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1h
dFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0
U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRh
Rm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3Vy
cmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAg
LTEzMTEsNiArMTM3MCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJv
b2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBE
YXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAg
ICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBm
b3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMTksNiArMTM4MCwxMDkgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAg
ICAgfQogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0JpZ0ludDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKFNwZWN1bGF0ZUJpZ0ludDMy
T3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7CisgICAgbm90Q2VsbC5saW5r
KCZtX2ppdCk7CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSB2YWx1ZS5tX3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Jp
Z0ludDMyKTsKKyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CisgICAgICAgIGlmIChtYXlIYXZl
VHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZv
ID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisK
KyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1h
dE5vbmU6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAgaWYg
KGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IGVk
Z2UtPmFzSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSkpLCBncHIp
OworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1h
dEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorCisgICAg
ICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVk
KTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdw
ciwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMyKSB7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3RO
dW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAg
ICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1h
dEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0
YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKKyAgICAg
ICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Cisg
ICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7
CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJ
Zk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwg
ZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQ
UikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAgICB9CisgICAgICAgIGlu
Zm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMy
OgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91Ymxl
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgor
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUy
OgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBk
YXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0Lmdy
YXBoKCksIG1fY3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9ybWF0Iik7CisgICAgICAgIHJl
dHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9i
amVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
b3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTUsNiArMTcxOSw1NSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQogCisjaWYgVVNFKEJJR0lOVDMy
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiBub2Rl
LCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAg
U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworCisgICAgaWYgKGNv
bmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVy
YW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29t
cGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIG1f
aml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC51bmJveEJp
Z0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCB0ZW1w
LmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0LmdwcigpLCB0ZW1wLmdwcigpLCBy
ZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29s
LCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiBub2Rl
LCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25k
aXRpb24pCit7CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3VsZCByZXF1aXJlIHVuYm94aW5n
IHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9uIG5lZ2F0aXZlIG51bWJlcnMu
CisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0
aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0YWtl
biA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9j
ayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwor
CisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFrZW4g
YmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90VGFr
ZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3VnaC4K
KyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgY29uZGl0aW9uID0gSklU
Q29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBCYXNpY0Jsb2NrKiB0bXAgPSB0
YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAgICAgbm90VGFrZW4gPSB0bXA7
CisgICAgfQorCisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigp
LCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMy
KQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5vZGUp
CiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
NDA4Niw2ICs0Mjk5LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc0JpZ0ludDogeworICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXND
ZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVlLmdwcigpKTsKKworICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBtX2ppdC5hbmQ2NCh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAg
bV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgcmVzdWx0LmdwcigpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1wKCk7CisKKyAgICAgICAgaXND
ZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVzdWx0
LmdwcigpKTsKKworICAgICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOworICAgICAgICBi
bGVzc0Jvb2xlYW4ocmVzdWx0LmdwcigpKTsKKyAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBO
dW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCBiM2U0MWQ4ZDdlMS4uZGZhN2M2M2VkNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFs
dWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAgICAgICAgY2FzZSBWYWx1ZUJp
dFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWF5YmUgc3VwcG9ydCB0aGUg
Y2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJpZ0ludCBhbmQgdGhlIG90aGVy
IGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50
MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKICAgICAg
ICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAg
ICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDhlZjczYjZmMmU4Li5h
YjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
VXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBvdXQucHJpbnQo
IlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCaWdJbnRVc2U6Ci0gICAgICAg
IG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIG91
dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEhlYXBCaWdJ
bnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnByaW50KCJCaWdJbnQzMiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIG91dC5w
cmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5o
CmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0gVXNlS2luZCB7CiAgICAgS25v
d25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8vIFRoaXMgYml6YXJyZSB0eXBl
IGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRlY29kZSBndWFyYW50ZWUgdGhh
dCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90IG9iamVjdHMpLgogICAgIFN5
bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50VXNlLAorICAgIEhlYXBCaWdJ
bnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVjdFVzZSwKICAgICBNYXBPYmpl
Y3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1NCwxMiBAQCBpbmxpbmUgU3Bl
Y3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAgICAgIHJldHVy
biBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAg
ICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBjYXNlIEFueUJp
Z0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50
VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBCaWdJbnQzMlVz
ZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBjYXNlIFByb21pc2VPYmplY3RV
c2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICBjYXNlIERhdGVPYmpl
Y3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29sIG1heUhhdmVUeXBlQ2hlY2so
VXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVjayhraW5kKTsK
IH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5kKQotewotICAgIHN3aXRj
aCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bkludDMyVXNlOgot
ICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICBjYXNlIElu
dDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwUmVh
bFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogewogICAg
IHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlubGluZSBib29sIGlzQ2VsbChV
c2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgY2FzZSBLbm93blN0cmluZ1Vz
ZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBjYXNlIEhl
YXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBTdHJpbmdP
clN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzEuLjJm
ZDk3MWU2Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCkBAIC0yNjAsNiArMjYwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElz
Qm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2Fz
ZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0
T3JOdWxsOgpAQCAtNDgyLDcgKzQ4Myw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdy
YXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAg
ICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50
MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1hcE9iamVjdFVz
ZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZiYy4uYzBmNGYy
YjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFs
dWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5j
cHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxpemVDb25zdGFu
dHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAgICBpbnRQdHJU
aHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMp
OwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RE
b3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
YmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21t
b25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgK
aW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBM
VmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGludFB0ckVpZ2h0IHsg
bnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9OwotICAgIAorI2lm
IFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsgbnVsbHB0ciB9OworI2Vu
ZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAgY29uc3QgdW5z
aWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVlIGJyYW5jaFdlaWdodHMgeyBu
dWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggODAzNjM5MDdiOWUuLjUzMWQxM2Q2MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1Myw2ICsxMzUzLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAgICAgIGNvbXBpbGVJc051bWJl
cigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAg
ICAgICBjb21waWxlSXNCaWdJbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGNvbXBpbGVOdW1iZXJJc0ludGVnZXIoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjEzNSwxMSArMjEzOCwyOCBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAg
ICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAg
ICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZUFkZCh1bmJveGVkTGVm
dCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBP
dmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExW
YWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRK
U1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkFkZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
ZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNTYsMTEgKzIxNzYsMjggQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAg
ICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAg
ICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxhdGVTdWIodW5ib3hlZExl
ZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwg
T3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBM
VmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNl
bmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNl
KSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTc3LDExICsyMjE0LDI4IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihs
ZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJp
Z2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRl
TXVsKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxh
dGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKwor
ICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjg1LDcgKzIzMzksMjEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QW55QmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHN1cHBv
cnRlZCBieSB0aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVl
KG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwocG9pbnRlclR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisjZW5kaWYKKwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsK
IApAQCAtMjU1NCwxMSArMjYyMiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVl
RGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6
IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9u
RGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkRp
dkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMjYzMywxOCArMjcwMiwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZh
bHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKLSAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBG
SVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9kQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEhlYXBCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwg
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlLCBtX25vZGUtPmJpbmFyeVVz
ZUtpbmQoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVj
dWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KQEAg
LTI4MDksMTcgKzI4ODEsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVBvdygp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGJh
c2UgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgZXhw
b25lbnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBt
YXliZSBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgZXhwb25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvblBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25l
bnQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBl
eHBvbmVudCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKKyAg
ICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShtX25v
ZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKElu
dDY0LCBvcGVyYXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwg
ZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQpAQCAtMzIwMCw5
ICszMjc2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXROb3QoKQogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIG9w
ZXJhbmQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgewor
ICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJpY2sgcmVsaWVzIG9uIGRldGFpbHMg
b2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEJpZ0ludDMyLCBhbmQgd2lsbCBoYXZlIHRvIGJlIHVw
ZGF0ZWQgaWYgd2UgbW92ZSBiaXRzIGFyb3VuZC4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQo
SlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KEpTVmFsdWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAwMTIpOworICAgICAgICAg
ICAgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZmZmZmZmZmMDAwMDsKKyAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Iob3BlcmFuZCwgbV9vdXQuY29u
c3RJbnQ2NChtYXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAg
IGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAg
ICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJh
dGlvbkJpdE5vdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG9wZXJhbmQp
OwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0zMjIwLDExICszMzEwLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
aWxlVmFsdWVCaXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUg
dGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQuYml0QW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNDAsMTEgKzMzNDIsMjMgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25CaXRPckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1
bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVkIGJ5IGJpdEFuZAorICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRV
c2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjYwLDExICszMzc0LDIzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dE1pc3NpbmdUYWcgPSBtX291dC5iaXRYb3IobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKHJlc3VsdE1pc3NpbmdUYWcsIG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJp
dFhvckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzI4MCwxMSArMzQwNiwyOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZVZhbHVlQml0UlNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25C
aXRSU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChB
bnlCaWdJbnRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0aGluZyBzbWFydGVyIGhlcmUKKyAgICAgICAg
ICAgIC8vIFRoaW5ncyBhcmUgYSBiaXQgdHJpY2t5IGJlY2F1c2UgYSByaWdodC1zaGlmdCBieSBh
IG5lZ2F0aXZlIG51bWJlciBpcyBhIGxlZnQtc2hpZnQgZm9yIEJpZ0ludHMuCisgICAgICAgICAg
ICAvLyBTbyBldmVuIGEgcmlnaHQgc2hpZnQgY2FuIG92ZXJmbG93LgorCisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJ
TlQzMikKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjk2LDI0ICszNDQwLDI1IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5hU2hyKAogICAgICAgICAgICAg
bG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93
SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAg
ICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25z
dEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlz
IHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwog
ICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEJpdExTaGlmdCgpCiAgICAgewogICAg
ICAgICBzZXRJbnQzMihtX291dC5zaGwoCiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxk
MigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQo
bG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBG
SVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNs
dWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZVZhbHVlQml0TFNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2Up
KSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBhIGZhc3QgcGF0aCBmb3IgQmln
SW50MzIgaGVyZS4KKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludCwgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMz
MzAsNyArMzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgc2V0SW50MzIobV9v
dXQubFNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAg
ICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25z
dEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUt
PmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRo
aW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1h
bnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVUludDMy
VG9OdW1iZXIoKQpAQCAtNzM1NSw2ICs3NTAwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIGlmIChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIChTcGVjQnl0
ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90
TnVtYmVyID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbFBhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTcz
NjQsMTAgKzc1MTIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgLy8gbm90TnVtYmVyIGNh
c2UuCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5v
dE51bWJlciwgY29udGludWF0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBt
X291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90QmlnSW50MzIpKTsKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRpZgogICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVu
c3VyZShpc0NlbGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAKICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50
KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlv
biksIHVuc3VyZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzSGVhcEJp
Z0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51
YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZXZlcmFsIGF0
dGVtcHRzIHRvIHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVyaWMgc3RpbGwgZXhpc3RzLgpA
QCAtODMyNCw3ICs4NDc2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB8fCBtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoU3ltYm9sVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChTdHJpbmdVc2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRV
c2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVxKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTgzNjcsNyArODUyMiw5NCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8g
dW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBib3RoIHNpZGVzCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOworICAgICAg
ICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0IHdpdGggaWYgKGxlZnQgPT0g
cmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdodCBjaGVja3MgKHNlZSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAgICAvLyBUaGUgY29kZSB0aGF0
IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29kZToKKyAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIobGVmdCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChyaWdo
dCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHNUb0ludDMy
KHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgQ0hF
Q0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGlmIChpc0JpZ0ludDMy
KHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxzVG9J
bnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmln
SW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFscyhs
ZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxl
ZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNC
bG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0ludDMyID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNOb3RCaWdJbnQzMiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihsZWZ0
LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGxlZnRJc0JpZ0ludDMyKSwg
dW5zdXJlKGxlZnRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQg
dGhlIG9yZGVyIG9mIHRoZSBibG9ja3MgdG8gbWF4aW1pemUgZmFsbHRocm91Z2gKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5z
dXJlKGJvdGhBcmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmlnSW50MzIpKTsKKworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyKTsKKyAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5l
cXVhbChsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhvbmx5TGVmdElzQmlnSW50MzIpOworICAg
ICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIo
bGVmdCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0SXNCaWdJbnQzMiA9
IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRp
b25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
cmlnaHQsIHVuYm94ZWRMZWZ0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNOb3RCaWdJbnQzMik7Cisg
ICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGxlZnQsIHJp
Z2h0KSwgdW5zdXJlKGxlZnRFcXVhbHNSaWdodCksIHVuc3VyZShsZWZ0SXNIZWFwQmlnSW50KSk7
CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRFcXVhbHNSaWdodCk7CisgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5hbmNob3Io
bV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNIZWFwQmlnSW50KTsKKyAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQyKCkpKSwgdW5zdXJlKHJpZ2h0SXNCaWdJbnQzMiksIHVuc3VyZShyaWdodElzTm90Qmln
SW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRJc0JpZ0ludDMyKTsK
KyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsK
KyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0SXNCaWdJbnQzMiA9IG1fb3V0
LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21w
YXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
dW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90QmlnSW50MzIpOworICAgICAg
ICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVj
aWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCisgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CisgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoSGVhcEJpZ0ludCA9IG1fb3V0LmFuY2hv
cihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXEsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSkpOworICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24pOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50
MzIsIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiwgcmVzdWx0TGVmdElzQmlnSW50MzIsIHJlc3VsdExl
ZnRFcXVhbHNSaWdodCwgcmVzdWx0UmlnaHRJc0JpZ0ludDMyLCByZXN1bHRCb3RoSGVhcEJpZ0lu
dCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lO
VDMyKQorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkp
IHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5kKTsKQEAgLTg0NTAsMTEg
Kzg2OTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXpl
ZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVzZQorICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmlj
dCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtODU0MCw2
ICs4NzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisg
ICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2ggc21hcnRlciBoZXJlLCBz
ZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4gU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAgICAgICAg
IG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsmXSAoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgewpAQCAtMTA1MDQsNyArMTA3NDcsMzEgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEJvb2xl
YW4obV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwgcGF0Y2hwb2ludFJl
c3VsdCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7
CisgICAgICAgIC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIEJpZ0ludDMyLCB3ZSBzaG91
bGQganVzdCBlbWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQpCisgICAgICAgIEFTU0VSVChV
U0VfQklHSU5UMzIpOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9u
b2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNl
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05v
dENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1
ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlzQ2VsbFdpdGhUeXBlKHZhbHVl
LCBtX25vZGUtPnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3VsYXRlZFR5cGVGb3JRdWVyeSgp
LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1bHQs
IGNlbGxSZXN1bHQpKTsKKyAgICB9CiAgICAgdm9pZCBjb21waWxlSXNDZWxsV2l0aFR5cGUoKQog
ICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpIHsKQEAgLTE0MjE0LDkgKzE0NDgxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbWl0Qmlu
YXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVm
dE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkpOwog
ICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQyODIsOCArMTQ1NTEsMTEgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIAotICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAg
ICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDg5NSw3ICsxNTE2Nyw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBj
b250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwp
IHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJp
Z0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlz
IEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxl
bmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAgICAgLy8gICAgICAgICBk
byBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC0xNDkwNSw2ICsx
NTE3Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveElu
dDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsK
ICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgICAg
ICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgICAgICAgICAgLy8g
ICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAgICAgICAgIC8vIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgICAg
ICAgICAvLyB9CkBAIC0xNDkxMiwxMyArMTUxODYsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBM
QmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQzMkNhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50MzJDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91YmxlQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxvY2sg
YmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4gcmVzdWx0czsKQEAgLTE0OTMy
LDIwICsxNTIxMCwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAgICAgICAgICAgIG1fb3V0
LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdl
KSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAgICAgICB1bnN1cmUoYmln
SW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2UpKTsKKyAgICAgICAgICAgICAg
ICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3BlY0NlbGwgLSBTcGVj
U3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBCaWdJbnRDYXNlKSwgdW5zdXJl
KG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
bV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFrUG9pbnRlcihqc0VtcHR5U3Ry
aW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBub3RTdHJpbmdP
ckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGVhcEJpZ0ludENhc2Us
IG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIExWYWx1ZSBub25aZXJv
QmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMk5v
bk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0aCkpOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJbnQpKTsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSwgbm90Q2VsbENh
c2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0OwogICAgICAgICAgICAgaWYg
KG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpCiAgICAgICAg
ICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFuVHJ1ZTsKQEAgLTE0OTg4LDgg
KzE1MjY2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodmFsdWUp
LCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
CisgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIH5T
cGVjQ2VsbCksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMyQ2FzZSksIHVuc3VyZShu
b3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50MzJD
YXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZhbHVlIGJpZ0ludDMyTm90WmVy
byA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYmlnSW50
MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgY29u
dGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3VibGVD
YXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAgICBMVmFsdWUgbWlzY0lzVHJ1
dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAgICAgICAgICAgIHJlc3Vs
dHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAgLTE1NTk0LDEzICsxNTg4
NiwxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0g
ZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwot
ICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0g
ZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdp
bnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5
bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIG51bWJlcikg
ewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlz
IGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0g
ZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAg
ICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NjI4LDYgKzE1OTIyLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMkNhc2UgPSBtX291
dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bGxDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYm9vbGVhbkNhc2UgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRlZmluZWRDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKQEAgLTE1NjgwLDcgKzE1OTc3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKICAgICAgICAgbV9vdXQu
YnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYg
KFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAgICAgIGlzSGVh
cEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0
IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2UpLCB1bnN1cmUo
c3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIHN5bWJv
bENhc2UpOwpAQCAtMTU2OTYsOCArMTU5OTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJlckNhc2UpOwogICAgICAgICBm
dW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3RCaWdJbnQzMkNhc2Up
OworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShjaGls
ZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNh
c2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2UsIG5vdE51bGxD
YXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdE51
bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwogICAgICAgICBpZiAocHJv
dmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBpc051bGwgPSBtX291dC5l
cXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKQEAgLTE2
Mzg4LDE1ICsxNjY5MiwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZhbHVlIGxvd0hl
YXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJp
Z0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSk7CiAKICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7Ci0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVk
Z2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworCisgICAgICAgIExvd2Vy
ZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShy
ZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIocmVzdWx0KSk7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heUhhdmVU
eXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRh
YmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVybzsKKyAgICB9CisjZW5kaWYK
KwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY1ODIsNyArMTY5MDQsNzIgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQuemVyb0V4dCh2
YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9
IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAgIHJldHVybiBw
cm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmJp
dEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykpLAor
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAg
IH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4g
PSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0dXJu
IHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAorICAgICAgICAgICAgbV9v
dXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNr
KSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7
CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoanNWYWx1ZSwgbV9v
dXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVlIGJveEJpZ0ludDMyKExWYWx1
ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE9yKAorICAgICAg
ICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1ZSwgQjM6OkludDY0KSwgbV9v
dXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RBbnlCaWdJbnQoTFZhbHVl
IGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAg
ICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0JpZ0ludCkp
CisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIC8vIGlmIChpc0JpZ0ludDMy
KQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAvLyBpZiAoIWlzQ2VsbCkKKyAg
ICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0dXJuICFpc0hlYXBCaWdJbnQK
KyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAg
ICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQmlnSW50
MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5GYWxz
ZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RCaWdJbnQzMkNh
c2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUo
aXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVyblRydWUg
PSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSk7CisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0ludCA9IG1fb3V0LmFuY2hvcihp
c05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRydWUsIHJldHVybklzTm90
SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgIExWYWx1
ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVj
RnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1
ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTY4OTQsOCArMTcyODEsMTYg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3Vs
YXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0lu
dFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVz
ZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNl
OgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0
ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MDgxLDE4ICsxNzQ3NiwzOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0cnVjdHVyZS0+aWQoKSkp
OwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRl
ZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnRVbmtu
b3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1
bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUo
dHlwZSAmIFNwZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVu
ID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQpKQorICAgICAgICAgICAgcmV0
dXJuIHByb3ZlbjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0VG9GYWxzZSA9IG1fb3V0LmFu
Y2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZh
bHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29udGludWF0aW9uKSk7CisK
KyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNl
LCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5Gb3JDZWxsID0g
bV9vdXQuYW5jaG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50MzIsIGRl
ZmF1bHRUb0ZhbHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0hlYXBCaWdJbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAog
ICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlE
KSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5iaWdJbnRTdHJ1Y3R1cmUtPmlk
KCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNIZWFwQmlnSW50KExWYWx1
ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAg
ICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVj
QmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUg
JiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
ICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3NTUwLDE2ICsxNzk2NSwzNSBA
QCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwgbG93Q2VsbChlZGdlKSk7
CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2Vs
bCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkK
KyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwg
U3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7CisgICAgfQorICAgIHZvaWQg
c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBGVExfVFlQRV9D
SEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QmlnSW50KGNl
bGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsK
ICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCisgICAgdm9pZCBz
cGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVkZ2UgZWRnZSkKICAgICB7Ci0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjSGVh
cEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKHZhbHVlKSk7CiAgICAg
fQogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSBl
ZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFs
dWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIodmFsdWUpKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCisgICAgeworICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Us
IFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7CisgICAgfQorI2VuZGlmCisKICAg
ICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAg
ICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3Bl
Y09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDIxNzE1ZDNkZDIyLi45YmJhNzQzOWJj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwg
dW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlKQotICAg
ICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1
ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAgICBleGl0Lm1f
ZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJl
Z3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQogCiAgICAgLy8gTWF0
ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXplIGFuIG9iamVjdCB1bnRpbCBh
bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAKaW5kZXggZDViOWFkMjJmOTUuLjdhZDA2NWRjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtNDE1LDcgKzQx
NSw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNv
bnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAgICAgdm9pZCogd3JhcHBlZEFk
ZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gMDsKLSAgICAgICAgaWYg
KCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNCaWdJbnQoKSkgeworICAg
ICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0hlYXBCaWdJ
bnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLmNlbGwtPnN0
cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCAhc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGViYjQ0Li5mMjdlZWY0YjQyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJNYXJrZWRC
bG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5j
bHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJl
Y2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFs
bG9jYXRpb24uY3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0NjlmZTY5MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5j
bHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4MTMzMmQyMTA5MS4uNjFm
MmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMTg3LDggKzE4Nyw4IEBA
IHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAvLyBCaWdJbnQgcHJldmlldy4K
LSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0Jp
Z0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwgMTApOworICAgIGlmIChjZWxs
LT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5
R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggYmYyOTg0YTEyODkuLmRmMTAzMjQzNGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTIwNSw3ICsy
MDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAgICBicmVhazsKICAgICBjYXNl
IFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAgIGNhc2UgQmlnSW50VHlwZToK
KyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGds
b2JhbE9iamVjdCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZWI4
MDgyZTliN2IuLjQ4ZWFhNDAzZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBz
dHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZh
bHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBp
cyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9
ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2
aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2ICs2OTgsOCBA
QCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0s
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50
MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAg
ICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVl
IGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1
ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUK
ICAgICAvLyB9CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRD
b252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAog
ICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0
cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0Jp
Z0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hl
YXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAg
IGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJU
KHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BS
UmVnKTsKQEAgLTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZl
cnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGNv
bXBhcmVQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCBy
ZXN1bHQsIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50
LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgbG9hZDMyKEFk
ZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJl
c3VsdCk7CiAgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwg
VHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CkBAIC03
NTIsNiArNzU0LDE1IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9C
b29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0KTsK
KyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBjb21wYXJlMzIo
aW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3Vs
dCk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0
aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBj
b21wYXJlNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vsc2UKQEAgLTc2Nyw3ICs3Nzgs
NyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZW
YWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZv
bGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxs
KSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQor
ICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAg
ICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7
CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZp
bmVkCkBAIC03NzcsNiArNzg4LDggQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAvLyAg
ICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUg
aXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisg
ICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQg
PSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVz
dWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5OSw3IEBAIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2
bSwgSlNWYWx1ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwo
dmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVl
LnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyArODMwLDcgQEAgQXNzZW1ibHlI
ZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBK
U1ZhbHVlUmVncyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZlcnQgPyBFcXVh
bCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIoanNFbXB0eVN0
cmluZyh2bSkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50Lmxp
bmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVu
ZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5
bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVu
ZChqdW1wKCkpOwogCkBAIC04NDIsNiArODU1LDE1IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExp
c3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFs
CiAgICAgfQogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJl
cih2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7
CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAgIHRydXRoeS5h
cHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3JhdGNoKSk7Cisg
ICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsK
KyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB0cnV0aHku
YXBwZW5kKGJyYW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNjY4ZjBl
NWFjMTUuLmRiNjQ4YWJiYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05MjksNyArOTI5LDM3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAg
IH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIo
R1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVU
YWdSZWdpc3RlcnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVy
KGdwciwgbW9kZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25v
d25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7Cisg
ICAgICAgIHJldHVybiBiaWdJbnQzMjsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50
MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwg
dGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRh
ZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBKdW1wIGJyYW5j
aElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVt
cEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3RO
dW1iZXIocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUo
Z3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgdGVt
cEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorI2VuZGlm
IC8vIFVTRShCSUdJTlQzMikKKworICAgIC8vIEZJWE1FOiByZW5hbWUgdGhlc2UgdG8gbWFrZSBp
dCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0byBiZSBhIGNlbGwuCiAgICAg
SnVtcCBicmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKICAgICB7CiAgICAgICAgIHJldHVy
biBicmFuY2g4KApAQCAtOTUxLDEzICs5ODEsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAgICAgfQotICAgIAorCisgICAg
Ly8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJl
IHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmU3RyaW5nKEdQUlJl
ZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0K
ICAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmU3lt
Ym9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3ltYm9s
VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KLSAgICBKdW1wIGJy
YW5jaElmQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQ
UiwgQmlnSW50VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50KEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KKyAg
ICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQ
UiwgSGVhcEJpZ0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9uKEdQUlJlZyBj
ZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9
CiAgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBi
cmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9CiAgICAgCkBAIC0xMzM4
LDYgKzEzNjksMTkgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKHRoaXMp
OwogICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIHZvaWQgdW5ib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgdXJzaGlm
dDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgfQorCisgICAg
dm9pZCBib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgbHNoaWZ0NjQodHJ1
c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICAgICAgb3I2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBncHIpOworICAgIH0KICNlbmRpZgogCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKQEAgLTE3MTgsNyArMTc2Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gICAgICAgICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIHN0cmluZykgewogICAg
ICAgICAvLyAgICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAo
aXMgYmlnaW50KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGhlYXBiaWdpbnQpIHsK
ICAgICAgICAgLy8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKQEAgLTE3MjksNiArMTc3Myw4IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QKICAgICAgICAgLy8gfSBlbHNl
IGlmIChpcyBib29sZWFuKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gYm9vbGVhbgorICAgICAg
ICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmln
aW50CiAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gdW5kZWZpbmVk
CiAgICAgICAgIC8vIH0KQEAgLTE3NjAsMTAgKzE4MDYsMTAgQEAgcHVibGljOgogCiAgICAgICAg
IG5vdFN0cmluZy5saW5rKHRoaXMpOwogCi0gICAgICAgIEp1bXAgbm90QmlnSW50ID0gYnJhbmNo
SWZOb3RCaWdJbnQoY2VsbEdQUik7CisgICAgICAgIEp1bXAgbm90SGVhcEJpZ0ludCA9IGJyYW5j
aElmTm90SGVhcEJpZ0ludChjZWxsR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpC
aWdJbnQsIGZhbHNlKTsKIAotICAgICAgICBub3RCaWdJbnQubGluayh0aGlzKTsKKyAgICAgICAg
bm90SGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlN5
bWJvbCwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwpAQCAt
MTc3OSw2ICsxODI1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgSnVtcCBub3RCb29sZWFuID0gYnJh
bmNoSWZOb3RCb29sZWFuKHJlZ3MsIHRlbXBHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5
cGU6OkJvb2xlYW4sIGZhbHNlKTsKICAgICAgICAgbm90Qm9vbGVhbi5saW5rKHRoaXMpOworCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBKdW1wIG5vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgICAgICBmdW5jdG9yKFR5
cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RCaWdJbnQzMi5saW5rKHRoaXMp
OworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlVuZGVmaW5l
ZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5
YmY5Li5kNWVhOTlmMzNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzcwLDYg
KzM3MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNf
Ym9vbGVhbikKICAgICAgICAgREVGSU5FX09QKG9wX2lzX251bWJlcikKKyAgICAgICAgREVGSU5F
X09QKG9wX2lzX2JpZ19pbnQpCiAgICAgICAgIERFRklORV9PUChvcF9pc19vYmplY3QpCiAgICAg
ICAgIERFRklORV9PUChvcF9pc19jZWxsX3dpdGhfdHlwZSkKICAgICAgICAgREVGSU5FX09QKG9w
X2plcV9udWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNjcxNjY2MWRmNGYuLjQxZjZi
Zjg0OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUyNyw2ICs1MjcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29sZWFuKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxsKGNvbnN0IEluc3RydWN0aW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCAz
YTMyYzMyNjE4OS4uZjUwYzMwMzA2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcApAQCAtNDc2LDYgKzQ3Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
Z2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0
ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMq
IG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsK
KyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9u
VmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVtaXRN
YXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9CiAKQEAgLTQ4
NCw2ICs0ODUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKICAgICBKSVROZWdJQyogbmVnSUMgPSBiaXR3aXNlX2Nhc3Q8SklUTmVnSUMq
PihtX2luc3RydWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbikpOworICAgIC8v
IEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5l
Z2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAgZW1pdE1hdGhJQ1Ns
b3c8T3BOZWdhdGU+KG5lZ0lDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVn
YXRlUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0
aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IGZkZTAwYmNjOGM5Li5iY2IzZWI4Y2ZmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5j
b20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yODMsNiArMjgzLDM0IEBAIHZvaWQgSklUOjplbWl0
X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaXNf
YmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cElzQmlnSW50PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQ7CisKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgSnVtcCBpc0NlbGwgPSBi
cmFuY2hJZkNlbGwocmVnVDApOworCisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6Qmln
SW50MzJNYXNrKSwgcmVnVDEpOworICAgIGFuZDY0KHJlZ1QxLCByZWdUMCk7CisgICAgY29tcGFy
ZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgcmVn
VDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CisgICAg
SnVtcCBkb25lID0ganVtcCgpOworCisgICAgaXNDZWxsLmxpbmsodGhpcyk7CisgICAgY29tcGFy
ZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKKworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisjZWxzZQorICAgIC8vIElmIHdlIG9ubHkgaGF2
ZSBIZWFwQmlnSW50cywgdGhlbiB3ZSBlbWl0IGlzQ2VsbFdpdGhUeXBlIGluc3RlYWQgb2YgaXNC
aWdJbnQuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCiB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CkBAIC01NzAsMjggKzU5OCw1MSBAQCB2b2lkIEpJ
VDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgQ29tcGlsZU9wU3RyaQogICAgIFZpcnR1YWxSZWdpc3RlciBzcmMyID0gYnl0ZWNvZGUubV9y
aHM7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVn
VDEpOwotICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIg
c3RyaW5ncykuCisKKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBl
JyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERv
dWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdo
dCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlz
IENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25l
OgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8KKworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1w
bGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmds
ZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQg
aWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNr
IGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBp
dCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAg
Ly8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBv
bmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVx
dWFsIDE8PDUwLgorICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlKHJlZ1QxLCByZWdU
Myk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJl
Z1Q1KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDIpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdUMyk7
CisgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCByZWdUNSk7CisgICAgb3I2NChyZWdUMiwg
cmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVnVDMsIHJl
Z1Q1KSk7CisKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDUpOworICAg
IEp1bXAgZG9uZSA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUNSk7CisKICAgICBtb3ZlKHJl
Z1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBs
ZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBh
bmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcg
bW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRv
IGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworI2Vsc2UKKyAgICAvLyBKdW1w
IHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgogICAgIG9yNjQocmVn
VDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikp
OwotICAgIAotICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRl
c3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0Ci0gICAg
Ly8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9IGJyYW5jaElmSW50MzIocmVn
VDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1QwKSk7Ci0gICAgbGVmdE9L
LmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7Ci0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsKLSAgICByaWdodE9LLmxpbmso
dGhpcyk7CiAKLSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVx
KQotICAgICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGVs
c2UKLSAgICAgICAgY29tcGFyZTY0KE5vdEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKLSAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwotCi0gICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBpZiAodHlw
ZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkKKyAgICAgICAgeG9yNjQoVHJ1
c3RlZEltbTY0KDEpLCByZWdUNSk7CisgICAgYm94Qm9vbGVhbihyZWdUNSwgSlNWYWx1ZVJlZ3Mg
eyByZWdUNSB9KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDUpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtNjE0LDI0ICs2NjUsNDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmlj
dEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3AK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7
CiAKLSAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3Mp
LgorICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5cGUnIHRvIGJlIFN0
cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAg
ICAgIGdvdG8gc2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgZ290byB0
YWtlbjsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgZ290
byBzbG93UGF0aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICovCisKKyAgICAvLyBUaGlzIGZy
YWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdp
dGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5
IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8v
IFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcg
MTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMg
YXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2ls
bCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBh
Ym92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShy
ZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGln
aEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdU
NSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9y
NjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWws
IHJlZ1QzLCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9IGJyYW5jaDY0KEVxdWFsLCBy
ZWdUMCwgcmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3Ry
aWN0RXEpCisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdldCk7CisKICAgICBtb3ZlKHJl
Z1QwLCByZWdUMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBs
ZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBh
bmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcg
bW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRv
IGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworI2Vsc2UKKyAgICAvLyBKdW1w
IHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgogICAgIG9yNjQocmVn
VDEsIHJlZ1QyKTsKKyNlbmRpZgogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikp
OwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4gRmlyc3QgdGVzdCBp
ZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRlc3QKLSAgICAvLyBp
ZiBpdCdzIGEgZG91YmxlLgotICAgIEp1bXAgbGVmdE9LID0gYnJhbmNoSWZJbnQzMihyZWdUMCk7
Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDApKTsKLSAgICBsZWZ0T0subGlu
ayh0aGlzKTsKLSAgICBKdW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk51bWJlcihyZWdUMSkpOwotICAgIHJpZ2h0T0subGluayh0aGlz
KTsKLQotICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCi0g
ICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdldCk7Ci0g
ICAgZWxzZQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMSwgcmVnVDAp
LCB0YXJnZXQpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6TlN0cmlj
dEVxKSB7CisgICAgICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOworICAgICAgICBhcmVFcXVh
bC5saW5rKHRoaXMpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02ODYsNyArNzYxLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwog
CiAgICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
SWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAog
ICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IGIxMWY2NTVmY2I2Li5jODA2MTU5ZjRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMjg4LDYg
KzI4OCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAg
ICAvLyBXZSBlbWl0IGlzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQsIHNpbmNlIEJpZ0ludDMyIGlz
IG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IHBsYXRmb3Jtcy4KKyAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7CkBAIC04NjYs
NyArODcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsK
IAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAK
ICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IDIyYjlhMWQxZTljLi44MDA4MTQ4MTAyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMjk2LDYgKzEyOTYs
MTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY28KICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoZ2xvYmFsT2JqZWN0LCBzcmMxLCBzcmMyKTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikK
K3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogaGVhcEJpZ0ludCwgaW50MzJf
dCBzbWFsbEludCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAg
IEFTU0VSVChoZWFwQmlnSW50LT5pc0hlYXBCaWdJbnQoKSk7CisKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SlNCaWdJbnQqPihoZWFwQmlnSW50KS0+ZXF1YWxzVG9JbnQzMihzbWFsbEludCk7Cit9
CisjZW5kaWYKKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJh
eVdpdGhQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqIHByb2ZpbGUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgaW50IHNpemUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjgxNSw2ICsyODI4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KIAorLy8gRklYTUU6
IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBz
aW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjgyNyw4ICsyODQxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmlt
VmFsdWUpKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQz
MigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSkpOworICAg
ICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0K
KyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hl
YXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtMjgzNiw2ICsyODU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9
CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25W
YWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7
CkBAIC0yODUwLDEwICsyODczLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNW
YWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAo
cHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmln
SW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2
YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9
IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgp
KSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwg
cHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZl
UmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogICAgIH0KIApAQCAtMjg2NCw2ICsyODk3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3
b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2Ug
dGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqIG5lZ0lD
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4ODQsOSArMjkxOCwy
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpTVmFsdWUgcHJpbVZhbHVl
ID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlmIChwcmltVmFsdWUu
aXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5
TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBw
cmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlO
KSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1
bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAg
ICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7
CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAg
ICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1
ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChy
ZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpA
QCAtMjg5OCw2ICsyOTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0
ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQg
Y2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTE3LDkgKzI5NjMsMTggQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJp
bVZhbHVlKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1FOiB3aHkgZG9lcyB0
aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBub3QgdGhlIHJlc3VsdD8KKyAg
ICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0g
cHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01J
TikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVh
cEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFy
eU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1i
ZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjAwZmNhMjlkYzIuLjIwOWIzYzNmOGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjA1LDYgKzIwNSw3IEBA
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcShKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKICNpZiBVU0UoSlNWQUxVRTY0KQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50KSBXVEZfSU5URVJOQUw7CiAj
ZWxzZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xv
YmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVB
c21Db25maWcuaAppbmRleCA1MjQzNWE2NjEyMC4uMmEyYmI5OWY5NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTEz
Niw2ICsxMzYsMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fSlNWQUxVRTY0IDAKICNlbmRpZgog
CisjaWYgVVNFKEJJR0lOVDMyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCisjZW5kaWYKKwogI2lmIENQVShBRERS
RVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDEwMjk1NTQyMTg5Li4xZGQwZGVmOWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTk2LDYgKzE5NiwxMSBAQCBp
ZiBKU1ZBTFVFNjQKICAgICBjb25zdCBWYWx1ZU51bGwgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6VmFsdWVOdWxsCiAgICAgY29uc3QgVGFnTnVtYmVyICAgICAgID0gY29uc3RleHByIEpTVmFs
dWU6Ok51bWJlclRhZwogICAgIGNvbnN0IE5vdENlbGxNYXNrICAgICA9IGNvbnN0ZXhwciBKU1Zh
bHVlOjpOb3RDZWxsTWFzaworICAgIGlmIEJJR0lOVDMyCisgICAgICAgIGNvbnN0IFRhZ0JpZ0lu
dDMyID0gY29uc3RleHByIEpTVmFsdWU6OkJpZ0ludDMyVGFnCisgICAgICAgIGNvbnN0IE1hc2tC
aWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMk1hc2sKKyAgICBlbmQKKyAgICBj
b25zdCBMb3dlc3RPZkhpZ2hCaXRzID0gY29uc3RleHByIEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJp
dHMKIGVsc2UKICAgICBjb25zdCBJbnQzMlRhZyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpJbnQzMlRh
ZwogICAgIGNvbnN0IEJvb2xlYW5UYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Qm9vbGVhblRhZwpA
QCAtNTIxLDYgKzUyNiw3IEBAIGNvbnN0IEpTRnVuY3Rpb25UeXBlID0gY29uc3RleHByIEpTRnVu
Y3Rpb25UeXBlCiBjb25zdCBBcnJheVR5cGUgPSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBE
ZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHByIERlcml2ZWRBcnJheVR5cGUKIGNvbnN0IFByb3h5
T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9iamVjdFR5cGUKK2NvbnN0IEhlYXBCaWdJbnRU
eXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRUeXBlCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVz
IG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhl
IG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBw
dXRfYnlfdmFsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2MjY1MmE2NjIzNS4uZjU1YzU3NTY2MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMzAzLDYgKzEzMDMsMTIgQEAgbGxpbnRPcFdpdGhSZXR1
cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQogZW5kKQogCiAKKyMgT24gMzItYml0IHBsYXRmb3JtcyBCSUdJTlQzMiBpcyBub3Qg
c3VwcG9ydGVkLCBzbyB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9m
IG9wX2lzX2JpZ19pbnQKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJ
bnQsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICBub3RTdXBwb3J0ZWQo
KQorZW5kKQorCisKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElz
Q2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdl
dChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQw
LCB0MykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggMzQxNjgwYWJlZTguLjljMmM1NWQyNThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0
NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxs
LCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0CiBlbmQpCiAKIAotbWFjcm8g
c3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQor
bWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGNyZWF0ZUJvb2xlYW4p
CiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX3JocywgdDAp
CiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0
MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAgICAjIElmIChsZWZ0
IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1Bh
dGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgICAgICAjIGlmIChy
ZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
ICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0OworCisgICAgICAgICMgVGhpcyBm
cmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3
aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVs
eSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAg
ICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRk
aW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBi
aXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8
PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBvbmx5
IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCiAgICAgICAgIG1vdmUgdDAsIHQyCi0gICAg
ICAgIG9ycSB0MSwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAgICAgbW92ZSBMb3dlc3RP
ZkhpZ2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAgICBhZGRxIHQ1LCB0Mwor
ICAgICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgMSwgdDUKKyAgICAgICAgYnFhZXEg
dDMsIHQ1LCAuc2xvdworCisgICAgICAgIGNxZXEgdDAsIHQxLCB0NQorICAgICAgICBidHFueiB0
NSwgdDUsIC5kb25lICNpcyB0aGVyZSBhIGJldHRlciB3YXkgb2YgY2hlY2tpbmcgdDUgIT0gMCA/
CisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4g
J29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3Ig
YSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEs
IHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0
MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93
Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAg
ICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAg
ZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKLSAgICAgICAgb3JxIFZhbHVlRmFsc2UsIHQw
Ci0gICAgICAgIHJldHVybih0MCkKKworICAgIC5kb25lOgorICAgICAgICBjcmVhdGVCb29sZWFu
KHQ1KQorICAgICAgICByZXR1cm4odDUpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtODcxLDMzICs4OTUsNTMgQEAgZW5kCiAK
IAogc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKKyAgICBtYWNybyAob3Bl
cmFuZCkgeG9ycSBWYWx1ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAogCiBzdHJpY3RFcU9wKG5zdHJp
Y3RlcSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxbmVx
IGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVl
VHJ1ZSwgb3BlcmFuZCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmljdEVxdWFs
aXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwganVtcElmRXF1YWwsIGp1bXBJZk5v
dEVxdWFsKQogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xocywg
dDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQz
LCB0MSkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAgICAjIElmIChs
ZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAgIGdvdG8gc2xv
d1BhdGg7CisgICAgICAgICMgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICMgICAgIGdvdG8g
anVtcFRhcmdldDsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwp
CisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgZ290byBvdGhlckp1bXBU
YXJnZXQKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0
aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZklu
dDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1Zh
bHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3Zl
cmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgICMgSWYgaXQgaXMgbm90
IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNl
dAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgog
ICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCisgICAgICAgIG1vdmUgdDEs
IHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAgICAgYWRkcSB0NSwg
dDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0MworICAgICAgICBsc2hp
ZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAgICAgICBicWVxIHQw
LCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEg
Y291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBw
b3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAg
ICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAg
ICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1i
ZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywg
LnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRP
SzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVtcFRhcmdldCkKLSAgICAg
ICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXRM
YWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90YXJnZXRMYWJlbCwgZGlzcGF0
Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFi
ZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywzMyArOTUxLDM2IEBAIGVuZAogCiAKIHN0
cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCi0KKyAgICBt
YWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRhcmdldExhYmVsKSBlbmQs
CisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQp
CiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHJpY3RlcSwKLSAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQp
CisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQs
CisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJl
bCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JoIHR5
cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Qy
XQogICAgICAgICBlbmQKIAotICAgICAgICBnZXQobV9zcmNEc3QsIHQwKQotICAgICAgICBsb2Fk
cSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgIyBN
ZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0MywgbnVtYmVyVGFnLCAu
c2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykKLSAgICAgICAgb3JxIG51
bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwgOF0KLSAgICAgICAgdXBk
YXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKLSAgICAgICAgZGlzcGF0Y2goKQorICAg
IGdldChtX3NyY0RzdCwgdDApCisgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgIG1ldGFk
YXRhKHQyLCB0MykKKyAgICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRhdGEgaW4gdDIKKyAgICAjIEZJ
WE1FOiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGggZm9yIEJpZ0ludDMyLiBX
ZSBjb3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBoZXJlIGZvciB0aGVtLgor
ICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgIGludGVnZXJPcGVyYXRpb24odDEsIC5z
bG93KQorICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MCwgOF0K
KyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQorICAgIGRpc3BhdGNoKCkK
IAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFt
ZSUpCiAgICAgICAgIGRpc3BhdGNoKCkKICAgICBlbmQpCisKIGVuZAogCiBsbGludE9wV2l0aFBy
b2ZpbGUob3BfdG9fbnVtYmVyLCBPcFRvTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQpAQCAtMTI4MCw2ICsxMzI3LDIwIEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lz
X251bWJlciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
IGVuZCkKIAogCitsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBt
YWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fb3BlcmFuZCwgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCisgICAgYnRxbnogdDAs
IG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwg
SGVhcEJpZ0ludFR5cGUsIHQxCisgICAgb3JxIFZhbHVlRmFsc2UsIHQxCisgICAgcmV0dXJuKHQx
KQorLm5vdENlbGxDYXNlOgorICAgIGFuZHEgTWFza0JpZ0ludDMyLCB0MAorICAgIGNxZXEgdDAs
IFRhZ0JpZ0ludDMyLCB0MAorICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIHJldHVybih0MCkK
K2VuZCkKKwogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxs
V2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0dShz
aXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQwKQogICAgIGdldChtX29wZXJhbmQsIHQx
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCA4
NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC04Myw2ICs4MywxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBJ
ZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0
IElkZQogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBi
aWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5n
KCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgSlNC
aWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CisKICAgICAvLyBGSVhNRTogV2UgYXJlIGFsbG9jYXRpbmcgYSBKU0JpZ0ludCBqdXN0
IHRvIGJlIGFibGUgdG8gdXNlCiAgICAgLy8gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyB3aGVuIHJh
ZGl4IGlzIG5vdCAxMC4KICAgICAvLyBUaGlzIGNyZWF0ZXMgc29tZSBHQyBwcmVzc3VyZSwgYnV0
IHNpbmNlIHRoZXNlIGlkZW50aWZpZXJzCkBAIC05MCwxMSArOTQsMTUgQEAgY29uc3QgSWRlbnRp
ZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZt
LCBjb25zdCBJZGUKICAgICAvLyBpdCB3b250IGJlIG11Y2ggcHJvYmxlbWF0aWMsIGdpdmVuIHN1
Y2ggY2FzZXMgYXJlIHZlcnkgcmFyZS4KICAgICAvLyBUaGVyZSBpcyBhIGxvdCBvZiBvcHRpbWl6
YXRpb25zIHdlIGNhbiBhcHBseSBoZXJlIHdoZW4gbmVjZXNzYXJ5LgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MjcKLQotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gSlNCaWdJ
bnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNC
aWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUlu
dFNpZ246OlVuc2lnbmVkKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1f
aWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0
cnlHZXRTdHJpbmcodm0sIGJpZ0ludCwgMTApKSk7CisgICAgSlNCaWdJbnQqIGhlYXBCaWdJbnQ7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAg
ICBoZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFz
SW50MzIoKSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGhlYXBCaWdJbnQgPSBiaWdJbnQu
YXNIZWFwQmlnSW50KCk7CisKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50LCAxMCkp
KTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA3YTY0MmMwMjZm
ZC4uMWU0ZDlmYjBlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIK
ICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlw
ZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25D
aGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggMmZmM2Y3OTcyMGIuLjVmMGQ1NDg0ODIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFA
Z21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsMTggKzc1
LDYgQEAgdm9pZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJ
bnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGlj
IGJvb2wgaXNTYWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVu
dC5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1bWVudC5p
c0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0g
YXJndW1lbnQuYXNEb3VibGUoKTsKLSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBudW1iZXIg
JiYgc3RkOjphYnMobnVtYmVyKSA8PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBhcmd1bWVudCkKIHsKICAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CkBAIC05
NCwyMCArODIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYgKGFyZ3Vt
ZW50LmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQp
OwotICAgIAorCisgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgYXJndW1lbnQuYXNCb29sZWFuKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVh
bigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkgewor
ICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAo
U3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
QmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQu
aXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAgCi0gICAg
aWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8
fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9w
ZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwotICAg
IAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVj
dCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOwotICAg
IH0pKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTEx
OSwyMCArMTExLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxC
aWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmlt
aXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1pdGl2ZS5p
c051bWJlcigpKSB7Ci0gICAgICAgIGlmICghaXNTYWZlSW50ZWdlcihwcmltaXRpdmUpKQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKLSAgICAgICAg
Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMy
KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMy
KCkpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZWxz
ZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZt
LCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CiAKLSAgICAgICAgaWYgKHBy
aW1pdGl2ZS5pc1VJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzVUludDMyKCkpKTsKKyAgICBpZiAo
cHJpbWl0aXZlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHByaW1pdGl2
ZS5hc0RvdWJsZSgpOworICAgICAgICBpZiAodHJ1bmMobnVtYmVyKSAhPSBudW1iZXIgfHwgc3Rk
OjphYnMobnVtYmVyKSA+IG1heFNhZmVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiTm90IGEgc2FmZSBpbnRlZ2VyIl9zKSk7CiAKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJp
bWl0aXZlLmFzRG91YmxlKCkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyT3JIZWFwLCB2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQotICAgIAorCiAgICAgRW5jb2RlZEpTVmFs
dWUgcmVzdWx0ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcApp
bmRleCBlZTAwNDVkYWM5Ni4uZTYxOTgyYjkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19BU1NFUlRf
SVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xhc3NJbmZv
IEJpZ0ludE9iamVjdDo6c19pbmZvID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAKIAotQmln
SW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQmlnSW50KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVj
dDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBi
aWdJbnQpCiB7CiAgICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGdsb2JhbE9i
amVjdC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0sIGJpZ0ludCk7CkBAIC00OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6QmlnSW50T2Jq
ZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmlnSW50T2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lkIEJpZ0lu
dE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKaW5kZXgg
NDRmYzc2ZmJkZjkuLmE2MzU0YTE2ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRPYmplY3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0u
YmlnSW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2Jq
ZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGlj
IEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgp
KTsgfQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBl
ck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAK
IHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwg
U3RydWN0dXJlKik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcAppbmRleCBkYjRhNjE4ODk5ZC4uZmI1YjlmYWIxMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTc5LDEyICs3OSwyNCBAQCB2b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50
KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBp
cyBpbm5lZmljaWVudCwgYnV0IHJlLWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmln
SW50cyBpcyBlbm91Z2ggd29yayB0aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRj
aC4KKyAgICBpZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCB0aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlm
CisKICAgICBpZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCog
YmlnSW50ID0ganNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJ
bnRPYmplY3QqIGJpZ0ludE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0s
IHRoaXNWYWx1ZS5hc0NlbGwoKSkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5p
bnRlcm5hbFZhbHVlKCk7CisKKyAgICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkg
eworICAgICAgICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFs
dWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50
MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJp
Z0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJ
bnQuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTk5LDggKzExMSw2IEBAIHN0YXRpYyBKU1ZhbHVlIGJpZ0ludFByb3RvRnVuY1RvU3Ry
aW5nSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwogCi0g
ICAgQVNTRVJUKHZhbHVlKTsKLQogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0VG9TdHJpbmdS
YWRpeEFyZ3VtZW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc2NvcGUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTExOCw2ICsxMjgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9
CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhlIHJpZ2h0IHNl
cGFyYXRvcnMgZm9yIHRob3VzYW5kcyBhbmQgc2ltaWxhciB0aGluZ3MuCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAppbmRleCA0NGQ4ZmI0YjQyMi4uMjRlODgzN2QzOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5
LDcgKzY5LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBl
UHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLSNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDcwLDEzICs0Njks
OCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7CiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VU
X0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50Kiwg
ZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAg
ICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1
bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1
bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6Omdl
dDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5H
X0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC00ODUsMTMg
KzQ3OSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQg
PSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJ
bnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGdsb2JhbE9iamVjdCwgYXJndW1lbnQp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAg
IHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdU
Rjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9G
SUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTUw
OCw3ICs0OTcsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0
aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2Jz
ZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0
LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgeworCisgICAgaWYgKHJl
c3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJ
bnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIo
KSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYKKyAgICBl
bHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0ludDMyKCkpCiAg
ICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKTsKQEAgLTUy
OCwxMCArNTI1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0
aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHByb2ZpbGUuc2V0T2Jz
ZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIHVwZGF0ZUFy
aXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBKU1ZhbHVlLCBK
U1ZhbHVlKSB7IH0KQEAgLTU0Niw4ICs1NDAsMjEgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogCi0gICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMy
X3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1
ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElO
RyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFy
aXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJ
bnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXMo
dm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJ
TElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJp
dGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01ODUsOCAr
NTkyLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3Ao
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNl
dE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkp
CisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHByb2ZpbGUu
c2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxzZSAKICAgICAgICAgcHJvZmls
ZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwOCwxMyArNjE5LDggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBH
RVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50
KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAg
ICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UK
LSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50
KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY1MCw3ICs2NTYsNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFy
aXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0v
LyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051
bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0
aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAog
Ly8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcyLDI0ICs2NzgsOCBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+
KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsK
ICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAg
ICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmlj
KGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJp
bmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJp
Z2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4o
cmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAg
ICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDEsMjYgKzY5
MSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xo
cykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3Jocyku
anNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBy
aWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAg
ICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRl
QXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMs
IHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3Vi
bGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RG
OjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAg
dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMyLDI0ICs3MDQsOSBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpz
VmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFs
dWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5k
ZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91
YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdU
Rjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2Qo
YSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3BvdykKQEAgLTc1OCwyNSArNzE1LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Bv
dykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVm
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9
IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9
IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAg
IENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24u
IikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51
bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwot
Ci0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRV
Uk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4
NSwyMiArNzI2LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRf
QyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhi
eXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7
Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3Bl
cmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpn
ZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVy
aWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3Qs
IGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklM
RUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgw
OSwyMiArNzM4LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRf
QyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhi
eXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7
Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpT
QmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAg
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQg
cmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxF
RChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGlu
dDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNo
aWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOwor
ICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfdXJzaGlmdCkKQEAgLTg1MCw3OSArNzY3LDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
Qml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29w
ZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51
bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9G
SUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5t
X29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RG
OjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0Jp
dHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhz
KS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3Jocyku
anNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIpKTsKLSAg
ICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAg
ICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJF
VFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBX
VEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1f
cmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lz
ZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Cisg
ICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRv
IHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJP
VyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAg
IFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykg
fCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVj
b2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29k
ZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJp
dHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9u
LiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsK
IAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVt
ZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMzNDU0NDJmNTQuLjQ2YTliMTAxNTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw3ICs4MCw3IEBAIHZv
aWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBT
dHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVh
dGVaZXJvKFZNJiB2bSkKQEAgLTE4OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRv
UHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QK
ICAgICByZXR1cm4gY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1
aW50OF90PiBKU0JpZ0ludDo6c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYg
KGlzWmVybygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0g
MSAmJiAhc2lnbigpKSB7Ci0gICAgICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAg
ICBpZiAockRpZ2l0IDw9IDkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhf
dD4ockRpZ2l0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmln
SW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMs
IEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2Rl
IHBhcnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9k
ZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwg
cy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVp
bnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWdu
KQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBh
cnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAg
ICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBz
Lmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNh
bGxvd0VtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwg
cy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24s
IFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5n
VmlldyBzKQorSlNWYWx1ZSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9i
YWxPYmplY3QsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1
NCwxNiArNDQxLDIzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0Jp
Z0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewot
ICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9y
ZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBy
ZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOwor
ICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFs
T2JqZWN0LCB4LCBTaWduT3B0aW9uOjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9
IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3Vs
dC0+c2V0U2lnbih0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNC
aWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsK
LSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1v
cmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
cmV0dXJuIHN1YihnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsK
KyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0
ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCAxKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTaWduKHRy
dWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoIXgtPnNpZ24oKSkK
KyAgICAgICAgcmV0dXJuIGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3Ro
KCkpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRp
b246OlNpZ25lZCk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUzMiw3ICs1MjYs
NyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSQogICAgIGlmICh4LT5zaWduKCkpCiAgICAgICAg
IHN0ZDo6c3dhcCh4LCB5KTsKICAgICAKLSAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09
IHggJiB+KHktMSkKKyAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpCiAgICAgSlNCaWdJbnQq
IHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgoKSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIGFic29sdXRl
QW5kTm90KHZtLCB4LCB5MSk7CkBAIC0xNjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcgSlNCaWdJbnQ6
OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiB7CiAg
ICAgLy8gRklYTUU6IFtKU0NdIFJldmlzaXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8gSlNCaWdJbnQ6
OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDY3CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4
ID49IDIgJiYgcmFkaXggPD0gMzYpOwpAQCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9vbCBKU0JpZ0lu
dDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJs
ZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBl
KiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkK
K0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBh
cnNlTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTE4MTAs
NyArMTgwNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAgICAgd2hpbGUgKHAgPCBsZW5n
dGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0pKQogICAgICAgICArK3A7CiAKLSAgICAvLyBD
aGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJhY3RlcnMKKyAgICAvLyBDaGVjayBSYWRpeCBmcm9t
IGZpcnN0IGNoYXJhY3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAg
ICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicpKQogICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwg
cCArIDIsIDIsIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ246OlVuc2lnbmVkLCBQYXJzZUlu
dE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwpAQCAtMTgyNCwyNCArMTgxOCwxOCBAQCBKU0Jp
Z0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENo
YXJUeXBlKiAgZGF0YSwgdW5zaQogCiAgICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQYXJzZUludFNp
Z246OlVuc2lnbmVkOwogICAgIGlmIChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlmIChkYXRhW3Bd
ID09ICcrJykKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAn
LScpIHsKKyAgICAgICAgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CiAgICAgICAgICAgICBzaWduID0g
UGFyc2VJbnRTaWduOjpTaWduZWQ7CiAgICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChkYXRhW3BdID09ICcrJykKKyAgICAgICAgICAgICsrcDsKICAgICB9CiAK
LSAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwg
bGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwotCi0gICAgaWYgKHJlc3VsdCAm
JiAhcmVzdWx0LT5pc1plcm8oKSkKLSAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFy
c2VJbnRTaWduOjpTaWduZWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcGFy
c2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1v
ZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
Q2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24g
c2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9y
UGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2Rl
IHBhcnNlTW9kZSkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwogICAgIHVuc2lnbmVkIHAg
PSBzdGFydEluZGV4OwpAQCAtMTg1Miw3ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojpw
YXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBk
YXQKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChlcnJvclBhcnNl
TW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQogICAgICAgICAgICAgdGhy
b3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9i
amVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICAvLyBT
a2lwcGluZyBsZWFkaW5nIHplcm9zCkBAIC0xODY2LDQ0ICsxODU0LDg0IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
aGFyVHlwZSogZGF0CiAKICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CiAKLSAgICBpZiAocCA9
PSBsZW5ndGgpCisgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKLQotICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyAr
IChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsg
KHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsK
LQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCBy
YWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNj
ZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNl
cHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGha
ZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7
Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYg
ZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKLSAg
ICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkKLSAgICAg
ICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAgICAgICBlbHNlIGlmIChkYXRh
W2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRh
W2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCks
IHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworI2VuZGlmCiAgICAgfQogCi0gICAgcmVzdWx0
LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQgPyB0cnVlIDogZmFsc2UpOwot
ICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZt
KTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRo
YXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNp
Z25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBj
YXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50
MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1p
dEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
bGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAotICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QpOwotICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNl
cHRpb25zKQotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJ
bnQiKSk7CisgICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6
IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
cmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChzdGF0aWNfY2FzdDxp
bnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IGxlbmd0
aCAtIHA7CisgICAgd2hpbGUgKHAgPCBsZW5ndGgpIHsKKyAgICAgICAgaW50MzJfdCBkaWdpdCA9
IDA7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBtdWx0aXBsaWVy
ID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aExpbWl0Rm9yQmln
SW50MzIgJiYgcCA8IGxlbmd0aCA7ICsraSwgKytwKSB7CisgICAgICAgICAgICBkaWdpdCAqPSBy
YWRpeDsKKyAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gcmFkaXg7CisgICAgICAgICAgICBpZiAo
ZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtwXSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdp
dCArPSBkYXRhW3BdIC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnYScg
JiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0g
J2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdBJyAmJiBkYXRhW3Bd
IDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnQScgKyAxMDsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9
PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFp
bGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUKGRpZ2l0IDwgbXVsdGlwbGllci51bnNhZmVHZXQoKSk7CisKKyAgICAg
ICAgaWYgKCFoZWFwUmVzdWx0KSB7CisgICAgICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAg
ICAgICAgICAgICAgZGlnaXQgKj0gLTE7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsKKyNlbHNlCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+
KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhlYXBSZXN1bHQg
PSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgaW5pdGlhbExlbmd0aCk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgICAg
ICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNz
IHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRp
b24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgaWYgKCFoZWFwUmVzdWx0KQorICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBoZWFwUmVzdWx0LT5pbml0aWFs
aXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworICAgICAgICB9CisgICAgICAgIGhl
YXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGll
ci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworICAgIH0KIAotICAg
IHJldHVybiBudWxscHRyOworICAgIGhlYXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUlu
dFNpZ246OlNpZ25lZCk7CisgICAgcmV0dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CiB9
CiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCkBA
IC0xOTI3LDE4ICsxOTU1LDIwIEBAIGJvb2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVyKEpTVmFs
dWUgbnVtVmFsdWUpCiB7CiAgICAgQVNTRVJUKG51bVZhbHVlLmlzTnVtYmVyKCkpOwogICAgIAot
ICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpIHsKLSAgICAgICAgaW50IHZhbHVlID0gbnVtVmFs
dWUuYXNJbnQzMigpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIHRo
aXMtPmlzWmVybygpOwotCi0gICAgICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYg
KHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRp
Y19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Ci0g
ICAgfQorICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBlcXVhbHNU
b0ludDMyKG51bVZhbHVlLmFzSW50MzIoKSk7CiAgICAgCiAgICAgZG91YmxlIHZhbHVlID0gbnVt
VmFsdWUuYXNEb3VibGUoKTsKICAgICByZXR1cm4gY29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVl
KSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKIH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxz
VG9JbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVy
biB0aGlzLT5pc1plcm8oKTsKKyAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0
aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNf
Y2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkpOworfQor
CiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpT
QmlnSW50KiB4LCBkb3VibGUgeSkKIHsKICAgICAvLyBUaGlzIGFsZ29yaXRobSBleHBlY3QgdGhh
dCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJRUVFIDc1NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0ZTYwOTlmNDcuLjk3ZmM5MTY1MzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MCwxMyArOTAsMTIgQEAgcHVibGljOgog
ICAgIGVudW0gY2xhc3MgUGFyc2VJbnRNb2RlIHsgRGlzYWxsb3dFbXB0eVN0cmluZywgQWxsb3dF
bXB0eVN0cmluZyB9OwogICAgIGVudW0gY2xhc3MgUGFyc2VJbnRTaWduIHsgVW5zaWduZWQsIFNp
Z25lZCB9OwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCos
IFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBh
cnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVu
c2lnbmVkKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0Kiwg
U3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRp
b25zKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgU3RyaW5nVmlldyk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlID0gRXJy
b3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWdu
OjpVbnNpZ25lZCk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmplY3Qq
LCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2Vw
dGlvbnMpOworICAgIHN0YXRpYyBKU1ZhbHVlIHN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgU3RyaW5nVmlldyk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRyeUdldFN0cmluZyhWTSYsIEpT
QmlnSW50KiwgdW5zaWduZWQgcmFkaXgpOwogCi0gICAgT3B0aW9uYWw8dWludDhfdD4gc2luZ2xl
RGlnaXRWYWx1ZUZvclN0cmluZygpOwogICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHJhZGl4KTsKICAgICAKICAgICBlbnVtIGNsYXNzIENvbXBhcmlzb25Nb2Rl
IHsKQEAgLTExMyw2ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZXF1YWxzKEpTQmlnSW50KiwgSlNCaWdJbnQqKTsKICAgICBib29sIGVx
dWFsc1RvTnVtYmVyKEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxz
VG9JbnQzMihpbnQzMl90KTsKICAgICBzdGF0aWMgQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlKEpT
QmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihK
U0dsb2JhbE9iamVjdCosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0OwpA
QCAtMjIyLDEwICsyMjIsMTAgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9i
amVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7
CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSog
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUpOwogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWdu
ID0gUGFyc2VJbnRTaWduOjpTaWduZWQsIFBhcnNlSW50TW9kZSA9IFBhcnNlSW50TW9kZTo6QWxs
b3dFbXB0eVN0cmluZyk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0
SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduID0gUGFy
c2VJbnRTaWduOjpTaWduZWQsIFBhcnNlSW50TW9kZSA9IFBhcnNlSW50TW9kZTo6QWxsb3dFbXB0
eVN0cmluZyk7CiAKICAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEpTR2xvYmFsT2Jq
ZWN0KiwgVk0mLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZWQgY2hhcmNvdW50KTsKIApAQCAtMjU4
LDkgKzI1OCw5IEBAIHByaXZhdGU6CiAgICAgQ2FnZWRVbmlxdWVQdHI8R2lnYWNhZ2U6OlByaW1p
dGl2ZSwgRGlnaXQ+IG1fZGF0YTsKIH07CiAKLWlubGluZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNW
YWx1ZSB2YWx1ZSkKK2lubGluZSBKU0JpZ0ludCogYXNIZWFwQmlnSW50KEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0JpZ0ludCgpKTsKKyAgICBBU1NFUlQo
dmFsdWUuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpKTsKICAgICByZXR1cm4ganNDYXN0PEpTQmln
SW50Kj4odmFsdWUuYXNDZWxsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDU0ODAxMGViMWMwLi41YzVhMzJhY2U3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTEsNyArMSw3
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5j
b20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmln
SW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
Qm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAt
NzEsNiArNzIsMTQgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNE
b3VibGUoKSk7CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0lu
dDMyKCkpIHsKKyAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251
bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9Cisj
ZW5kaWYKICAgICBpZiAoaXNUcnVlKCkpCiAgICAgICAgIHJldHVybiAxLjA7CiAgICAgcmV0dXJu
IGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0
IHRvIDAuCkBAIC0xMDEsNiArMTEwLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNs
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1Ry
dWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUlt
bWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gQmlnSW50T2JqZWN0Ojpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgKnRoaXMpOworI2VuZGlmCiAKICAgICBBU1NFUlQoaXNV
bmRlZmluZWRPck51bGwoKSk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0xMTgs
NiArMTMxLDE0IEBAIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8
fCBpc0ZhbHNlKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0
ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIEpTQ2VsbCogaGVhcEJpZ0ludCA9IHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdC0+dm0oKSwg
YmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAgICAgLy8gRklYTUU6IHRoZXJlIG11c3QgYmUgYSBz
aW1wbGVyIHdheSB0byBmaW5kIHRvVGhpcyBmb3IgSlNCaWdJbnQsIGJ1dCBJIGNhbid0IGV2ZW4g
ZmluZCB3aGVyZSBpdCBpcyBkZWZpbmVkLgorICAgICAgICByZXR1cm4gaGVhcEJpZ0ludC0+bWV0
aG9kVGFibGUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPnRvVGhpcyhoZWFwQmlnSW50LCBnbG9iYWxP
YmplY3QsIGVjbWFNb2RlKTsKKyAgICB9CisjZW5kaWYKKwogICAgIEFTU0VSVChpc1VuZGVmaW5l
ZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9CkBA
IC0xMzAsNyArMTUxLDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBpZiAoaXNDZWxsKCkpIHsK
ICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIGlm
IChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0lu
dFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwpAQCAtMTQwLDYgKzE2MSwxMCBAQCBK
U09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90
b3R5cGUoKTsKICAgICBpZiAoaXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmln
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7
CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2Jh
bE9iamVjdCwgKnRoaXMpKTsKQEAgLTI4Niw2ICszMTEsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJ
bkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAgIG91dC5wcmludCgiU3ltYm9s
OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAg
ICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4o
YXNDZWxsKCkpLCBjb250ZXh0KSk7CisgICAgICAgIGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgpKQor
ICAgICAgICAgICAgb3V0LnByaW50KCJCaWdJbnRbaGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIsIFJh
d1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKS0+aXNTdWJDbGFzc09mKEpTT2JqZWN0OjppbmZvKCkpKSB7CiAgICAgICAgICAgICBvdXQu
cHJpbnQoIk9iamVjdDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICAgICAgb3V0
LnByaW50KCIgd2l0aCBidXR0ZXJmbHkgIiwgUmF3UG9pbnRlcihhc09iamVjdChhc0NlbGwoKSkt
PmJ1dHRlcmZseSgpKSk7CkBAIC0zMDUsNiArMzMyLDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcElu
Q29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAg
ICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAg
IG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNl
bmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zNDcs
NiArMzc4LDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1Vu
ZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJp
Z0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UK
ICAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zODQsMTggKzQxOSwyNSBAQCBK
U1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBib29sIHJldHVybkVtcAogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51
bGxTdHJpbmcoKTsKICAgICBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNt
YWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQg
YSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8g
aW50ZWdlciA9IGJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGludGVnZXIpIDw9IDkpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZyhpbnRlZ2VyICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAg
ICB9Ci0gICAgaWYgKGlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFz
QmlnSW50KCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURp
Z2l0VmFsdWVGb3JTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mu
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpkaWdpdCArICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiBy
ZXR1cm5TdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xv
YmFsT2JqZWN0LCAxMCkpOworI2VuZGlmCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKSB7CisgICAg
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgLy8gRklYTUU6
IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2FzZXMgaGVyZTogb25lLWNoYXJhY3RlciBzdHJp
bmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBldmVyeXRoaW5nIGVsc2UuCisgICAgICAgIEpT
U3RyaW5nKiByZXR1cm5TdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlKHZtLCBiaWdJbnQtPnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgMTApLnJlbGVhc2VJbXBsKCkucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9yVmFsdWUoKSk7CiAgICAgICAg
IHJldHVybiByZXR1cm5TdHJpbmc7CiAgICAgfQorICAgIGlmIChpc1N5bWJvbCgpKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBh
IHN5bWJvbCB0byBhIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7Cisg
ICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxs
KCktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyU3RyaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA1ODZhZjNmYWIzNy4uYTkxMTQz
MGU1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNzYsNiArMTc2
LDEwIEBAIHB1YmxpYzoKICAgICBlbnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OwogICAgIGVudW0g
SlNGYWxzZVRhZyB7IEpTRmFsc2UgfTsKICAgICBlbnVtIEpTQ2VsbFRhZyB7IEpTQ2VsbFR5cGUg
fTsKKyAgICBlbnVtIEpTQmlnSW50VGFnIHsgSlNCaWdJbnQzMk9ySGVhcCB9OworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcgeyBKU0JpZ0ludDMyIH07CisjZW5kaWYK
ICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKIAogICAgIEpT
VmFsdWUoKTsKQEAgLTE4NSw2ICsxODksMTEgQEAgcHVibGljOgogICAgIEpTVmFsdWUoSlNGYWxz
ZVRhZyk7CiAgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CiAgICAgSlNWYWx1ZShjb25zdCBKU0Nl
bGwqIHB0cik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTVmFsdWUoSlNCaWdJbnQzMlRhZywg
aW50MzJfdCk7CisjZW5kaWYKKyAgICAvLyBSZXR1cm5zIGVpdGhlciBhIEJpZ0ludDMyIG9yIGEg
SGVhcEJpZ0ludC4KKyAgICBKU1ZhbHVlKEpTQmlnSW50VGFnLCBWTSYsIGludDY0X3QpOwogCiAg
ICAgLy8gTnVtYmVycwogICAgIEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CkBA
IC0yMTgsNiArMjI3LDkgQEAgcHVibGljOgogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0Owog
ICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7
IC8vIG11c3Qgb25seSBiZSBjYWxsZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAg
aW50MzJfdCBhc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMg
YW4gaW50LCBidXQgb3RoZXJ3aXNlIGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzcsNiArMjQ5LDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5n
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmln
SW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludDMyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5
bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlz
R2V0dGVyU2V0dGVyKCkgY29uc3Q7CkBAIC0yNDUsNyArMjU5LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaW5oZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mb09yTnVsbChWTSYpIGNvbnN0OwotICAgICAgICAKKwogICAgIC8vIEV4
dHJhY3RpbmcgdGhlIHZhbHVlLgogICAgIGJvb2wgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
V1RGOjpTdHJpbmcmKSBjb25zdDsKICAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCkBAIC0yNjQsOSAr
Mjc4LDEwIEBAIHB1YmxpYzoKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4cGVjdGVk
IHRvIGJlIHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhjZXB0aW9uIGhhcwogICAgIC8vIGJlZW4g
c2V0IGluIHRoZSBDYWxsRnJhbWUgYWxyZWFkeS4KICAgICBkb3VibGUgdG9OdW1iZXIoSlNHbG9i
YWxPYmplY3QqKSBjb25zdDsKLSAgICAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiB0
b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBWYXJpYW50PEpTQmlnSW50Kiwg
aW50MzJfdD4gdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICBK
U1ZhbHVlIHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTVmFsdWUgdG9C
aWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNCaWdJbnQqIGFzSGVh
cEJpZ0ludCgpIGNvbnN0OwogCiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4g
YmUgZG9uZSB3aXRob3V0IHNpZGUgZWZmZWN0cy4KICAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVt
YmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0OwpAQCAtMzE1LDggKzMzMCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmlj
dEVxdWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3Rh
dGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9v
bCBzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwgSlNDZWxs
KiB2Mik7CiAgICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CkBAIC00MTQsMTEgKzQyOCwy
MCBAQCBwdWJsaWM6CiAgICAgICogVGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9w
ZXJ0aWVzOgogICAgICAqIC0gQml0IDEgKE90aGVyVGFnKSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZh
bHVlcywgYWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBiZQogICAgICAqICAgcXVpY2tseSBkaXN0
aW5ndWlzaGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZh
bGlkIHBvaW50ZXJzLgotICAgICAqIC0gV2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmlu
ZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKKyAgICAgKiAtIFdpdGggYml0IDMg
bWFza2VkIG91dCAoVW5kZWZpbmVkVGFnKSwgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQog
ICAgICAqICAgc2FtZSB2YWx1ZSwgYWxsb3dpbmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlj
a2x5IGRldGVjdGVkLgogICAgICAqCiAgICAgICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUg
dGhlIGJpdCBwYXR0ZXJuIDB4MCwgdGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQogICAg
ICAqIGhvbGVzLCBhbmQgYXMgYSBDKysgJ25vIHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgp
IGhhcyBhbiBpbnRlcm5hbCB2YWx1ZSBvZiAwKS4KKyAgICAgKgorICAgICAqIFdoZW4gVVNFKEJJ
R0lOVDMyKSwgd2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhh
dCBhcmUgc21hbGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhY
OjAwMTIKKyAgICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZv
bGxvd2luZyB0aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERv
dWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5v
dCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3
aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGgg
YSBwb2ludGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQor
ICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJp
dCAyIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBu
dWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAg
ICAvLyBUaGlzIHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0
IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQyOCwxMSArNDUxLDE5IEBAIHB1Ymxp
YzoKICAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRl
cyBhbiBpbnRlZ2VyIG51bWJlciwKICAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0
aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IE51bWJlclRhZyA9IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOworICAgIC8vIFRo
ZSBmb2xsb3dpbmcgY29uc3RhbnQgaXMgdXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50
YXRpb24gb2Ygc3RyaWN0RXEsIHRvIGRldGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBp
cyBhIGRvdWJsZQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRz
ID0gMVVMTCA8PCA0OTsKKyAgICBzdGF0aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1i
ZXJUYWcpOworICAgIHN0YXRpY19hc3NlcnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1i
ZXJUYWcpKTsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVk
KSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJf
dCBPdGhlclRhZyAgICAgICA9IDB4MjsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9v
bFRhZyAgICAgICAgPSAweDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5l
ZFRhZyAgID0gMHg4OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBzdGF0aWMgY29uc3RleHByIGlu
dDMyX3QgQmlnSW50MzJUYWcgICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBCaWdJbnQzMk1hc2sgICA9IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOworI2VuZGlmCiAgICAg
Ly8gQ29tYmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KICAg
ICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8IEJv
b2xUYWcgfCBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVlICAg
ICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNWIzZmY4YWM0NGUuLjBhNzg4
MDMzN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0yNDAsNiArMjM5LDEzIEBAIGlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKGNvbnN0IEpTQ2VsbCogcHRyKQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSByZWludGVycHJl
dF9jYXN0PGludDMyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKSk7CiB9CiAKK2lubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50VGFnLCBWTSYgdm0sIGludDY0X3QgdmFsKQoreworICAg
IHUuYXNCaXRzLnRhZyA9IENlbGxUYWc7CisgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgdmFsKTsKKyAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRlcnByZXRfY2FzdDxp
bnQzMl90PihzdGF0aWNfY2FzdDxKU0NlbGwqPihwdHIpKTsKK30KKwogaW5saW5lIEpTVmFsdWU6
Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewogICAgIEFTU0VSVCh0YWcoKSAhPSBEZWxldGVkVmFs
dWVUYWcpOwpAQCAtMzI5LDYgKzMzNSwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1
ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1
LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6
YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7Cit9
CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91
YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC00NjQsNiArNDc2LDIw
IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiAgICAgdS5hc0ludDY0ID0g
VmFsdWVGYWxzZTsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnRUYWcsIFZN
JiB2bSwgaW50NjRfdCB2YWx1ZSkKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHZhbHVl
IDw9IElOVF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikgeworICAgICAgICAvLyBUaGUgJiB+TnVt
YmVyVGFnIHBhcnQgaXMgZm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBz
aWduLWV4dGVuZGVkLgorICAgICAgICB1LmFzSW50NjQgPSAoKHZhbHVlIDw8IDE2KSAmIH5OdW1i
ZXJUYWcpIHwgQmlnSW50MzJUYWc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwor
ICAgIEpTQ2VsbCogcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB1
LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsKK30KKwogaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdAogewogICAgIC8vIFVuZGVm
aW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBi
aXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KQEAgLTUyMiw4ICs1NDgsMjIgQEAgQUxXQVlTX0lOTElO
RSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQog
CitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAor
eworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
QmlnSW50Kj4odS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAorI2lmIFVT
RShCSUdJTlQzMikKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMy
X3QgdmFsdWUpCit7CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2
ZSBudW1iZXJzLCBvdGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50
NjQgPSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVtYmVyVGFnKSB8
IEJpZ0ludDMyVGFnOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGludDY0
X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBpZiAobnVtYmVyICE9
IG51bWJlcikKQEAgLTYxMCw5ICs2NTAsMzEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJp
bmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiBp
c0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6
OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgp
LT5pc0hlYXBCaWdJbnQoKTsKIH0KIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQzMigp
IGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5hc0ludDY0ICYgQmln
SW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpiaWdJ
bnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOworfQorI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAog
ewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTYyMCw3
ICs2ODIsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiAKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWlzQ2Vs
bCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFz
Q2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlz
U3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0lu
dCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0CkBA
IC03NjAsOCArODIyLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAgICAgIHZhbHVl
ID0gKnRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NFUlQoaXNVbmRl
ZmluZWQoKSk7Ci0gICAgbnVtYmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICBudW1iZXIgPSBQTmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252
ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAg
ICBudW1iZXIgPSAwLjA7CiAgICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTc3NSw0NCArODQ2LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVt
YmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRvTnVt
YmVyU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b051bWVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigp
KQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAg
ICByZXR1cm4gYXNEb3VibGUoKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJu
IGFzQmlnSW50KCp0aGlzKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkgfHwgaXNC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJp
bVZhbHVlLmlzRG91YmxlKCkgfHwgcHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBwcmltVmFsdWU7CisKICAgICBkb3VibGUgdmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1
cm4gdmFsdWU7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJl
dHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0lu
dCosIGludDMyX3Q+IEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvQmlnSW50
T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlmIChp
c0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgaWYgKGlzSW50MzIoKSB8
fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgaWYgKGlzRG91YmxlKCkg
JiYgY2FuQmVJbnQzMihhc0RvdWJsZSgpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGFzRG91YmxlKCkpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4g
YXNCaWdJbnQoKnRoaXMpOworICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oYXNEb3VibGUoKSkpOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVy
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50
MzIoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsK
KwogICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2
YWx1ZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKQEAgLTEwMzIsMzcgKzExMDQsMTcgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAg
IGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4g
djEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5p
c1N0cmluZygpOwotICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYg
KHMxICYmIHMyKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmlu
Zyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgczIpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFz
U3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJ
bnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
djIgPSBKU1ZhbHVlKG4pOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5p
c051bWJlcigpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAg
Ly8gR3VhcmFudGVlaW5nIHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBz
b21lIG9mIHRoZSBjYXNlcyBiZWxvdyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYx
LCB2Mik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewot
ICAgICAgICAgICAgU3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFs
T2JqZWN0LCB2MVN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9v
bGVhbnMsIEJpZ0ludDMyLCBPYmplY3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9y
ZSB0eXBlcy4KKyAgICAgICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwg
YmVjYXVzZSBpdCBpcyBOT1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09
IHYyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpA
QCAtMTA4MCw3ICsxMTMyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xv
d0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBp
ZiAodjEuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAg
ICAgIEpTVmFsdWUgcDEgPSB2MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBw
MTsKQEAgLTExMDIsNTYgKzExNTQsODQgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVx
dWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAg
ICAgYm9vbCBzeW0yID0gdjIuaXNTeW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikg
ewogICAgICAgICAgICAgaWYgKHN5bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4g
YXNTeW1ib2wodjEpID09IGFzU3ltYm9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7IC8vIHYxID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNT
dHJpbmcoKTsKKyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChz
MSkgeworICAgICAgICAgICAgaWYgKHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYy
KSkpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBh
cmUgZ3VhcmFudGVlZCB0byBlbnRlciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFy
aWFudCBvZiBvbmx5IHYyIGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAg
ICBpZiAoczEgfHwgczIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgcmV0dXJuIGQxID09IGQyOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhh
dCB0aGUgc3RyaW5nIGlzIHYyICh0aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAg
ICBpZiAodjEuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9
IGFzU3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
IGlmICghdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBG
b3IgQmlnSW50MzIKKyAgICAgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2Vu
ZXJpYyBjb2RlIGZvciBjb21wYXJpbmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRo
ZSBCaWdJbnQzMi9CaWdJbnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYx
LmlzQm9vbGVhbigpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxP
YmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2
Mi5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+
KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAo
djIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJl
cihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBh
cmlzb24gYmVsb3cKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRv
IHJlcGFpciB0aGUgcnVsZSB0aGF0IG9ubHkgdjIgaXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBp
biB0aGVzZSBjb21wYXJpc29ucworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAg
ICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051
bWJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19j
YXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNC
aWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9i
YWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24g
YmVsb3cKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYg
djIuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmln
SW50KHYxKSwgYXNCaWdJbnQodjIpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0lu
dCgpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5l
cXVhbHNUb051bWJlcih2Mik7CiAKLSAgICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNO
dW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVy
KHYxKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgICAgIGlmICh2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYx
LmJpZ0ludDMyQXNJbnQzMigpID09IHYyLmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5p
c0RvdWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYx
LmJpZ0ludDMyQXNJbnQzMigpKSA9PSB2Mi5hc0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpz
d2FwKHYxLCB2Mik7CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAg
ICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNIZWFwQmln
SW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFw
QmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hl
YXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7Cisg
ICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9IHdoaWxlICh0cnVlKTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJ
TkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJv
b2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIu
YXNDZWxsKCktPmlzU3RyaW5nKCkpCisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3Qs
IGFzU3RyaW5nKHYyKSk7Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2
MikpOworICAgIGlmICh2MS0+aXNIZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQor
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYx
KSwgc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0K
IApAQCAtMTE2MywxMCArMTI0MywxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlm
ICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051
bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5p
c0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1
cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkp
OworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAg
IHJldHVybiB2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50
MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAg
ICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwo
KSwgdjIuYXNDZWxsKCkpOwogCi0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUo
Z2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5l
IGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwx
NSArMTI3MSwyMyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1i
ZXIoKSkKICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1i
ZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKLSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlz
U3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3Ry
aW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAg
ICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFs
dWVJbXBsKCk7Ci0gICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAg
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci0gICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVx
dWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2
MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cmlT
dGF0ZSh2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIo
KSkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5i
aWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlmCisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIu
aXNDZWxsKCkpIHsKKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFz
Q2VsbCgpLT5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0
cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBjb25z
dCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7
CisgICAgICAgICAgICBpZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmluZykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6
OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHYx
LmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkp
CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBC
aWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRy
aVN0YXRlKHYxID09IHYyKTsKQEAgLTEyMDYsNiArMTMwMSwxMCBAQCBpbmxpbmUgVHJpU3RhdGUg
SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9B
bmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8g
ZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgp
LT5wdXJlVG9Cb29sZWFuKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiBiaWdJbnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZh
bHNlVHJpU3RhdGU7CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUg
OiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAppbmRleCAyNGVkNjUyMzM3OS4uOTBjNWE3ZmMxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIENvbnN0cnVjdFR5cGUg
SlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwt
PmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmco
KSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZp
ZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEpTQ2VsbDo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmln
SW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8
IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNl
bGwsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9Q
cmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1i
b2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVy
cmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcykt
PnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNjksNyAr
MTY5LDcgQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmpl
Y3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9i
YWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChp
c0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmlt
aXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE4MCw3ICsx
ODAsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0
aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9i
YWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0
Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0xOTAsNyArMTkwLDcgQEAg
SlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJp
Z0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlz
KS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAxMDY3NDlk
ZTNjZS4uN2Y5MjUwNGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5n
IHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50
KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3lt
Ym9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAppbmRleCAyZGFmN2JjMGRkYi4uYzI4MzgzNjgzNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIwNSw5ICsyMDUsOSBA
QCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBl
ID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25z
dAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVy
biBtX3R5cGUgPT0gQmlnSW50VHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRU
eXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MSw3
ICszNDEsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0
dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTM1MCw3ICszNTAsNyBAQCBpbmxpbmUgVHJpU3RhdGUg
SlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVh
bigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkK
KyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJp
U3RhdGU7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyMmMwMTIwNWMy
Zi4uN2U4YjI2MGFmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aApAQCAtMTAzOCw2ICsxMDM4LDEwIEBAIGlubGluZSBib29sIEpTVmFsdWU6OnRvQm9vbGVhbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gYXNEb3Vi
bGUoKSA+IDAuMCB8fCBhc0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYg
KGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVhbihnbG9iYWxPYmpl
Y3QpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gISFiaWdJbnQzMkFzSW50MzIoKTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKTsg
Ly8gZmFsc2UsIG51bGwsIGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQgdG8gZmFsc2UuCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IGExMzM3YzZhNGVm
Li4wZGM1Yjc0YzAwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoQ2VsbFR5cGUpCiAgICAgQ0FTRShTdHJpbmdUeXBl
KQogICAgIENBU0UoU3ltYm9sVHlwZSkKLSAgICBDQVNFKEJpZ0ludFR5cGUpCisgICAgQ0FTRShI
ZWFwQmlnSW50VHlwZSkKICAgICBDQVNFKFN0cnVjdHVyZVJhcmVEYXRhVHlwZSkKICAgICBDQVNF
KEN1c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdyYXBwZXJUeXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCAwZjg2OGE2YWUwNy4uZDE0
NjQzM2Q0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0yNiw4
ICsyNiw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gVGhlIENlbGxUeXBlIHZh
bHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxsLgogICAgIENl
bGxUeXBlLAogICAgIFN0cmluZ1R5cGUsCi0gICAgQmlnSW50VHlwZSwKLSAgICBMYXN0TWF5YmVG
YWxzeUNlbGxQcmltaXRpdmUgPSBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRUeXBlLAorICAg
IExhc3RNYXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLAogICAgIFN5bWJv
bFR5cGUsCiAKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVJbmZvLmgKaW5kZXggM2NkNzEzZDg0ZjMuLjg4ZTMwZjIwOWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC0xMzQsNyAr
MTM0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykg
Y29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsg
fQogICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChm
bGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIAotICAg
IHVpbnQ4X3QgbV90eXBlOworICAgIEpTVHlwZSBtX3R5cGU7CiAgICAgdWludDhfdCBtX2ZsYWdz
OwogICAgIHVpbnQxNl90IG1fZmxhZ3MyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKaW5kZXgg
YzRlYmJlYzUwMzUuLjI3YTIyMWMyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApAQCAtMjYs
OSArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUuaCIKIAotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJsZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmNwcAppbmRleCA0OTA1ZDViYWYwNy4uNTNlZDEyNGU1ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDExICszNiw2IEBAIGJvb2wgSlNW
YWx1ZTo6ZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIpOwogfQogCi1ib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAg
ICByZXR1cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7
Ci19Ci0KIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKICAgICAvLyBleGNlcHRp
b24gZm9yIHRoZSBEYXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQpAQCAtNzMsMjEgKzY4
LDIzIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCBwMVN0cmluZywgYXNTdHJpbmcocDIpKSk7
CiAgICAgfQogCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IHAxLnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSBwMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3Mp
OwotICAgIH0KLQotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1l
cmljKSArIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgYXV0byBkb3VibGVP
cCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICBy
ZXR1cm4gbGVmdCArIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0
OworICAgICAgICByZXN1bHQgKz0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQu
aGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7
CisjZWxzZQorICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OworICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHAxLCBwMiwgSlNCaWdJbnQ6OmFkZCwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKSk7CiB9CiAKIEpTVmFs
dWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYpCkBAIC0xMjgsNyArMTI1LDcgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZU9y
TnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJl
dHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7
Ci0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlw
ZSA9PSBCaWdJbnRUeXBlKQorICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBT
eW1ib2xUeXBlIHx8IHR5cGUgPT0gSGVhcEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVjdCh2
KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDRiYmUyM2Mw
NzI1Li42OTM4ZTI2NmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMzksNiArMjM4LDM1
IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlCiAgICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVh
c2UoKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21w
YXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogdjEsIEpTVmFsdWUgcHJpbVZhbHVlKQoreworICAgIEFTU0VSVChwcmltVmFsdWUu
aXNQcmltaXRpdmUoKSk7CisgICAgQVNTRVJUKCFwcmltVmFsdWUuaXNCaWdJbnQoKSk7CisKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7CisgICAg
ICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFs
T2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6
OlVuZGVmaW5lZCk7CisgICAgICAgIGlmICghYmlnSW50VmFsdWUpCisgICAgICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsKKworICAgICAgICBpZiAo
YmlnSW50VmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmNvbXBhcmUodjEsIGJpZ0ludFZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKKworICAgICAgICBBU1NF
UlQoYmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
IC8vIEZJWE1FOiB1c2Ugc29tZXRoaW5nIGxlc3MgaGFja3ksIGUuZy4gc29tZSBraW5kIG9mIEpT
QmlnSW50Ojpjb21wYXJlVG9JbnQzMgorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmVU
b0RvdWJsZSh2MSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihiaWdJbnRWYWx1ZS5iaWdJbnQzMkFzSW50
MzIoKSkpOworI2VuZGlmCisgICAgfQorCisgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgcmV0dXJuIEpT
QmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIG51bWJlclZhbHVlKTsKK30KKwogQUxXQVlTX0lO
TElORSBib29sIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQg
Y29tcGFyaXNvblJlc3VsdCwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlIGNvbXBhcmlzb25Nb2Rl
KQogewogICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6
Okxlc3NUaGFuKQpAQCAtMjU1LDUxICsyODMsNTAgQEAgQUxXQVlTX0lOTElORSBib29sIGJpZ0lu
dENvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWwK
IAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIu
aXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6
OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7Ci0g
ICAgCi0gICAgaWYgKHYxLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcmltVmFsdWUg
PSB2MjsKLSAgICAgICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2Jq
ZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICgh
YmlnSW50VmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2
MSksIGJpZ0ludFZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBh
cmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBhc0JpZ0ludChwcmltVmFs
dWUpKSwgY29tcGFyaXNvbk1vZGUpOwogCi0gICAgICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHBy
aW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpT
QmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjEpLCBudW1iZXJWYWx1ZSksIGNvbXBh
cmlzb25Nb2RlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAm
JiB2Mi5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmln
SW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCisgICAgICAgICAgICByZXR1cm4gdjEuYmln
SW50MzJBc0ludDMyKCkgPCB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGNv
bXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFs
KTsKKyAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDw9IHYyLmJpZ0ludDMyQXNJ
bnQzMigpOwogICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYxOwotICAgIGlm
IChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50VmFsdWUg
PSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFs
dWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIHYxSGVh
cEJpZ0ludCA9IG51bGxwdHI7CisgICAgSlNCaWdJbnQqIHYySGVhcEJpZ0ludCA9IG51bGxwdHI7
CisgICAgLy8gRklYTUU6IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRoIGZvciBhIGNvbXBhcmlzb24g
YmV0d2VlbiBhIHNtYWxsIGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAgICBpZiAodjEuaXNIZWFwQmln
SW50KCkpCisgICAgICAgIHYxSGVhcEJpZ0ludCA9IHYxLmFzSGVhcEJpZ0ludCgpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2MS5pc0JpZ0ludDMyKCkpCisgICAgICAgIHYxSGVh
cEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2MS5iaWdJbnQzMkFzSW50MzIoKSk7
CisjZW5kaWYKKworICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjJIZWFwQmln
SW50ID0gdjIuYXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYg
KHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxSGVh
cEJpZ0ludCAmJiB2MkhlYXBCaWdJbnQpCisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KEpTQmlnSW50Ojpjb21wYXJlKHYxSGVhcEJpZ0ludCwgdjJIZWFwQmlnSW50KSwgY29tcGFy
aXNvbk1vZGUpOworCisgICAgaWYgKHYxSGVhcEJpZ0ludCkgeworICAgICAgICBhdXRvIGNvbXBh
cmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IHYxSGVhcEJpZ0ludCwgdjIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7Ci0gICAgICAgIGlmICghYmlnSW50VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBh
cmUoYmlnSW50VmFsdWUsIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKKyAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoY29tcGFyaXNvblJlc3VsdCwgY29tcGFyaXNvbk1v
ZGUpOwogICAgIH0KLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAg
IHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHBy
aW1WYWx1ZSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBkb3Vi
bGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKKyAgICBhdXRvIGNvbXBhcmlzb25S
ZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHYySGVh
cEJpZ0ludCwgdjEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICAvLyBIZXJlIHdlIGNoZWNrIGludmVydGVkIGJlY2F1c2UgQmlnSW50IGlzIHRoZSB2MgotICAg
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQgPSBKU0JpZ0ludDo6
Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYyKSwgbnVtYmVyVmFsdWUpOwogICAgIGlmIChjb21w
YXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQogICAgICAg
ICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6
R3JlYXRlclRoYW47Ci0KICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFyaXNvblJlc3VsdCA9PSBKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdDo6RXF1YWw7CisKKwogfQogCiBBTFdBWVNfSU5MSU5FIGJv
b2wgdG9QcmltaXRpdmVOdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdiwgSlNWYWx1ZSYgcCwgZG91YmxlJiBuKQpAQCAtMzU3LDcgKzM4NCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBqc0xlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogCi0gICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CisgICAgaWYg
KHdhc05vdFN0cmluZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAgICAgICBpZiAocDEuaXNCaWdJ
bnQoKSB8fCBwMi5pc0JpZ0ludCgpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBiaWdJbnRDb21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6Q29tcGFy
aXNvbk1vZGU6Okxlc3NUaGFuKSk7CiAKQEAgLTQwNyw3ICs0MzQsNyBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wganNMZXNzRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MgogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2Fz
Tm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgp
IHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZTo6TGVzc1RoYW5PckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSArNDc5LDM0OCBAQCBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBqc0FkZE5vbk51bWJlcihnbG9iYWxPYmplY3Qs
IHYxLCB2Mik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorLy8gQmlnSW50MzJPcCBl
eHBlY3RzIGl0cyBvcGVyYW5kcyB1bmJveGVkLCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0IHVuYm94
ZWQgYXMgd2VsbAordGVtcGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5h
bWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBCaWdJbnQzMk9wPgorQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGFyaXRobWV0aWNCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYgaGVhcEJpZ0ludE9w
LCBEb3VibGVPcGVyYXRpb24mJiBkb3VibGVPcCwgQmlnSW50MzJPcCYmIGJpZ0ludDMyT3AsIGNv
bnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6
OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNOdW1iZXIoKSAmJiByaWdodE51bWVyaWMu
aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRvdWJsZU9wKGxlZnROdW1lcmlj
LmFzTnVtYmVyKCksIHJpZ2h0TnVtZXJpYy5hc051bWJlcigpKSk7CisKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAocmln
aHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gYmlnSW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIEpTQmlnSW50
KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJp
Z0ludCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
c3VidHJhY3Rpb24uIl9zKTsKKyAgICAgICAgaWYgKHJpZ2h0TnVtZXJpYy5pc0hlYXBCaWdJbnQo
KSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVm
dEhlYXBCaWdJbnQsIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBpZiAo
cmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0
SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFw
QmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHRI
ZWFwQmlnSW50KSk7CisgICAgICAgIH0gZWxzZSBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0lu
dCgpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3Ao
Z2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHROdW1lcmljLmFz
SGVhcEJpZ0ludCgpKSk7CiAgICAgfQorI2Vsc2UKKyAgICAodm9pZCkgYmlnSW50MzJPcDsKKyAg
ICBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChn
bG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNI
ZWFwQmlnSW50KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICByZXR1cm4ganNOdW1iZXIo
V1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVt
ZXJpYykpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9
IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1
cm4gbGVmdCAtIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0Owor
ICAgICAgICByZXN1bHQgLT0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFz
T3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7Cisj
ZWxzZQorICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQpIHJpZ2h0OworICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJl
dHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50Ojpz
dWIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c011bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkg
LT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAgIGF1
dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFs
dWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRP
dmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0ICo9IHJpZ2h0OworICAgICAg
ICBpZiAocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51
bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICAodm9pZCkgbGVmdDsKKyAgICAgICAgKHZvaWQp
IHJpZ2h0OworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisg
ICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwg
djIsIEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAv
IHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwg
aW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAg
ICAgICh2b2lkKSBsZWZ0OworICAgICAgICAodm9pZCkgcmlnaHQ7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRo
bWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmRpdmlkZSwgZG91
YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gZGl2aXNpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUmVtYWluZGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7
CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBk
b3VibGUgeworICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOworICAgIH07CisgICAg
YXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAg
ICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIG1vcmUgY2xldmVyIGhlcmUuCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpyZW1haW5kZXIsIGRvdWJsZU9wLCBiaWdJ
bnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRl
ci4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNQb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJs
ZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8g
YmlnSW50MzJPcCA9IFtdIChpbnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAg
Ly8gRXhwb25lbnRpYXRpb24gb24gaW50ZWdlcnMgaXMgYm90aCBzb21ld2hhdCBzbG93IGluIHRo
ZSBiZXN0IGNhc2UsIGFuZCB2ZXJ5IGxpa2VseSB0byBvdmVyZmxvdy4KKyAgICAgICAgLy8gU28g
ZG9uJ3QgYm90aGVyIHRyeWluZyB0byBhdm9pZCBhIGhlYXAgYWxsb2NhdGlvbiBpbiB0aGF0IGNh
c2UuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0
aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpleHBvbmVudGlh
dGUsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGV4cG9uZW50aWF0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc0luYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVy
KG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgKyAxKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50
MzIoKSkgKyAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5l
cyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisg
ICAgICAgIGlmIChuZXdWYWx1ZSA+IElOVF9NQVgpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9
CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwg
b3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51
bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIG9wZXJhbmROdW1l
cmljID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJpZ2h0TnVtZXJp
YyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworCisgICAgaWYgKG9wZXJhbmROdW1lcmlj
LmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051
bWJlcigpIC0gMSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmlj
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAg
Ly8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9t
IGJlaW5nIG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUg
PCBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBu
ZXdWYWx1ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0
YXRpY19jYXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NF
UlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVh
cEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHko
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNJbnQz
MigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIofm9wZXJhbmROdW1lcmljLmFzSW50MzIoKSk7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgfm9wZXJhbmRO
dW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmRO
dW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
QmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmln
SW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIHNoaWZ0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIGJvb2wgaXNMZWZ0KQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAobGVm
dE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCBsZWZ0SW50MzIgPSBsZWZ0TnVtZXJpYy5hc0ludDMyKCk7CisgICAgICAgIGludDMy
X3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkgJiAzMTsKKyAgICAgICAgaW50
MzJfdCByZXN1bHQgPSBpc0xlZnQgPyAobGVmdEludDMyIDw8IHJpZ2h0SW50MzIpIDogKGxlZnRJ
bnQzMiA+PiByaWdodEludDMyKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7Cisg
ICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMy
KCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJ
bnQzMiA9IGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpbnQzMl90IHJp
Z2h0SW50MzIgPSByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChy
aWdodEludDMyIDwgMCkgeworICAgICAgICAgICAgaXNMZWZ0ID0gIWlzTGVmdDsKKyAgICAgICAg
ICAgIHJpZ2h0SW50MzIgPSAtcmlnaHRJbnQzMjsKICAgICAgICAgfQogCi0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgLy8gVGhpcyBzdGQ6Om1pbiBpcyBhIGJpdCBoYWNreSwgYnV0IHJlcXVpcmVkIGJl
Y2F1c2UgaW4gQysrIGl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB0byBkbyBhIHNoaWZ0IHdoZXJl
IHRoZSByaWdodCBvcGVyYW5kIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGJpdC13aWR0aCBv
ZiB0aGUgbGVmdCBvcGVyYW5kLgorICAgICAgICBpZiAoIWlzTGVmdCkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGxlZnRJbnQzMiA+PiBzdGQ6Om1pbihy
aWdodEludDMyLCAzMSkpOworCisgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgbGVmdCBzaGlm
dCB3ZSBjYW4gb3ZlcmZsb3cuIEkgZGVhbCB3aXRoIHRoaXMgYnkgYWxsb2NhdGluZyBIZWFwQmln
SW50cy4KKyAgICAgICAgLy8gRklYTUU6IGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGRvIHNvbWV0
aGluZyBzbWFydGVyLCB0cnlpbmcgdG8gZG8gdGhlIGxlZnQgc2hpZnQgYW5kIGRldGVjdGluZyBz
b21laG93IGlmIGl0IG92ZXJmbG93ZWQuCisgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0lu
dCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0SW50MzIpOworICAgICAgICBKU0JpZ0lu
dCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0SW50MzIp
OworICAgICAgICBpZiAoaXNMZWZ0KQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJp
Z2h0SGVhcEJpZ0ludCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmln
SW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0
SGVhcEJpZ0ludCkpOwogICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNC
aWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpIHsKKyAgICAgICAgYXV0byBlcnJv
ck1lc3NhZ2UgPSBpc0xlZnQgPyAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIgOiAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIjsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cisg
ICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9
IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsK
KyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmlzQmlnSW50MzIo
KSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAgICBKU0JpZ0ludCog
bGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0lu
dCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2VuZGlm
CisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
QmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFw
QmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVk
UmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQp
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYm9vbCBpc0xlZnQg
PSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxPYmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsK
K30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJp
Yyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVy
aWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFsdWUgKiByaWdodFZhbHVlKTsKK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJvb2wgaXNMZWZ0ID0gZmFsc2U7CisgICAg
cmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOwogfQogCi1pbmxpbmUg
Ym9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3Bl
cmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBi
aXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlv
biYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gQVNT
RVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmlnSW50T3JJbnQzMihnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgYXV0
byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGxlZnROdW1lcmljLmlz
SW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4ganNOdW1i
ZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkp
KTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigp
ICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCks
IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIC8vIEZJWE1FOiBhZGQgZmFz
dCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQsIGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJp
Z0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVzZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZm
aWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBzbWFsbCBiaWctaW50IGFuZCBnb2luZyB0
aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8gQnV0IGl0IGlzIHF1aXRlIHRyaWNreSwg
bm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2UgYSBzaWduIGJpdCB3aGVyZWFzIEJpZ0lu
dDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCisjZW5kaWYKKworICAgIGlmICgh
KGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50KCkpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQg
PSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVm
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7
CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMy
KCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbHNlCisgICAgSlNCaWdJbnQq
IGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJ
bnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRp
ZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRPcChnbG9iYWxPYmplY3Qs
IGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKIH0KIAotI2RlZmluZSBTQ1JJQkJM
RV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQs
IGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0
OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50
MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8g
V2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdp
c2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VBbmQsIGlu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAn
YW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShK
U1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZU9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2Fz
dDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0
IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBv
ZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJvciIgYW5kIHJlLWJveCB0aGVtLgor
ICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLgorICAgIHJldHVy
biBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNl
T3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0
d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1pbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lk
KiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsK
LSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7IGktLTsp
IHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0
IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpT
VmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4o
U0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBs
ZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgXiBy
aWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJp
Z0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhvciIgYW5kIHJlLWJveCB0aGVtLgorICAg
IC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLCBhbmQganVzdCByZW1l
bWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhlIGVuZCB0byByZXN0b3JlIHRoZSB0YWcK
KyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0lu
dDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNp
bmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBzY3Jp
YmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6
OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKworaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1
ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09
IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwor
fQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsK
KyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0
IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NS
SUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDNkYzE3YjczMzU5Li40MDJkYWE3MTZh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaApAQCAtMzIxLDcgKzMyMSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVG
b3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgaWYg
KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7CiAgICAgCi0gICAgaWYgKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKKyAgICBpZiAoc3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA4ZDBlZGEyZWMyMC4uNjUyY2Y5NDQ0NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTIxMTgsNyArMjEx
OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbFdp
dGhTdGFja1NpemUoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgdWludDhfdCogdm1TdGFja0VuZCA9
IHZtU3RhY2tTdGFydCAtIG9yaWdpbmFsTWF4UGVyVGhyZWFkU3RhY2tVc2FnZTsKICAgICBwdHJk
aWZmX3Qgc2l6ZURpZmYgPSB2bVN0YWNrRW5kIC0gZW5kOwogICAgIFJFTEVBU0VfQVNTRVJUKHNp
emVEaWZmID49IDApOwotICAgIFJFTEVBU0VfQVNTRVJUKHNpemVEaWZmIDwgVUlOVF9NQVgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplRGlmZikgPCBVSU5U
X01BWCk7CiAKICAgICBPcHRpb25zOjptYXhQZXJUaHJlYWRTdGFja1VzYWdlKCkgPSBvcmlnaW5h
bE1heFBlclRocmVhZFN0YWNrVXNhZ2UgKyBzaXplRGlmZjsKICAgICBoZWxwZXIudXBkYXRlVk1T
dGFja0xpbWl0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBhYzVhMWQxMmNmYS4uZjJjNzllYjliNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjAtMDMtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNv
bT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1
ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFnLgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDMtMDIgIFBhdWxvIE1hdG9zICA8cG1h
dG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEpTQyAzMmJpdCBhbGlnbm1lbnQgaW5jcmVh
c2UgZ2NjIHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDFhZDYxNTA3NmM5Li4xNmM5YmQx
MjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5LDEwIEBACiAjZW5kaWYKICNl
bmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxVRTMy
XzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgVVNFX0JJR0lOVDMyIDEKKyNl
bmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBtb3JlIHNwZWNpZmljIGlmIGl0
IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8qIFVzZSBfX2J1aWx0aW5fZnJh
bWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lmIENPTVBJTEVSKEdDQ19DT01Q
QVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395605</attachid>
            <date>2020-04-06 13:03:50 -0700</date>
            <delta_ts>2020-04-06 14:12:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>400040</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTBkMmE0ZjUzZTMuLjdkNzcwZGU3OTA0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wNC0wNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhlIERGRwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2MzEuLjNiNTZjODU4YjI4
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcgKzE0LDcgQEAgYXNzZXJ0
LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKIH0KIAog
ZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZSh4IC8geSwg
eiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh4IC8g
eSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1dCBzaG91bGQgYmUgIiAr
IHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkVEQ0JBOTg3NjU0MzIx
MG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0
LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3Jh
cHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2JhNDEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVlLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVlLmpzCkBAIC0z
LDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0LCBl
eHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9IGV4cGVjdGVkOiAiICsg
ZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90Lmpz
CmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxv
Z2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKIAotZnVu
Y3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBuKSB7CiAgICAgaWYg
KGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIgKyBuKTsKICAgICB9CiB9
CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChhKSB7CiBub0lubGluZShs
b2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgIGFz
c2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgxbiks
IGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUpOwotICAgIGFzc2VydChs
b2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxMG4pLCBmYWxz
ZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNlLCAxbik7CisgICAgYXNz
ZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoLTFu
KSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwppbmRleCA4MWM1
ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1vZC1qaXQuanMKQEAgLTI1
LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAKIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9kRm9sZGluZygxMCwgMzAp
OwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAgKyAiICUgIiArIDMwICsg
IikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAsICJbTnVtYmVyXSAtKCIg
KyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0IHIgPSBiaWdJbnRNb2RG
b2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEwbiwgIi0oIiArIDEwbiAr
ICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZhbHVlKHIsIC0xMG4sICJb
QmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiArIHIpOwogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKaW5kZXggNGU1OGNhNjA3
NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0
LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlm
dC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcg
Sm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5l
ZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vIE1vZGlm
aWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsK
LSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOwor
ZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZh
ciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1
bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAot
YXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsK
LSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVz
c2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEw
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgw
YjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgw
biwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRl
c3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgy
NDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgy
NDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAg
dGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4s
IDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7Cisg
ICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0x
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgy
NDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4s
IC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVW
YWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
MGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09
PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4s
ICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFu
ID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEy
OG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0x
MjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIw
eDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
LTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAw
biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4g
PT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNz
ZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAi
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJu
LAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9
PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4g
Pj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4s
ICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwg
LTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+
PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+
IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4g
M24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAt
MTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4
biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgy
NDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgy
NDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICIt
MHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0
Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAt
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAw
MDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAw
MDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwK
LSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAx
MjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEy
Y24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5
biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
dHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1w
cm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRmZDYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMKQEAgLTEsOCArMSw4IEBA
CiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9
ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBhc3NlcnQoaW5wdXQsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5jdGlvbiBmb28obykgewpA
QCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9JbmxpbmUoZm9vKTsKIAogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGZvbygzbikgPT09ICIz
Iik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBh
cmUtbnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4uODI1ZTg1ZDZiNjEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIuanMKQEAgLTU5LDE3ICs1
OSwxNyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsKICAgICAgICAgICAgIG5v
SW5saW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KTsKIAog
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgICAgICAgICAg
ICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9
KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGlj
JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQog
ICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpYyR7dGVzdENh
c2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1v
bm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT0gJHtsbGlu
dFJlc3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFu
dCR7dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rl
c3RDYXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9y
cGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0pICE9ICR7bGxpbnRSZXN1
bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNSaWdodENvbnN0YW50JHt0
ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2Fz
ZUluZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RQb2x5bW9ycGhpYygk
e2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9KSI7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0sICR7b3Bl
cmF0b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50UmVzdWx0fSkiOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICArK3Rlc3RDYXNlSW5kZXg7
CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBl
cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMKaW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTgzLDcgKzgz
LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3Jp
Z2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAg
IiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVxdWFs
T3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVmdENhc2VJ
bmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkzLDcgKzk0LDggQEAgZnVu
Y3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJp
Z2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUlu
ZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTog
IiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0
bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4
OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHku
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAg
LTMwLDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZh
ciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9
IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09
IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4
cGVjdGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlz
c2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVh
N2Q3M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3Npbmct
ZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEs
OCBAQAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdh
YScpOworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdh
YScpOwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJv
cGUKKyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI1N2EwMjc2YjNiLi40ZjhlYjU3
ZTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc3LDYgKzk3Nyw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmgKICAgICBydW50aW1lL1Njb3BlT2Zmc2V0LmgKICAgICBy
dW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKKyAgICBydW50aW1lL1NjcmliYmxlLmgKICAg
ICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggMmEzZmMyMzI1MmUuLjFmOGI2NTRmOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzODcgQEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlz
c2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRp
b24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0
byBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFs
bCAoMzIgYml0IG9yIGxlc3MpLgorICAgICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGlu
dG8gSlNWYWx1ZSBvbiA2NC1iaXQgcGxhdGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBv
ZiBhIEpTQmlnSW50LgorICAgICAgICBUaGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhY
WDpYWFhYOjAwMTIKKyAgICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3
aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0
byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25m
dXNlZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQg
dG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNl
IGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNv
bmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisK
KyAgICAgICAgVGhpcyBlbnRpcmUgY2hhbmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRv
IG1ha2UgaXQgZWFzaWVyIHRvIGRpc2FibGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4K
KyAgICAgICAgSXQgc2hvdWxkIGFsc28gbWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYg
YSBnaXZlbiBidWcgY29tZXMgZnJvbSBpdCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAg
ICAgIE5vdGUgdGhhdCBpbiB0aGlzIHBhdGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMg
d2hlbiBwYXJzaW5nIEJpZ0ludCBjb25zdGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4g
QWRkIG9yIEJpdE9yKSBwcm9kdWNlIGEgQmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5k
cyBhcmUgQmlnSW50MzIsCisgICAgICAgIGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIg
ZnJvbSBmb3IgZXhhbXBsZSB0aGUgc3Vic3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBo
ZWFwLWFsbG9jYXRlZCBKU0JpZ0ludHMsIGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJp
dHMuCisgICAgICAgIEFzIGEgcmVzdWx0LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJl
IGhlYXAtYWxsb2NhdGVkIG9yIGlubGluZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbmNsdWRlcyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBw
YXRocywgd2hpY2ggYXJlIG5vdyBncm91cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAg
ICAgICBCZWNhdXNlIHRoaXMgaW5jcmVhc2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWdu
aWZpY2FudGx5LCBJIHNwbGl0IHRoZSBwYXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9u
bHkgdXNlZCBieSB0aGUgR0MgaW50byBTY3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21w
aWxlIHRpbWVzLgorCisgICAgICAgIEluIHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVz
ZUtpbmRzIGZvciBCaWdJbnRzOiBIZWFwQmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55Qmln
SW50VXNlLgorICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIG5vdyB0aGF0IHdl
IGFyZSByZWNlaXZpbmcgQmlnSW50cywgYnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBv
ZiBoZWFwLWFsbG9jYXRlZCBhbmQgc21hbGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAg
IFVuZm9ydHVuYXRlbHksIGEgbmFpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWdu
aWZpY2FudGx5IHJlZ3Jlc3NlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMg
dmFyaWFudHMpLCBhcyBpdCBpcyBubyBsb25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24t
Y2VsbCBjYW5ub3QgYmUgZXF1YWwuCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29k
ZSB3YXMganVtcGluZyB0byBhIHNsb3cgcGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVh
c3Qgb25lIG9wZXJhbmQgaXMgYSBkb3VibGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFy
ZSBjZWxscworICAgICAgICBOb3csIGl0IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBw
YXRoIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBw
ZXJmb3JtYW5jZSBjb3N0LCBJIHNpZ25pZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20K
KyAgICAgICAgICBpZiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAg
ICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQg
aXMgSW50MzIpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAg
ICAgZ290byBzbG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJ
bnQzMikgeworICAgICAgICAgICAgaWYgKHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAg
Z290byBzbG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdo
dAorICAgICAgICBUbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJs
ZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAg
ICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aAorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMg
dG8gYmUgZmFzdGVyIHRoYW4ganVzdCByZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBp
cyBDZWxsKSBieSBhbiB8fCwgYmVjYXVzZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChs
ZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVj
ZSB0aGUgcHJlc3N1cmUgb24gdGhlIGJyYW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpl
dFN0cmVhbTIgdGVzdHMgYXBwZWFyIHRvIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdo
bHkgbmV1dHJhbCB3aGlsZSBpdCB3YXMgYSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0
aGlzIHRyaWNrLCBidXQgdGhlIG51bWJlcnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRv
IGRvIG1vcmUgbWVhc3VyZW1lbnRzIGJlZm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgSSBkb24ndCB5ZXQgaGF2ZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9u
IGEgQmlnSW50IGJlbmNobWFyaywgSSB3aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWlu
ZyB0byBsYW5kIGl0LCBidXQgSSdkIGxpa2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3Jp
dGVyOjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVt
aXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29u
c3QpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9B
cml0aFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZl
Tm9uSW50MzIpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJ
bnQpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50
KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlND
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3Bl
Y3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVj
dWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6
CisgICAgICAgIChKU0M6OmxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3Vs
YXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAo
SlNDOjppc0JpZ0ludDMyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cFRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051
bWVyaWMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25O
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RF
cUFuZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBC
aWdJbnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1l
cmljKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJ
bnRFcXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kOjplZGdlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQ6Om5vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6OnVzZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJ
bnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50
MzJDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlQmlnSW50MzJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6
CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5
cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29t
bW9uVmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9u
VmFsdWVzLmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNo
aWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRo
Qml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUFyaXRoQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUJpdFVSU2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpsb3dIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6bG93QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjppc0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNOb3RCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OnVuYm94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpi
b3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90
QW55QmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3Vs
YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmln
SW50VW5rbm93bldoZXRoZXJDZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6aXNOb3RIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6aXNIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAg
ICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29t
cGlsZVN0dWIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFy
YXJncyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2Vt
Ymx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJL
bm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZO
b3RCaWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZkhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJy
YW5jaElmTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5i
b3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX25lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
SnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2JpZ19pbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAg
ICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6Y2FsbEJpZ0ludENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9CaWdJbnRPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OnRvVGhpc0JpZ0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50
UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJp
dGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5j
cHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5n
VG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmRlYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbHNUb051bWJlcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNU
b0ludDMyKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFz
SGVhcEJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0
b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNz
dW1pbmdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFj
a3RyYWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hl
YXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNQcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVy
aWMgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFs
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Q
cmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRv
Qm9vbGVhbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0
VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6OmNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50
Q29tcGFyZSk6CisgICAgICAgIChKU0M6OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0Vx
KToKKyAgICAgICAgKEpTQzo6YXJpdGhtZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNT
dWIpOgorICAgICAgICAoSlNDOjpqc011bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAg
ICAgKEpTQzo6anNSZW1haW5kZXIpOgorICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChK
U0M6OmpzSW5jKToKKyAgICAgICAgKEpTQzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdp
c2VOb3QpOgorICAgICAgICAoSlNDOjpzaGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToK
KyAgICAgICAgKEpTQzo6anNSU2hpZnQpOgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3Ap
OgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VP
cik6CisgICAgICAgIChKU0M6OmpzQml0d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3Jp
YmJsZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRP
YmplY3QuaC4KKyAgICAgICAgKEpTQzo6c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlND
Ojppc1NjcmliYmxlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JM
b29rdXBQcmltaXRpdmVJbXBsKToKKwogMjAyMC0wNC0wNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0
aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBj
YWNoZWQgaW4gdGhlIERGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNjUzOTVh
ZDBmZi4uMjA4NjBhOGFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYs
NiArODY2LDcgQEAKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25T
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFE
ODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQky
QUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3Jp
Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVC
QTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENF
IC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBC
REJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWlu
YXRlRGVhZENvZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1v
blNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxp
bmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MzNCMkE1NDcyMjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRGQjFCREFDREFDMDA4MEZG
NzQgLyogQjNWYWx1ZUlubGluZXMuaCAqLzsgfTsKQEAgLTM1MTEsNiArMzUxMiw3IEBACiAJCTJB
RjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21T
aWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21T
aWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhB
MjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcg
LyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBi
My9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFz
c29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3Nv
Y2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0
MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0g
YjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NTU2LDYgKzc1NTgsNyBAQAogCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29w
ZWRBcmd1bWVudHNUYWJsZS5oICovLAogCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZU9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
T2Zmc2V0LmggKi8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmgg
Ki8sCiAJCQkJMTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3Bw
ICovLAogCQkJCTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmgg
Ki8sCiAJCQkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywK
QEAgLTg5MjEsNiArODkyNCw3IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMg
LyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIx
REI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9y
Rm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAppbmRleCBjMTAwMjQwNGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNDY5
OCw3ICs0Njk4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAg
ICAvLwotICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFw
cHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCisgICAgICAgIC8vIEFuIGlt
bWVkaWF0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3Ag
aGFzIGJlZW4gZW1pdHRlZC4KICAgICAgICAgLy8gVGhlIHdyaXRlcyBhcmUgdW5jaGVja2VkIHNp
bmNlIHRoZSBvcGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4K
IAogICAgICAgICB2b2lkIGltbWVkaWF0ZTgoaW50IGltbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggZmVhNjY3NDViNjIuLmYyYzA1
ODRkNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9m
aWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVn
cyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3Mg
cmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAo
IXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAh
c2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYm
ICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgp
ICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTggQEAgdm9pZCBBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQs
IEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RCaWdJbnQzMiA9IGppdC5icmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0lu
dDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIu
bGluaygmaml0KTsKKyNlbHNlCisgICAgKHZvaWQpIHRlbXBHUFI7CisjZW5kaWYKKwogICAgIG5v
bk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5v
bk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkp
OwotICAgIGVtaXRTZXRCaWdJbnQoaml0KTsKKyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBC
aWdJbnQoaml0KTsKICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVy
aWMubGluaygmaml0KTsKQEAgLTg4LDE5ICs5NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6Qmln
SW50MzI7CisgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJ
bnQoKSBjb25zdAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpC
aWdJbnQ7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJ
bnQ7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0
CiB7Ci0gICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0
aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVt
aXRTZXRIZWFwQmlnSW50KCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2Jz
ZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBs
YXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlw
ZT46OmVtaXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAo
c2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGpp
dCwgT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQml0ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1p
dFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBj
b25zdAogewpAQCAtMTQ5LDggKzE3OCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0
LnByaW50KHNlcGFyYXRvciwgIkludDUyT3ZlcmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRv
ciA9ICJ8IjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50
KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0
LnByaW50KHNlcGFyYXRvciwgIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9
ICJ8IjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAg
ICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdj
MWZlNzEzYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAg
ICAgICA9IDEgPDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAg
ICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9
IDEgPDwgNSwKKyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmln
SW50MzIgICAgICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgbnVtQml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBu
dW1CaXRzTmVlZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAg
ICBleHBsaWNpdCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0
cyhiaXRzKQogICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVy
biBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmlj
IHwgQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9i
aXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhl
YXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJl
dHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5l
Z1plcm9Eb3VibGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1
cm4gbV9iaXRzICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVy
aWMoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAg
ICBib29sIGRpZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0lu
dDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmln
SW50MzI7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9i
aXRzICYgSW50MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSB7IHJldHVybiBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2
IEBAIHB1YmxpYzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyBy
ZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3Vs
dHMoKS5kaWRPYnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9
CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVC
aWdJbnQzMigpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJ
bnQzMigpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBi
b29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1
bHRzKCkuZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZl
ZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9E
b3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChP
YnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5v
bk51bWVyaWMoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAg
dm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRS
ZXN1bHRzOjpIZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsg
c2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZl
ZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cp
OyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZl
ZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8
IE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVn
WmVyb0RvdWJsZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQo
KSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAg
ICAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2Jz
ZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAg
IG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVt
ZXJpYzsKQEAgLTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJs
ZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25O
dW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVz
dWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBK
U1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVn
aXN0ZXJzKTsKIAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNl
dERvdWJsZSgpIGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKIAotICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQg
ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3Vs
ZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVt
aXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBl
bWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0Owog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC0xNzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0
aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CiBjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1Ymxp
YyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVt
Qml0c05lZWRlZDsKIAotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBP
YnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZp
ZWxkLiIpOworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4
LCAiU2hvdWxkIGZpdCBpbiB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2Jz
ZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigw
YjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xh
c3MgQmluYXJ5QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFBy
b2ZpbGVCYXNlPiB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxo
c09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0g
c2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50
MzJfdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRoZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3Rh
dGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNf
YXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywg
IlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzcGVjaWFsRmFzdFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVk
VHlwZUJpdE1hc2spKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNp
YWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLjQ4
Yjc4NzBlY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTMyNyw2ICszMjcsNyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAg
OmlzX3VuZGVmaW5lZF9vcl9udWxsLAogICAgICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlz
X251bWJlciwKKyAgICAgICAgOmlzX2JpZ19pbnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAg
ICAgIDppc19vYmplY3Rfb3JfbnVsbCwKICAgICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE3NCw2ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwo
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJ
c1VuZGVmaW5lZE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5k
KQogICAgIFVTRVMoT3BJc051bWJlciwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9w
ZXJhbmQpCiAgICAgVVNFUyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVj
dE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBA
IC00MjMsOSArNDI0LDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1
bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElk
ZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAg
IERFRlMoT3BJc1VuZGVmaW5lZCwgZHN0KQotICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwg
ZHN0KQorICAgIERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jv
b2xlYW4sIGRzdCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJ
bnQsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RP
ck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTFhZDM3NjY5YWYuLjY2
MDNkZWE2NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCmluZGV4IDMyZjU4OGRiZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBA
QCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUs
CiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAg
ICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0
YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8
IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0
YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5h
dGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAg
ICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpl
bWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0
Cit2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2Ug
Tm9uZToKQEAgLTY3LDEyICs2NywxMiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUu
dW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZl
VGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVS
ZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlB
cml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVn
aXN0ZXJzKTsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0
KGppdCwgcmVncywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUluZGV4LmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJh
bmRzLmgiCisjaW5jbHVkZSAiVGFnUmVnaXN0ZXJzTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtODMsNyArODQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRS
ZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhl
IHRlbXBvcmFyeSByZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9y
IHRlc3RpbmcgQmlnSW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVU
YWdSZWdpc3RlcnMpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAppbmRleCAxMDUzYmE1MmI1NC4uNzcxYzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSAr
MjM5LDYgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNCaWdJbnQpCi0gICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBpZiAodmFsdWUgPT0gU3BlY0ludDMyT25seSkKQEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBk
dW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAg
IAorCisgICAgaWYgKCh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IFNwZWNCaWdJbnQpCisgICAgICAg
IHN0ck91dC5wcmludCgiQmlnSW50Iik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2Ugewor
ICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50MzIpCisgICAgICAgICAgICBzdHJPdXQucHJp
bnQoIkJpZ0ludDMyIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7
CisKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0hlYXBCaWdJbnQpCisgICAgICAgICAgICBzdHJP
dXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1
cmVOYU4pCiAgICAgICAgIHN0ck91dC5wcmludCgiRG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBA
IC00MzEsNyArNDQyLDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZv
KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsK
ICAgICAKICAgICBpZiAoY2xhc3NJbmZvID09IEpTQmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJl
dHVybiBTcGVjQmlnSW50OworICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBp
ZiAoY2xhc3NJbmZvID09IEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNw
ZWNGaW5hbE9iamVjdDsKQEAgLTQ5OSw4ICs1MTAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxh
dGlvbkZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBT
cGVjU3RyaW5nOwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJv
bFR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpID09IEJpZ0ludFR5cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50
OworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBl
KQorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gRGVyaXZlZEFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNE
ZXJpdmVkQXJyYXk7CiAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpKTsKQEAgLTUzNiw2ICs1NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVj
dWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNB
bnlJbnRBc0RvdWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9
CisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQz
MjsKICAgICBpZiAodmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZy
b21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01
OTUsOCArNjA4LDggQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpT
VHlwZShKU1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBT
eW1ib2xUeXBlOgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5
cGU6Ci0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6
CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIEFycmF5VHlwZToKICAg
ICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02
MzIsNiArNjQ1LDEwIEBAIFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlF
cXVpdmFsZW50U3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAm
IFNwZWNTdHJpbmcpCiAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBl
ICYgU3BlY0JpZ0ludCkKKyAgICAgICAgdHlwZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJu
IHR5cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKaW5kZXggNWRiMThjNjQ4MmQuLmRmMGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwx
NCBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAv
LyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBi
b29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0g
MXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAgICAgICAgICAgICAgICAg
ICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9j
YXRlZCBvbiB0aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmln
SW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgc21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBTcGVjQmlnSW50MzIgfCBTcGVjSGVhcEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1
bGwgPDwgNDM7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNj
IHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5
cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMg
fCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwg
U3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNX
ZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVj
RGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBC
aXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9u
Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwg
U3BlY0NlbGxPdGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4K
LXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7
IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkg
YW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3Bl
Y1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3Bl
Y0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJ
bXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRv
cCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3Bl
Y0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBh
IGJ5dGVjb2RlIGxvY2FsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVs
bFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1
bGxOdW1iZXI7IC8vIEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBw
bHVzIGV4b3RpYyBlbmNvZGluZ3Mgb2YgbnVtYmVycy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBp
bmxpbmUgYm9vbCBpc1N5bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMy
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09
IFNwZWNCaWdJbnQzMjsKK30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmln
SW50OworfQorCiBpbmxpbmUgYm9vbCBpc0JpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAh
IXZhbHVlICYmICh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9v
bCBpc0FycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGEwMWQ0N2Q3ZGMwLi5jY2Q2ZDc5NTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE2
NzUsNyArMTY3NSwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcElt
cGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQi
KSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxX
aXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEJpZ0ludFR5cGUpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwg
b3AubV92YWx1ZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVt
aXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBIZWFwQmlnSW50VHlwZSk7CisjZW5kaWYKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2
YWx1ZSA9PSAib2JqZWN0IikgewpAQCAtMjg4Myw3ICsyODg3LDcgQEAgSlNWYWx1ZSBCeXRlY29k
ZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
ciwgdWludDgKICAgICByZXR1cm4gbV9iaWdJbnRNYXAuZW5zdXJlKEJpZ0ludE1hcEVudHJ5KGlk
ZW50aWZpZXIuaW1wbCgpLCByYWRpeCwgc2lnbiksIFsmXSB7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKCkpOwogICAgICAgICBhdXRvIHBhcnNlSW50U2lnbiA9
IHNpZ24gPyBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpTaWduZWQgOiBKU0JpZ0ludDo6UGFyc2VJ
bnRTaWduOjpVbnNpZ25lZDsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0gSlNCaWdJ
bnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBK
U0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsK
KyAgICAgICAgSlNWYWx1ZSBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRy
LCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VN
b2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CiAgICAgICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODUuLjBhMDAzYjhmNmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CkBAIC0xMDg5LDcgKzEwODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1c2luZyBO
dW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIElkZW50
aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJ
ZGVudGlmaWVyUmVwSGFzaD47Ci0gICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBI
YXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCo+OworICAgICAgICB1c2luZyBJZGVudGlm
aWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNWYWx1ZT47CiAgICAgICAg
IHVzaW5nIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNldCA9IEhhc2hTZXQ8UmVmPFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcj4+OwogICAgICAgICB1c2luZyBUZW1wbGF0ZURlc2NyaXB0b3JNYXAg
PSBIYXNoTWFwPHVpbnQ2NF90LCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciosIFdURjo6SW50
SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDc3MWQ5MmU4MjM5Li4wMTI2MTVjYTYyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJOdW1i
ZXJDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlQ2FjaGUuaCIKQEAgLTIxNSw3ICsyMTQsNyBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9U
aGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJgog
ICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5v
ZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
IHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmlu
Z1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJ
bnRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBl
KCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlw
ZSgpID09IEhlYXBCaWdJbnRUeXBlKTsKICAgICAgICAgICAgIGlmICghaXNTdHJpY3RNb2RlKQog
ICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBl
aXRoZXI6CkBAIC01MDMsNyArNTAyLDEyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBT
cGVjQmlnSW50MzIpOworICAgICAgICAgICAgQVNTRVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAg
IH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAg
ICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTUzMyw3ICs1MzcsMTMgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50QmluYXJ5Qml0d2lz
ZU9wKG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBi
aW5hcnlVc2VLaW5kIG1lYW5zIHRoYXQgd2UgY2Fubm90IHNwZWNpYWxpemUgdG8gKGZvciBleGFt
cGxlKSBhIEhlYXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJh
bmQuCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsK
KyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisgICAgICAg
ICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OwpAQCAtNzIzLDExICs3MzMsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNh
c2UgVmFsdWVTdWI6CiAgICAgY2FzZSBWYWx1ZUFkZDogewotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAgICAgICBpZiAobm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAg
ICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAg
ICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5lZWQgU3BlY1N0cmluZyBoZXJlIGZvciBW
YWx1ZVN1Yj8gSXQgc2VlbXMgbGlrZSB3ZSBvbmx5IG5lZWQgaXQgZm9yIFZhbHVlQWRkLgogICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY1N0cmluZyB8IFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg3LDYg
KzkwMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIFZhbHVlTmVnYXRlOiB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBtdWNoIHNt
YXJ0ZXIgdGhpbmdzIGZvciBCaWdJbnRzLCBzZWUgVmFsdWVBZGQvVmFsdWVTdWIuCiAgICAgICAg
IGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgYnJlYWs7CkBAIC05NTksNyArOTczLDEx
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgog
ICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIHR5cGVPZkRvdWJsZUluY09y
RGVjKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6Cisg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmln
SW50MzJVc2U6CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtOTc1LDcgKzk5Myw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEpTVmFsdWUgY2hpbGRZID0gZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkWCAmJiBjaGlsZFkg
JiYgY2hpbGRYLmlzTnVtYmVyKCkgJiYgY2hpbGRZLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAg
IC8vIFdlIG5lZWQgdG8gY2FsbCBgZGlkRm9sZENsb2JiZXJXb3JsZGAgaGVyZSBiZWNhdXNlIHRo
aXMgcGF0aCBpcyBvbmx5IHBvc3NpYmxlCi0gICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtp
bmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQmlnSW50VXNlLCBjaGlsZHJlbiB3aWxs
IGJlCisgICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4g
dGhlIGNhc2Ugb2YgQW55QmlnSW50VXNlIG9yIGZyaWVuZHMsIGNoaWxkcmVuIHdpbGwgYmUKICAg
ICAgICAgICAgIC8vIGNsZWFyZWQgYnkgYEFic3RyYWN0SW50ZXJwcmV0ZXI6OmV4ZWN1dGVFZmZl
Y3RzYC4KICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgIC8v
IE91ciBib3hpbmcgc2NoZW1lIGhlcmUgbWF0Y2hlcyB3aGF0IHdlIGRvIGluIG9wZXJhdGlvblZh
bHVlUG93LgpAQCAtOTgzLDcgKzEwMDEsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hl
YXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55
QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAg
ICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtOTkzLDcgKzEwMTMsMTAgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAKICAgICBjYXNlIFZhbHVlTXVsOiB7Ci0gICAgICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhN
RTogd2h5IGlzIHRoaXMgY29kZSBub3Qgc2hhcmVkIHdpdGggVmFsdWVTdWI/CisgICAgICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNl
dFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAg
LTEwNTcsNyArMTA4MCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmICho
YW5kbGVDb25zdGFudERpdk9wKG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVG
b3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEzODEs
NiArMTQwNiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBJc1VuZGVmaW5l
ZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNh
c2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVj
dDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtMTQwOSw2ICsxNDM1LDkgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNOdW1iZXIo
KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc0JpZ0ludDoK
KyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUo
KS5pc0JpZ0ludCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoY2hpbGQudmFsdWUoKSkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE1NjMsNyArMTU5MiwyMiBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1f
dHlwZSAmIH5TcGVjQmlnSW50KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVjQmlnSW50KSkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50
V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUU6IGlmIHRoZSBTcGVjdWxhdGVkVHlwZSBpbmZvcm1zIHVzIHRo
YXQgd2Ugd29uJ3QgaGF2ZSBhIEJpZ0ludDMyIChvciB0aGF0IHdlIHdvbid0IGhhdmUgYSBIZWFw
QmlnSW50KSwgdGhlbiB3ZSBjYW4gdHJhbnNmb3JtIHRoaXMgbm9kZSBpbnRvIGEgSXNDZWxsV2l0
aFR5cGUoSGVhcEJpZ0ludFR5cGUpIChvciBhIGh5cG90aGV0aWNhbCBJc0JpZ0ludDMyIG5vZGUp
LgogCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAg
ICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwpAQCAtMTkzNywx
MyArMTk4MSwxNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBu
b3QgbGF0ZXIgKGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxhY2VtZW50IGJ5IGZhbHNlKS4KKyAg
ICAgICAgLy8gU2FhbSBzZWVtcyB0byBhZ3JlZSB0aGF0IHRoZSB0d28gY2hlY2tzIGNvdWxkIGJl
IHN3aXRjaGVkLCBJJ2xsIHRyeSB0aGF0IGluIGEgc2VwYXJhdGUgcGF0Y2gKICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlND
LgotICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVl
IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgp
ICYmICF2YWx1ZS5pc1N0cmluZygpOworICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmln
SW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZh
bHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGlz
Tm9uU3RyaW5nQ2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KHJp
Z2h0KSkgeworICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQo
bGVmdCkgfHwgaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAg
ICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAg
ICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk1OCwxOSArMjAwNCwyNCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkgPT0gbm9kZS0+Y2hpbGQyKCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQm9vbGVhblVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSW50MzJVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDUyUmVwVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmlu
Z0lkZW50VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1i
b2xVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVz
ZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50
eXBlZFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgTWlzY1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
U3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKLSAg
ICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNl
KSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBT
dHJpbmdVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IGNhc2Ugbm90
IGludm9sdmluZyBOYU4gd2hlcmUgeCA9PT0geCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4g
dHJ1ZT8KKyAgICAgICAgICAgIC8vIElmIG5vdCBJIG1pZ2h0IHNsaWdodGx5IHNpbXBsaWZ5IHRo
YXQgY2hlY2suCisgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5V
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKQor
ICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKKyAgICAg
ICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQorICAgICAgICAg
ICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCisgICAgICAgICAgICAg
ICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpCisgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBO
b3RTdHJpbmdWYXJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAg
ICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAg
ICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAg
ICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDlkZDRiOWFhNDhjLi4xZDAwNzQxNTUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTU2NjUsNiArNTY2NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfbnVtYmVyKTsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfaXNfYmlnX2ludDogeworICAgICAgICAgICAgQVNT
RVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChJc0JpZ0ludCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2lzX2JpZ19pbnQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhf
dHlwZTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm1fb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmMuLjAzZTg5YjI2ZTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNDksNiArMTQ5LDcg
QEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZF9vcl9u
dWxsOgogICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjoKICAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAg
ICBjYXNlIG9wX2lzX2JpZ19pbnQ6CiAgICAgY2FzZSBvcF9pc19vYmplY3Q6CiAgICAgY2FzZSBv
cF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA2MmJiMTI1OGQ1MC4u
ZDI2ODFkYmIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTc1LDYgKzE3NSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBJ
c1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVy
OgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2Fz
ZSBJc09iamVjdDoKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CkBAIC0yNjAsNyArMjYxLDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBW
YWx1ZUJpdE5vdDoKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJ
bnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkZWYo
UHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjgw
LDcgKzY4MSw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAg
ICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKICAg
ICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6CkBAIC03MDIsNyArNzA1LDggQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICBjYXNlIFZhbHVlUG93OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6CiAg
ICAgY2FzZSBWYWx1ZUJpdFJTaGlmdDoKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnRVc2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUtYXJn
dW1lbnQgaXNCaW5hcnlVc2VLaW5kIHdvdWxkIHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXppbmcg
KGZvciBleGFtcGxlKSBmb3IgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQz
MiByaWdodC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4
IDkxMWRkOWIxZTc3Li5hYjIyNTQxNzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMg
Y29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KICAgICAgICAgICAgICAg
ICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5p
c0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFs
dWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICAgICAg
ICAgIH07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxs
Q29uc3RhbnQoY2hpbGQxQ29uc3RhbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggOTJjMDM4ZjA1OTAuLjgxMDJiYTA0MzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiREZH
Q2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkBAIC0xNDcsNiArMTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46
CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVy
SXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDJjMzc2
ODAzYzRjLi41ZmRiMThmNDRhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAyLDE0ICsyMDIsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnNldFJlc3VsdChOb2RlUmVzdWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0
aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxl
IG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUg
aW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNh
c2UuCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBW
YWx1ZVN1Yik7CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQs
IG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuaGVhcEJpZ0ludENvbnN0
YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxk
MihFZGdlKG5vZGVDb25zdGFudE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRz
IGFyZSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2Rl
Q29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBT
cGVjQmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJl
ZXplKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
ICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5v
dy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCBy
ZXByZXNlbnRhdGlvbiBmb3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwg
KHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRv
IGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdodCBv
cHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIGlu
IHRoYXQgY2FzZS4KICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1
ZUFkZCA6IFZhbHVlU3ViKTsKLSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0NvbnN0
YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0
YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25z
dGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCAxKSkpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRD
aGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUgY3Vy
cmVudGx5IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJl
CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhl
cmUKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNSwxMiAr
MjU1LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGls
ZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAg
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgp
LCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxk
Mik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0UoQklH
SU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxk
MS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxk
Mik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PFVudHlwZWRVc2U+KGNoaWxkMik7CkBAIC0yNjgsOCArMjk2LDIxIEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxMyw3ICszNTQsMTcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkp
IHsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRF
ZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5k
RWRnZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3Bl
cmFuZEVkZ2UpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5v
ZGUoKS0+c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8VW50eXBlZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBA
IC00NTgsOSArNTA5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxk
MS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxk
Mik7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGls
ZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KGNoaWxkMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgp
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxk
Mi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxk
MSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CisjZW5k
aWYKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVk
VXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQy
KTsKQEAgLTU0Niw4ICs2MDUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQz
MihsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTU4OCwxMiArNjYwLDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAg
ICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRD
aGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihs
ZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmlnaHRD
aGlsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5U
MzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGls
ZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
PihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obGVm
dENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRDaGls
ZCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8VW50eXBlZFVzZT4obGVmdENoaWxkKTsKQEAgLTY1NywxMiArNzM3LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVu
dHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1NDQsNiArMjYzMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFu
OgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAg
ICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAg
IGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMjg4NSw3ICsyOTc0LDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkp
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTU4LDcgKzMwNTYsMTYgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBp
cyBCaWdJbnQsIHdlIGF0dGVtcHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNp
bmNlIGl0IGNhbiBvbmx5IHJldHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zNDUyLDEzICszNTU5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNl
OgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToK
LSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAg
ICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkK
ICAgICAgICAgICAgICAgICB8fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlv
bigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxl
LT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBB
bnlCaWdJbnRVc2UgPworICAgICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBh
bGwgb2YgdGhlIFVzZUtpbmRzIHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NzIs
MTIgKzQwODEsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
KyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
eworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
QmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewot
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxB
bnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5k
RGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lk
ZW50KCkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDFjY2E4YjJh
YzQxLi43NzBkOWQ1N2VmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBhYWMzYTYzN2EwOS4uNTYxNGQ1ZDYzNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjU3NSw2ICsyNTc1LDE4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24oKSk7CiAgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlQmlnSW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZUJpZ0ludCgpCiAgICAgewpAQCAtMjc3NSw3ICsyNzg3LDE5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAm
JiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgp
ICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRp
YyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAm
JiBvcDItPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzgzNTI4ZWE1NDUuLjBkZmEwMmRkZDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTYsNiArMzk2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzVW5kZWZpbmVkT3JOdWxs
LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKICAgICBtYWNybyhJc051bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICAv
KiBJc0JpZ0ludCBpcyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIuIE90aGVyd2lzZSB3ZSBl
bWl0IElzQ2VsbFdpdGhUeXBlICovXAorICAgIG1hY3JvKElzQmlnSW50LCBOb2RlUmVzdWx0Qm9v
bGVhbikgXAogICAgIG1hY3JvKE51bWJlcklzSW50ZWdlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwK
ICAgICBtYWNybyhJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09i
amVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCmluZGV4IDIzZWJlMGQ3YmM3Li5iMjIxMTliOWQ5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxMyBAQCB2
b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0
IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3Vy
ZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdSZWdp
c3RlciwKICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0
LgogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4
aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1
ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAvLyBX
ZSBhbHNvIHVzZSB0aGUgbm90Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdpc3Rl
ciwgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmluZCBh
IGxlc3MgZ3Jvc3Mgd2F5IG9mIGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcgdGhl
c2Ugb3BlcmF0aW9ucyB1bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0ZXJz
IGFyb3VuZD8KKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9q
c1ZhbHVlU291cmNlLmdwcigpKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RD
ZWxsTWFzayksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRy
ZXNzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVz
ZSBpdC4KQEAgLTM5OCw3ICs0MDEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxs
SGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1f
anNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJv
ZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9m
aWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7
CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00
MDcsMTAgKzQxMCwxMCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYg
aml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAg
aml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBz
Y3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFn
LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAg
ICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1Zh
bHVlU291cmNlLnJlZ3MoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFs
dWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwOGNlNTQzNWQzZi4uNTM4NzhiZTA1MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDcg
Kzg3LDYgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMiw1NiAr
MjIxLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5saW5l
KGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMg
QUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRp
b24mJiBudW1iZXJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3Ao
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihu
dW1iZXJPcChXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91YmxlPihy
aWdodE51bWVyaWMpKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24s
IHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgYml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQzMk9w
KFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHRO
dW1lcmljKSkpKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFy
c2VJbnRSZXN1bHQoZG91YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0
PGludD4oaW5wdXQpOwpAQCAtNDcxLDcxICs0MjAsMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOwot
ICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2
YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0luYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBh
dXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQot
ICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0RlYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRO
b3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBA
IC01NDQsMTUgKzQ1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBi
aWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVm
dCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAg
IGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMy
X3QgewotICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4g
Yml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MikKQEAgLTU2MSwxNSArNDY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
YXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9Owot
Ci0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
aW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJl
dHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCkBAIC01NzgsMTUgKzQ3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAg
fTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQp
IC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0KLSAg
ICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpCkBAIC01OTUsMTUgKzQ4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMy
X3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAw
eDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3Mp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02MTIsMTUgKzQ5Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNC
aWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAo
aW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJu
IGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVk
IHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpA
QCAtNjU4LDE1ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBs
ZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBh
dXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7
Ci0gICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5h
cnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwg
bnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNp
b24gb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NzUsMTUgKzUzOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBb
XSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9u
ZW50aWF0aW9uIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNQ
b3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cml0aEFicyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxKQpAQCAtMTQ4MCw3ICsxMzM2LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3QsIGlu
cHV0KSk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xNDkyLDcgKzEzNDgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRO
b3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMTUwMyw3ICsxMzU5LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTE1MTUsNyArMTM3MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
dWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0
dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9w
ZXJhbmQpOwogfQogICAgIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MjcsNyArMTM4Myw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBs
ZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MzksNyArMTM5NSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xv
YmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NTEs
NyArMTQwNyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50
OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE1NjMsNyArMTQxOSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlm
dEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc1LDcgKzE0
MzEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6bGVm
dFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNTg3LDcgKzE0NDMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRk
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVy
biBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7
CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTk5LDcgKzE0NTUsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MTEs
NyArMTQ2Nyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmlnSW50
OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE2MjksNyArMTQ4NSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGds
b2JhbE9iamVjdCwgb3AxLCBvcDIpOworICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZv
ckNlbGxzKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgYXJnMSwgRW5jb2RlZEpTVmFsdWUgYXJnMikKQEAgLTE2NzQsMTAgKzE1MzAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoV1RGOjpnZXQ8SlNCaWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKaW5kZXggMGM4NzNkYmU1ZmUuLjUzMmM2MmE3ZDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBSZWdFeHBPYmplY3QqLCBKCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0KEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxs
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dExTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUqLCBK
U1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBtaW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CmluZGV4IDhmMTkyNjA4MDU2Li5lOWExODVmMmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTUzMiw3ICs1MzIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTAwNCw2ICsxMDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNh
c2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVtYmVy
SXNJbnRlZ2VyOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2JqZWN0
T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCBkNmU3YzllMzA4NS4uNmRhNmJjMWMzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAgICAg
ICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNl
IEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNl
IEJpZ0ludDMyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6
CkBAIC0yNjMsNiArMjY1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIElz
VW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6
CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNl
IElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC02NzcsMTAgKzY4MCwxMCBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2FzZSBW
YWx1ZU1vZDoKICAgICBjYXNlIFZhbHVlUG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSk7CisgICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFsdWVC
aXROb3Q6Ci0gICAgICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50
VXNlOworICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3ROb2Rl
VHlwZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2FhNGJhYjQx
MGUuLmJjMjRiMjc1OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYQogCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQog
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwg
Y29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkpCisgICAg
ICAgICAgICBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBj
b25kaXRpb24pOworI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgZWxzZSBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQ
ZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CkBAIC0zNTMz
LDI0ICszNTM3LDQ3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdChO
b2RlKiBub2RlKQogewogICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogCi0gICAg
aWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxpZXMgb24gZGV0YWls
cyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxsIGhhdmUgdG8gYmUg
dXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KEpT
VmFsdWU6OkJpZ0ludDMyVGFnID09IDB4MTIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFs
dWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAwMTIpOworICAgICAgICBjb25zdGV4
cHIgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZmZmZmZmZmMDAwMDsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydCghKEpTVmFsdWU6OkJpZ0ludDMyTWFzayAmIG1hc2tGb3JCaWdJ
bnQzMkJpdHMpKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQobWFza0ZvckJpZ0lu
dDMyQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnhvcjY0KG9wZXJhbmQuZ3ByKCks
IHJlc3VsdEdQUik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBt
aXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGNoaWxkMS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cGVyYW5kKHRoaXMsIGNoaWxkMSk7CiAgICAgICAgIEdQUlJlZyBvcGVyYW5kR1BSID0gb3BlcmFu
ZC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoY2hpbGQxLCBvcGVyYW5kR1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEpOworICAg
IEFTU0VSVChjaGlsZDEudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgY2hpbGQxLnVzZUtpbmQo
KSA9PSBBbnlCaWdJbnRVc2UpOworICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hp
bGQxLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBjaGls
ZDEpOyAvLyBSZXF1aXJlZCBmb3IgdGhlIEFueUJpZ0ludFVzZSBjYXNlCiAgICAgSlNWYWx1ZVJl
Z3Mgb3BlcmFuZFJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lz
dGVycygpOwpAQCAtMzU3OCwxNCArMzYwNSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQml0d2lzZU5vdChOb2RlKiBub2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0
R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc25pcHBldFNsb3dQYXRoRnVuY3Rpb24+Ci12
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKIHsK
ICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENo
aWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlIHx8IGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IHJp
Z2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkg
PT0gQW55QmlnSW50VXNlKTsKKwogICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5u
b2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxl
ZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9
IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmln
aHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzYzMCwxMSArMzY2MSwxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlQo
IWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAg
ICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0LmVtcGxhY2UodGhp
cywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGls
ZCk7IC8vIFJlcXVpcmVkIGZvciBBbnlCaWdJbnRVc2UKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0
LT5qc1ZhbHVlUmVncygpOwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkp
IHsKLSAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmln
aHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7IC8vIFJlcXVpcmVkIGZvciBBbnlC
aWdJbnRVc2UKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
fQogCkBAIC0zNjcwLDUyICszNzAzLDg0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlm
IChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQubW92ZShs
ZWZ0LmdwcigpLCByZXN1bHRHUFIpOworCiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAg
Y2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0QW5k
R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBlZEJp
dE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGJp
dEFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAg
ICAgICAgICAgIG1faml0LmFuZDY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGVtaXRVbnR5
cGVkQml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6
IGJpdE9yIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgor
ICAgICAgICAgICAgbV9qaXQub3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgorICAgICAgICAgICAgLy8gQml0
WG9yIHJlbW92ZXMgdGhlIHRhZywgc28gd2UgbXVzdCBhZGQgaXQgYmFjayBhZnRlciBkb2luZyB0
aGUgb3BlcmF0aW9uCisgICAgICAgICAgICBtX2ppdC54b3I2NChyaWdodC5ncHIoKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQor
CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAKLSAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxl
ZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwor
ICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50
CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Ug
JiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0g
ICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2Ug
VmFsdWVCaXRBbmQ6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFuZEhl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9y
OgorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdEFuZEdlbmVyYXRvciwg
b3BlcmF0aW9uVmFsdWVCaXRBbmQ+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBW
YWx1ZUJpdFhvcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcDxK
SVRCaXRYb3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0WG9yPihub2RlKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25CaXRPckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRP
ckFueUJpZ0ludEJpdE9wPEpJVEJpdE9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdE9yPihu
b2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
LSAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKQEAgLTM3NTUsNyArMzgyMCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKICAgICBzdHJp
Y3RJbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQog
ewogICAgIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiA9IG5vZGUt
Pm9wKCkgPT0gVmFsdWVCaXRSU2hpZnQKICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlm
dCA6IG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdDsKQEAgLTM3NjUsOSArMzgzMCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGls
ZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgaWYgKGlzS25vd25Ob3ROdW1i
ZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUo
KSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0
LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0Lmpz
VmFsdWVSZWdzKCk7CiAKQEAgLTM4NTksMjcgKzM5MjYsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlTFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQg
PSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7
CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8v
IEZJWE1FOiBzdXBwb3J0IEJpZ0ludDMyCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENo
aWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQ
Uik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobGVmdENo
aWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwotICAgIGVtaXRVbnR5cGVkQml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBv
cGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CisgICAgZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wPEpJVExlZnRTaGlmdEdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQ+KG5v
ZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKQEAgLTM4ODcsMjcgKzM5NTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7CisgICAgLy8gRklYTUU6
IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2Up
OwotICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgIGVtaXRVbnR5cGVk
T3JCaWdJbnRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCkBAIC0zOTE4LDcgKzM5ODUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU2hpZnRPcChOb2RlKiBub2RlKQogCiAgICAgaWYgKGxlZnRD
aGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wID09IEJpdFVSU2hpZnQpOwot
ICAgICAgICBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKKyAgICAgICAgZW1pdFVu
dHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMzk0OCwxOSArNDAxNSw2OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEo
KTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgU3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworCisgICAgICAg
IC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lzdGVyLCBvciBjYW4g
d2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxzbywgbG9vayBpbnRv
IFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQgZ2VuZXJhdGVkIGNv
ZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQu
bW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMy
KHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCksIHRlbXBHUFIpOwor
ICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisgICAgICAgIC8vIEZJWE1F
OiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1i
bGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOworCisgICAgICAg
IC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJlY292
ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRvIGZy
ZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxk
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVm
dENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOworICAgICAgICBK
U1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Cisg
ICAgICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbgorICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1
cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyL0hlYXBCaWdJbnQKKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAg
IEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0g
cmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQ
Uik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkFkZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00MDA2LDQ0ICs0MTIzLDkz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQg
PSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50
eXBlZFVzZSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNo
R1BSUmVnID0gdHJ1ZTsKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSBmYWxzZTsK
LSNlbHNlCi0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKLSAgICAgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOwotI2VuZGlmCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAg
ICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJl
Z2lzdGVyLCBvciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTog
YWxzbywgbG9vayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2ll
bnQgZ2VuZXJhdGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Cisg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisK
KyAgICAgICAgbV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC51bmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3By
KCksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOwogCi0g
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRT
dWJJQyhhcml0aFByb2ZpbGUpOwotICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9w
ZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7Ci0gICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgc29tZSB3YXkg
dG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywg
cmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOwogCi0gICAgICAgIGNvbXBpbGVNYXRoSUMo
bm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgICAgIC8vIEZJWE1F
OiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJlY292ZXJ5PworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7
CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRvIGZyZWUgdGVtcEdQ
Uj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIC8v
IEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAogCi0gICAg
QVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNl
S2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21waWxlVmFsdWVB
ZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3QgVmFsdWVTdWI/
CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpIHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChs
ZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGlsZCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgICAgICBK
U1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0gICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7
CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKIAotICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxl
ZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBy
aWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVm
dC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVn
ID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOworI2Vsc2UKKyAg
ICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1NjcmF0Y2hG
UFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2so
KS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlv
biA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMobm9kZSwgc3Vi
SUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNoaW5nRnVu
Y3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgcmV0dXJuOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBSZXBhdGNoaW5nRnVuY3Rpb24sIHR5cGVu
YW1lIE5vblJlcGF0Y2hpbmdGdW5jdGlvbj4KQEAgLTQ2MTMsNiArNDc3OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gSW4gYWxsIG90aGVy
IGNhc2VzIHRoZSBub2RlIHNob3VsZCBoYXZlIGJlZW4gdHJhbnNmb3JtZWQgaW50byBhbiBhZGQg
b3IgYSBzdWIgYnkgRml4dXBQaGFzZQorICAgIC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoaXMg
aXMgdHJ1ZSwgd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBwYXRoIGZvciBBbnlCaWdJbnQu
CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKIAog
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjI4LDYg
KzQ3OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9k
ZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCwgYXQgbGVhc3QgZm9yIEJpZ0ludDMy
LCBidXQgcHJvYmFibHkgYWxzbyBmb3IgSGVhcEJpZ0ludCBoZXJlLgogICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKQEAgLTQ4MDgsMjkgKzQ5NzYsNjMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAg
ICAgIC8vIEZJWE1FOiB0aGUgY29kZSBiZXR3ZWVuIGNvbXBpbGVWYWx1ZUFkZCwgY29tcGlsZVZh
bHVlU3ViIGFuZCBjb21waWxlVmFsdWVNdWwgZm9yIEJpZ0ludDMyIGlzIG5lYXJseSBpZGVudGlj
YWwsIHNvIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBkdXBsaWNhdGlvbi4KKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBT
cGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lzdGVyLCBv
ciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxzbywgbG9v
ayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQgZ2VuZXJh
dGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAg
bV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJp
Z0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCksIHRlbXBH
UFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisgICAgICAgIC8v
IEZJWE1FOiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaE11bDMyKE1hY3Jv
QXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOworCisg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlv
blJlY292ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVn
cygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5n
IHRvIGZyZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVh
cEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93
bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgp
KSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0
LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0Lmpz
VmFsdWVSZWdzKCk7CiAKQEAgLTUwMTAsMjkgKzUyMTIsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNl
S2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9y
IEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNl
IG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4KKworICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hp
bGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBp
ZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVy
KHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNl
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTA0Niw2ICs1MjUyLDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRV
c2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwogICAgIE9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NSwyOSArNTUwMywzMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0
Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hp
bGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgewor
ICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2Ug
Z28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZv
ciBNb2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQp
OwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBy
aWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hp
bGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkp
OwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVP
cGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBo
KCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIEpTVmFsdWVPcGVyYW5k
IG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNW
YWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUs
IHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3Mo
KTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKQEAgLTU4NTksMzAgKzYwNzEsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhN
RTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgZm9yIFBvdz8gSSBleHBlY3Qg
aXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0
KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0JpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
bGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdz
ID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMCw2ICs2MjQ1LDEyIEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29t
cGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjA1OCw2ICs2Mjc5LDkgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor
ICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUuCisgICAgLy8gTm90IGhhdmlu
ZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJlIHdpbGwgbm90IGJlIGZ1c2VkIHdpdGggdGhlIGJy
YW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7
CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpIHsKICAgICAg
ICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjEzNiw3
ICs2MzYwLDI0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBu
b2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotI2lmIFVTRShKU1ZBTFVF
NjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRl
dGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0g
VUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChi
cmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJC
cmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAg
ICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKElu
dDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRl
Y3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJ
TlRfTUFYKSB7CkBAIC02MTgzLDggKzY0MjQsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAg
Y29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShu
b2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTYyNzgsOCArNjUx
OSw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQog
ICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHkobm9kZSwgbm9kZS0+Y2hpbGQy
KCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOwor
CisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CiAgICAgcmV0dXJuIG5vblNwZWN1bGF0aXZl
U3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEwNTQxLDE4ICsxMDc4MiwxOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0ZVN5bWJv
bChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgREZHX1RZ
UEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2Vs
bENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoY2VsbCkpOworICAg
IERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+
U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJ
bnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRn
ZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVk
Z2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdl
KTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CisgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MpCkBAIC0x
MDcyMiw4ICsxMDk2MywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSos
IEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9s
KGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgc3Bl
Y3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBjYXNlIEJpZ0ludDMy
VXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3QoZWRnZSk7CkBAIC0x
MzA3MCwxNyArMTMzMTksMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJp
YyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50Lmpz
VmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOworICAgIC8vIEZJWE1FOiBhZGQgYSBm
YXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUgKGFuZCBmb3IgdHlwZU9mLCBhbmQgZm9yIGJvb2xp
Znkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVkIGluIHRoaXMgZmlsZSkuCiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRH
UFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzQmlnSW50ID0gbV9qaXQuanVtcCgp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFyZ3Vt
ZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hlYXBC
aWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVyKGFyZ3VtZW50UmVncywgc2Ny
YXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGluaygmbV9qaXQpOworICAgIGlzSGVhcEJpZ0ludC5s
aW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3Vs
dFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CkBAIC0xMzk2OSw5ICsxNDIxOSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwg
Tm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUp
CiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZl
cnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisgICAgLy8gRklYTUU6IFtFU05l
eHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBm
b3IgYmlnIGludHMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwpAQCAtMTM5ODMsOCArMTQyMzMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKICAgICBsZWZ0LnVzZSgpOwogICAgIHJpZ2h0LnVz
ZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKLSAg
ICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKKyAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAKICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2N2UxNTkyYy4uYTJjYmZhNDk2NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNDYsNiArMzQ2
LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYKICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVj
a0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPik7CkBAIC0xMTQ4LDYg
KzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSos
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlvbl9HSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFu
Y2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVw
SG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKQEAgLTExNzIsNyAr
MTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSopOwog
CiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwotICAgIHZvaWQgY29tcGls
ZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxp
dHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSos
IE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0
eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlwZWRFZGdlKTsKIApAQCAtMTIyMiw2
ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShO
b2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29t
cGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAg
IHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ29t
cGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwpAQCAtMTI5
NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQml0d2lzZU5vdChOb2Rl
Kik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJh
dGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAgICB2b2lkIGVtaXRVbnR5cGVkQml0T3AoTm9k
ZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0d2lz
ZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSop
OworICAgIHZvaWQgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFs
dWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNoaWZ0T3AoTm9kZSopOwpAQCAt
MTU3OSw2ICsxNTg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2Us
IEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcEFueUludChFZGdlKTsK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNw
ZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2Up
OworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxh
dGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYyOCw4ICsxNjQxLDggQEAgcHVibGljOgogICAg
IHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVj
dWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlU3ltYm9s
KEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UsIEdQUlJlZyBjZWxsKTsKLSAg
ICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZv
aWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2Us
IEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjA3LDYgKzI2MjAsNTYgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCisjaWYgVVNFKEJJR0lOVDMyKQor
Y2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAg
ICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJS
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAg
ICAgICAgICAgIGdwcigpOworICAgIH0KKworICAgIH5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcp
OworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisKKyAgICBF
ZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisK
KyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9k
ZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3By
T3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9
IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIoZWRnZSgpKTsKKyAgICAgICAgcmV0dXJuIG1f
Z3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQq
IG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhf
RVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVt
cFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291
cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdl
ID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCA4ZGFiM2QwNGJjMC4uNWUwMzY5NmM3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE4NSw3ICs0
MTg1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkgdXNlZCBpbiA2NC1iaXQgREZHIik7CiAgICAg
ICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgIERGR19D
UkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNF
X0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0cnVlIGluIDY0IGJpdCBtb2RlIik7CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI4
N2Y2ODcyMjc1Li4xMTY2OTNhNzA5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4LDcgKzEzOCw4IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1h
dEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogeworICAgIGNhc2UgRGF0
YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CiAgICAg
ICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwog
ICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1
ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQg
YXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNo
aWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAgR1BSUmVnIGFyZzJHUFIgPSBhcmcy
LmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcsNjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5v
ZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6
WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Ci0g
ICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5i
cmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMUdQUik7Ci0gICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51bWJlcihhcmcxR1BSKTsK
LSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
cmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQUik7Ci0gICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7Ci0g
ICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgYnJhbmNoNjQo
aW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcx
R1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7
Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nhc2UubGluaygmbV9qaXQpOworICAgICAgICAv
KiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICdpbnZlcnQnIHRvIGJlIGZhbHNlKToK
KyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
ICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAg
ICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBD
ZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIGdvdG8gbm90VGFrZW47
CisgICAgICAgICAqLworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENh
c2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0
aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZklu
dDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNW
YWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92
ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAvLyBJZiBpdCBpcyBu
b3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQg
c2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUw
LgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92
ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0
Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93
ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAg
IG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgICAg
ICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dl
c3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0
KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVy
OjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAg
ICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxpbmsoJm1faml0KTsKLSAgICAgICAgcmlnaHRE
b3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBzdXBwb3J0
IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJh
bmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgICAgIC8vIElm
IHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkgaGF2ZSB0byBnbyB0byBhIHNsb3cg
cGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9yIEhlYXBCaWdJbnQgPT09IEhlYXBC
aWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5n
IHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQK
KyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2Ft
ZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAgICAgLy8gICAgICBCb3RoIGFyZSAi
QWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5l
aXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1
aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAgICAgICAgLy8gICAgICBJZiBi
b3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0
IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElmIGF0IGxlYXN0IG9uZSBpcyBub3QgSW50MzIs
IHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAgICAgLy8gICAgICBBbmQgaWYgYXQg
bGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNvIGJlIDAs
IG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX2pp
dC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgbV9q
aXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgICAgIHNs
b3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKKworICAg
ICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CisKKyAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0
YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChub3RUYWtlbik7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2Rl
LCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGlzIGNvZGUgc2hvdWxk
IGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgIEpT
VmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEpTVmFsdWVSZWdzIGFyZzFSZWdz
ID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGFyZzJSZWdzID0gYXJnMi5q
c1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJS
ZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwpAQCAtNDI4LDMzICs0
NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0
cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIG1faml0Lm9yNjQoYXJnMVJlZ3Mu
Z3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOworICAgIC8qIEF0IGEgaGlnaCBsZXZl
bCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFsc2UpOgorICAgIElmIChsZWZ0IGlz
IERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
cmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8g
ZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNlczsKIAotICAgIEpJVENvbXBpbGVy
OjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotCi0g
ICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxUmVn
cyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMVJl
Z3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgIEpJVENv
bXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFyZzJSZWdzKTsKLSAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihhcmcyUmVncywgSW52
YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotCi0gICAgbV9qaXQuY29t
cGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVh
bCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOwotCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAgIHR3b0NlbGxzQ2FzZS5s
aW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCkpKTsKKyAg
ICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3Vs
ZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51
bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRo
ZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9u
bHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
bW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdwcigp
KTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsK
KyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpM
b3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQo
bmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGls
ZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJl
c3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8g
YSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJp
Z0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwg
d2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNl
bGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcp
CisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNoZXMsIHdlIGNhbiBkbyBhIHNpbmds
ZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdo
dCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAv
LyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgIC8vIDIuIFNpbmNlIHdl
IGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlz
IENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmlnaHQpIGlzIENlbGwpCisgICAgLy8g
ICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5k
IHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAgSWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJ
bnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgIC8vICAgICAgQW5kIGlmIGF0
IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhlcicgdGFnIHdpbGwgYWxzbyBiZSAw
LCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBtX2ppdC5h
bmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICBtX2ppdC5vcjY0
KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICBzbG93UGF0aENhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKSk7CiAKLSAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVydCksIHJlc3VsdEdQUik7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVn
cywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogCisgICAgbV9qaXQueG9y
NjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQUik7CisKICAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKIH0KIApAQCAtMTAwMyw2ICsxMDU4LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVkZ2UsIERhdGFGb3JtYXQmIHJldHVy
bkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUy
OgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJp
Z0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMjM0LDYgKzEyOTEsOCBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZv
cm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJl
bnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0x
MzExLDYgKzEzNzAsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKEVkZ2UgZWRnZSkKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2UgRGF0
YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAgICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9y
bWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMzE5LDYgKzEzODAsMTA5IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAg
IH0KIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNCaWdJbnQzMikpCisgICAgICAgIHJldHVybjsKKworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVBbnlCaWdJbnQoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0JpZ0ludCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CisgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChlZGdlLCB2YWx1ZVJlZ3MuZ3ByKCkpOworICAgIG5vdENlbGwubGluaygm
bV9qaXQpOworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKSkuZ3ByKCk7Cit9CisKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0g
dmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNCaWdJ
bnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgeworICAgICAgICBpZiAobWF5SGF2ZVR5
cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIHJldHVy
biBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisg
ICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXRO
b25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisgICAgICAgIGlmIChl
ZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdl
LT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpKSwgZ3ByKTsK
KyAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKworICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7
CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRKUyk7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdl
LCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVt
YmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAg
ICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFG
b3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CisgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAg
ICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAg
ICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOwor
ICAgICAgICBpZiAodHlwZSAmIH5TcGVjQmlnSW50MzIpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZO
dW1iZXIoZ3ByKSk7CisgICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IGFsbG9jYXRlKCk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIp
KTsKKyAgICAgICAgICAgIHVubG9jayh0ZW1wR1BSKTsKKyAgICAgICAgfQorICAgICAgICBpbmZv
LmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAg
ICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToK
KyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAg
ICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAg
ICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0
YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFw
aCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBkYXRhIGZvcm1hdCIpOworICAgICAgICByZXR1
cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0RXF1YWxpdHkoRWRnZSBvYmpl
Y3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU1LDYgKzE3MTksNTUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSogbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKworICAgIGlmIChjb25k
aXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwpIHsKKyAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveCB0aGUgb3BlcmFu
ZHMsIHNpbmNlIHRoZSB0YWcgYml0cyBhcmUgaWRlbnRpY2FsCisgICAgICAgIG1faml0LmNvbXBh
cmU2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBtX2pp
dC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJ
bnQzMihyZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMi5ncHIoKSwgdGVtcC5n
cHIoKSk7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcC5ncHIoKSk7CisgICAgICAg
IG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIHJlc3VsdC5ncHIoKSwgdGVtcC5ncHIoKSwgcmVz
dWx0LmdwcigpKTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwg
d2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSogbm9kZSwg
Tm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0
aW9uKQoreworICAgIC8vIE90aGVyIGNvbmRpdGlvbnMgd291bGQgcmVxdWlyZSB1bmJveGluZyB0
aGUgQmlnSW50MzIgdG8gZ2V0IGNvcnJlY3QgcmVzdWx0cyBvbiBuZWdhdGl2ZSBudW1iZXJzLgor
ICAgIEFTU0VSVChjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IGNvbmRpdGlv
biA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpOworCisgICAgQmFzaWNCbG9jayogdGFrZW4g
PSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxvY2sq
IG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKKwor
ICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJs
b2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2Vu
ICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCisg
ICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJVENv
bXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0gdGFr
ZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1wOwor
ICAgIH0KKworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgYnJhbmNoNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwg
dGFrZW4pOworICAgIGp1bXAobm90VGFrZW4pOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikK
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQog
ewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQw
ODYsNiArNDI5OSwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNCaWdJbnQ6IHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuZ3ByKCkpOwor
CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmFuZDY0KHZhbHVlLmdwcigpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1
bHQuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnRpbnVhdGlvbiA9IG1faml0Lmp1bXAo
KTsKKworICAgICAgICBpc0NlbGwubGluaygmbV9qaXQpOworICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5jb21wYXJlOChK
SVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJp
Z0ludFR5cGUpLCByZXN1bHQuZ3ByKCkpOworCisgICAgICAgIGNvbnRpbnVhdGlvbi5saW5rKCZt
X2ppdCk7CisgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1bHQuZ3ByKCkpOworICAgICAgICBibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDc1ZjNhMDZiMGZjLi42YTI1
NGNlN2MyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0xMjUsNyArMTI1LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgogICAgICAg
ICBjYXNlIFZhbHVlQml0WG9yOiB7Ci0gICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBtYXli
ZSBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvcGVyYW5kIGlzIGFsd2F5cyBIZWFwQmlnSW50
IGFuZCB0aGUgb3RoZXIgaXMgYWx3YXlzIEJpZ0ludDMyPworICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNzUsNyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIGlmIChtX25vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKaW5kZXgg
OGVmNzNiNmYyZTguLmFiNjMxYzljZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNDUsOCArMTQ1LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBVc2VLaW5kIHVzZUtpbmQpCiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiU3ltYm9sIik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJpZ0lu
dFVzZToKLSAgICAgICAgb3V0LnByaW50KCJCaWdJbnQiKTsKKyAgICBjYXNlIEFueUJpZ0ludFVz
ZToKKyAgICAgICAgb3V0LnByaW50KCJBbnlCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJIZWFwQmlnSW50Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBvdXQucHJpbnQo
IkJpZ0ludDMyIik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToK
ICAgICAgICAgb3V0LnByaW50KCJTdHJpbmdPYmplY3QiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgKaW5kZXggOWMxM2M1YmNkMzUuLmY0ZjdiMzNiYjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2LDkgQEAgZW51bSBVc2VL
aW5kIHsKICAgICBLbm93blN0cmluZ1VzZSwKICAgICBLbm93blByaW1pdGl2ZVVzZSwgLy8gVGhp
cyBiaXphcnJlIHR5cGUgYXJpc2VzIGZvciBvcF9zdHJjYXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2Rl
IGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgb25seSBzZWUgcHJpbWl0aXZlcyAoaS5lLiBub3Qgb2Jq
ZWN0cykuCiAgICAgU3ltYm9sVXNlLAotICAgIEJpZ0ludFVzZSwKKyAgICBBbnlCaWdJbnRVc2Us
CisgICAgSGVhcEJpZ0ludFVzZSwKKyAgICBCaWdJbnQzMlVzZSwKICAgICBEYXRlT2JqZWN0VXNl
LAogICAgIE1hcE9iamVjdFVzZSwKICAgICBTZXRPYmplY3RVc2UsCkBAIC0xNTIsOCArMTU0LDEy
IEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkK
ICAgICAgICAgcmV0dXJuIFNwZWNIZWFwVG9wICYgflNwZWNPYmplY3Q7CiAgICAgY2FzZSBTeW1i
b2xVc2U6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50VXNlOgor
ICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBj
YXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKKyAgICBj
YXNlIEJpZ0ludDMyVXNlOgorICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDMyOwogICAgIGNhc2Ug
UHJvbWlzZU9iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNQcm9taXNlT2JqZWN0OwogICAg
IGNhc2UgRGF0ZU9iamVjdFVzZToKQEAgLTIxMiwyNCArMjE4LDYgQEAgaW5saW5lIGJvb2wgbWF5
SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCiAgICAgcmV0dXJuICFzaG91bGROb3RIYXZlVHlw
ZUNoZWNrKGtpbmQpOwogfQogCi1pbmxpbmUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGtpbmQp
Ci17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIEtu
b3duSW50MzJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgotICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgY2Fz
ZSBEb3VibGVSZXBSZWFsVXNlOgotICAgIGNhc2UgQW55SW50VXNlOgotICAgIGNhc2UgRG91Ymxl
UmVwQW55SW50VXNlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiBpbmxpbmUgYm9vbCBpc0RvdWJsZShVc2VLaW5k
IGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC0yNjEsNyArMjQ5LDcgQEAgaW5saW5l
IGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKICAgICBjYXNlIFN0cmluZ1VzZToKICAgICBjYXNl
IEtub3duU3RyaW5nVXNlOgogICAgIGNhc2UgU3ltYm9sVXNlOgotICAgIGNhc2UgQmlnSW50VXNl
OgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAg
ICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgIGNhc2UgRGF0ZU9iamVjdFVzZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBl
MWY1ODlmMjczNC4uYjI1ZTc5Zjg0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI2MSw2ICsyNjEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxs
OgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0Jp
Z0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAg
IGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC00ODQsNyArNDg1LDkgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT2Jq
ZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgICAgICAg
ICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgTWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCmluZGV4IDViNDky
NWNmZmJjLi5jMGY0ZjJiMDY1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcApAQCAtNTgsNiArNTgsOSBAQCB2b2lkIENvbW1vblZhbHVlczo6aW5p
dGlhbGl6ZUNvbnN0YW50cyhCMzo6UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxv
YwogICAgIGludFB0clRocmVlID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMyk7CiAgICAgaW50UHRyRWlnaHQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA4KTsKICAgICBkb3VibGVaZXJvID0gYmxvY2stPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBiaWdJbnQzMlplcm8gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEpTVmFsdWU6OkJpZ0ludDMyVGFnKTsKKyNlbmRpZgogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21tb25WYWx1ZXMuaAppbmRleCBjMWQ2ZDVhNTUxZC4uMzFhMzkzMjkwNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaApAQCAtNTYsNyArNTYsMTAgQEAg
cHVibGljOgogICAgIExWYWx1ZSBpbnRQdHJUaHJlZSB7IG51bGxwdHIgfTsKICAgICBMVmFsdWUg
aW50UHRyRWlnaHQgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGRvdWJsZVplcm8geyBudWxscHRy
IH07Ci0gICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBiaWdJbnQzMlplcm8geyBu
dWxscHRyIH07CisjZW5kaWYKKwogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZCB7IDAgfTsK
ICAgICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAgfTsKICAgICBjb25zdCBMVmFsdWUgYnJh
bmNoV2VpZ2h0cyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCAzNWQ4Y2U2NjkxMy4uYjFiN2FlMzgyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzU2LDYg
KzEzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAg
Y29tcGlsZUlzTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0Jp
Z0ludDoKKyAgICAgICAgICAgIGNvbXBpbGVJc0JpZ0ludCgpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgY29tcGlsZU51bWJl
cklzSW50ZWdlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTM5LDExICsyMTQyLDI4IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihs
ZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJp
Z2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRl
QWRkKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxh
dGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKwor
ICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjE2MCwxMSArMjE4MCwyOCBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIo
bGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihy
aWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0
ZVN1Yih1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3Vs
YXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisK
KyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7Cisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJ
bnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJIZWFwQmlnSW50LCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxODEs
MTEgKzIyMTgsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMiht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1
bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVu
Ym94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBt
X291dC5zcGVjdWxhdGVNdWwodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAg
ICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwg
bV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQz
MihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyODksNyAr
MjM0MywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5j
MiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOwotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBJQyB5ZXQuCisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIo
KSk7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1
ZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9k
ZS0+Y2hpbGQyKCkpOwogCkBAIC0yNTU4LDExICsyNjI2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVEaXYoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25EaXZCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yNjM3LDE4ICsyNzA2LDIxIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21waWxlVmFsdWVNb2QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkg
ewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBCaWdJbnQzMiBmYXN0IHBhdGggaGVyZQorICAgICAg
ICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsK
IAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25Nb2RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uTW9kSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQp
OwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsK
LSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UsIG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZU1vZCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgfQpAQCAtMjgxMywxNyArMjg4NSwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlUG93KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgLy8gRklYTUU6IG1heWJlIGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBiYXNlID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uUG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCBleHBvbmVudCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGV4cG9uZW50
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
c3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlUG93LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICB9CkBAIC0zMjA0LDkgKzMyODAsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1
ZUJpdE5vdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0
Tm90QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxp
ZXMgb24gZGV0YWlscyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxs
IGhhdmUgdG8gYmUgdXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMlRhZyA9PSAweDEyKTsKKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAx
Mik7CisgICAgICAgICAgICB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZm
ZmZmZmYwMDAwOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihvcGVy
YW5kLCBtX291dC5jb25zdEludDY0KG1hc2tGb3JCaWdJbnQzMkJpdHMpKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgb3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMjQsMTEgKzMzMTQsMjMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5i
b3gsIHNpbmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0NCwxMSArMzM0
NiwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAv
LyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkg
Yml0QW5kCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVmdCwgcmln
aHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjQsMTEgKzMz
NzgsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0TWlzc2luZ1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2luZ1RhZywg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjg0LDExICszNDEwLDI5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50MzJVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNtYXJ0ZXIg
aGVyZQorICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVzZSBhIHJp
Z2h0LXNoaWZ0IGJ5IGEgbmVnYXRpdmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3IgQmlnSW50
cy4KKyAgICAgICAgICAgIC8vIFNvIGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZsb3cuCisK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJpdFJTaGlm
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMzMDAsMjQg
KzM0NDQsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmFTaHIo
CiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1f
b3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigz
MSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0
IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9m
IHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0TFNoaWZ0
KCkKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAgIGxvd0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAg
IG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQz
MigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2Vm
dWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFz
dCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0
QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExT
aGlmdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzMzNCw3ICszNDc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICBzZXRJbnQzMihtX291dC5sU2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklY
TUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVk
ZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lk
IGNvbXBpbGVVSW50MzJUb051bWJlcigpCkBAIC03MzcxLDYgKzc1MTYsOSBAQCBwcml2YXRlOgog
ICAgICAgICAKICAgICAgICAgaWYgKGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkubV90
eXBlICYgKFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3ROdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2so
KTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNzM4MCwxMCArNzUyOCwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAv
LyBub3ROdW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1f
bm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RCaWdJbnQz
MikpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2VuZGlmCiAg
ICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsKIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBtX291dC5i
cmFuY2goaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1
cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAvLyBXZSBo
YXZlIHNldmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVtZXJpYyBz
dGlsbCBleGlzdHMuCkBAIC04NDQwLDcgKzg1OTIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODQ4Myw3ICs4NjM4LDk0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAg
Ly8gTm8gbmVlZCB0byB1bmJveCBzaW5jZSB0aGUgdGFnIGJpdHMgYXJlIHRoZSBzYW1lIG9uIGJv
dGggc2lkZXMKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5lcXVhbChsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc3RhcnQgd2l0
aCBpZiAobGVmdCA9PSByaWdodCksIGJlY2F1c2Ugd2UgbXVzdCBpbnNlcnQgdGhlIHJpZ2h0IGNo
ZWNrcyAoc2VlIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiBhYm92ZSkKKyAgICAgICAgICAgIC8v
IFRoZSBjb2RlIHRoYXQgd2UgZ2VuZXJhdGUgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nIHBzZXVk
by1jb2RlOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihsZWZ0
KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0soaXNI
ZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6
OmVxdWFsc1RvSW50MzIocmlnaHQsIHVuYm94ZWQobGVmdCkpOworICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQobGVmdCkpCisgICAgICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
aWYgKGlzQmlnSW50MzIocmlnaHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmln
SW50OjplcXVhbHNUb0ludDMyKGxlZnQsIHVuYm94ZWQocmlnaHQpKTsKKyAgICAgICAgICAgICBD
SEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0Jp
Z0ludDo6ZXF1YWxzKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgYm90aEFyZUJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG9ubHlMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNOb3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzSGVhcEJpZ0ludCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQmlnSW50MzIg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc05vdEJp
Z0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c0JpZ0ludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUobGVm
dElzQmlnSW50MzIpLCB1bnN1cmUobGVmdElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAg
Ly8gRklYTUU6IHNldCB0aGUgb3JkZXIgb2YgdGhlIGJsb2NrcyB0byBtYXhpbWl6ZSBmYWxsdGhy
b3VnaAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzQmlnSW50MzIpOworICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIocmlnaHQsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDIoKSkpLCB1bnN1cmUoYm90aEFyZUJpZ0ludDMyKSwgdW5zdXJlKG9ubHlMZWZ0SXNCaWdJ
bnQzMikpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhib3RoQXJlQmlnSW50MzIpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlMZWZ0SXNC
aWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0g
dW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExl
ZnRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCByaWdodCwgdW5ib3hlZExlZnQpKSk7CisgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05v
dEJpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhl
ckNlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
ZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUobGVmdEVxdWFsc1JpZ2h0KSwgdW5zdXJlKGxlZnRJ
c0hlYXBCaWdJbnQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdEVxdWFsc1Jp
Z2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExlZnRFcXVhbHNSaWdodCA9
IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0hlYXBC
aWdJbnQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIocmlnaHQsIHByb3Zl
blR5cGUobV9ub2RlLT5jaGlsZDIoKSkpLCB1bnN1cmUocmlnaHRJc0JpZ0ludDMyKSwgdW5zdXJl
KHJpZ2h0SXNOb3RCaWdJbnQzMikpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdo
dElzQmlnSW50MzIpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94Qmln
SW50MzIocmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0UmlnaHRJc0Jp
Z0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCB1bmJveGVkUmlnaHQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNOb3RCaWdJ
bnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxs
KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0lu
dF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGlu
dHMKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI4OTUKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhIZWFwQmlnSW50
ID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJh
dGlvbkNvbXBhcmVTdHJpY3RFcSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0Qm90aEFyZUJpZ0ludDMyLCByZXN1bHRMZWZ0SXNCaWdJ
bnQzMiwgcmVzdWx0TGVmdEVxdWFsc1JpZ2h0LCByZXN1bHRSaWdodElzQmlnSW50MzIsIHJlc3Vs
dEJvdGhIZWFwQmlnSW50KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRp
ZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQp
OwpAQCAtODU2NiwxMSArODgwOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50VXNlKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3Jl
YXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZl
cnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC04NjU2LDYgKzg4OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBz
bWFydGVyIGhlcmUsIHNlZSB0aGUgREZHU3BlY3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVk
VXNlKSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpKTsKICAgICAgICAgbm9uU3BlY3VsYXRpdmVDb21wYXJlKAogICAgICAgICAgICAgWyZdIChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7CkBAIC0xMDYxOCw3ICsxMDg2MSwzNiBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0
LCBwYXRjaHBvaW50UmVzdWx0KSk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXND
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2Vs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVu
c3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRp
b24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlz
Q2VsbFdpdGhUeXBlKHZhbHVlLCBtX25vZGUtPnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3Vs
YXRlZFR5cGVGb3JRdWVyeSgpLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50
MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICB9CisjZWxzZSAvLyBpZiAhVVNF
KEJJR0lOVDMyKQorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggQUxXQVlTX0lOTElORSB2b2lk
IGNvbXBpbGVJc0JpZ0ludCgpCisgICAgeworICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGRlYWxp
bmcgd2l0aCBCaWdJbnQzMiwgd2Ugc2hvdWxkIGp1c3QgZW1pdCBJc0NlbGxXaXRoVHlwZShIZWFw
QmlnSW50KSBpbnN0ZWFkLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUlzQ2VsbFdpdGhUeXBlKCkKICAgICB7CiAg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CkBA
IC0xNDM0Miw5ICsxNDYxNCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1pdEJpbmFyeVNuaXBw
ZXQoSl9KSVRPcGVyYXRpb25fR0pKIHNsb3dQYXRoRnVuY3Rpb24pCiAgICAgewogICAgICAgICBO
b2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICAKLSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1
ZShub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwogCiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAg
U25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkucmVzdWx0VHlwZSgpKTsKQEAgLTE0NDEwLDggKzE0Njg0LDExIEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAKLSAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0lu
dFVzZSkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
IHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBub2RlLT5jaGlsZDIoKSk7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBT
bmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS5yZXN1bHRUeXBlKCkpOwpAQCAtMTUwMjMsNyArMTUzMDAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBm
bG93IHN0cnVjdHVyZToKICAgICAgICAgICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAg
ICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisg
ICAgICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmln
SW50KQogICAgICAgICAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAg
ICAgICAgICAgIC8vICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vICAgICAgICAgZG8gZXZpbCB0
aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtMTUwMzMsNiArMTUzMTAsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1
ZSkKICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgICAg
ICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAgICAgICAgIC8v
IH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAgICAgICAgIC8vICAgICByZXN1
bHQgPSAodmFsdWUgIT0gQmlnSW50MzJUYWcpCiAgICAgICAgICAgICAvLyB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgICAgICAgICAgLy8g
fQpAQCAtMTUwNDAsMTMgKzE1MzE5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBjZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RTdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIHN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgYmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RTdHJpbmdPckJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdERvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9j
aygpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0ludDMy
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJ
bnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2s+IHJlc3VsdHM7CkBAIC0xNTA2MCwyMCArMTUz
NDMsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90U3RyaW5nQ2FzZSwgc3RyaW5nQ2FzZSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2go
Ci0gICAgICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3Bl
Y0NlbGwgLSBTcGVjU3RyaW5nKSksCi0gICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2Up
LCB1bnN1cmUobm90U3RyaW5nT3JCaWdJbnRDYXNlKSk7CisgICAgICAgICAgICAgICAgaXNIZWFw
QmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0gU3BlY1N0cmluZykp
LAorICAgICAgICAgICAgICAgIHVuc3VyZShoZWFwQmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJp
bmdOb3JIZWFwQmlnSW50Q2FzZSkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJp
bmdDYXNlLCBiaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nh
c2UsIGhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFu
Y2hvcihtX291dC5ub3RFcXVhbCh2YWx1ZSwgd2Vha1BvaW50ZXIoanNFbXB0eVN0cmluZyhtX2dy
YXBoLm1fdm0pKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAot
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgbm90U3RyaW5nT3JCaWdJbnRD
YXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhlYXBCaWdJbnRDYXNlLCBub3RTdHJp
bmdOb3JIZWFwQmlnSW50Q2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgbm9uWmVyb0JpZ0ludCA9
IG1fb3V0Lm5vdFplcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2
ZSh2YWx1ZSwgbV9oZWFwcy5KU0JpZ0ludF9sZW5ndGgpKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcihub25aZXJvQmlnSW50KSk7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdFN0cmluZ09yQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UsIG5vdENlbGxDYXNlKTsKICAg
ICAgICAgICAgIExWYWx1ZSBpc1RydXRoeU9iamVjdDsKICAgICAgICAgICAgIGlmIChtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKQogICAgICAgICAgICAgICAg
IGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQuYm9vbGVhblRydWU7CkBAIC0xNTExNiw4ICsxNTM5OSwy
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuYm94RG91YmxlKHZhbHVlKSwgbV9vdXQu
Y29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KGRvdWJsZUlzVHJ1dGh5KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3Vi
bGVDYXNlLCBiaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgIGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiB+U3BlY0NlbGwp
LAorICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnQzMkNhc2UpLCB1bnN1cmUobm90QmlnSW50
MzJDYXNlKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludDMyQ2FzZSwgbm90
QmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAgIExWYWx1ZSBiaWdJbnQzMk5vdFplcm8gPSBtX291
dC5ub3RFcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykp
OworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGJpZ0ludDMyTm90WmVy
bykpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAg
CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2UsIGNvbnRpbnVhdGlv
bik7CisjZWxzZQogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91YmxlQ2FzZSwgY29u
dGludWF0aW9uKTsKKyNlbmRpZgogICAgICAgICAgICAgTFZhbHVlIG1pc2NJc1RydXRoeSA9IG1f
b3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3IobWlzY0lzVHJ1dGh5KSk7CkBAIC0xNTcyMiwxMyArMTYwMTksMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIHN0cmluZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAg
ICAgIC8vICAgICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKICAg
ICAgICAgLy8gICAgIH0KICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBudW1iZXIpIHsKICAgICAg
ICAgLy8gICAgIHJldHVybiBudW1iZXIKKyAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBiaWdpbnQz
MikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyB9IGVsc2UgaWYg
KGlzIG51bGwpIHsKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QKICAgICAgICAgLy8gfSBl
bHNlIGlmIChpcyBib29sZWFuKSB7CkBAIC0xNTc1Niw2ICsxNjA1NSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgbnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdE51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyNlbmRpZgogICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGJvb2xlYW5DYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgdW5kZWZpbmVkQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC0xNTgwOCw3ICsxNjExMCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90U3RyaW5nQ2FzZSwgYmlnSW50Q2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgK
LSAgICAgICAgICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2Vs
bCAtIFNwZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICBpc0hlYXBCaWdJbnQo
dmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNT
dHJpbmcpKSwKICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKHN5bWJvbENh
c2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBzeW1ib2xDYXNlKTsK
QEAgLTE1ODI0LDggKzE2MTI2LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhudW1iZXJDYXNlLCBub3ROdW1iZXJDYXNlKTsKICAgICAgICAgZnVuY3RvcihU
eXBlb2ZUeXBlOjpOdW1iZXIpOwotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwgbm90QmlnSW50MzJDYXNlKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgflNw
ZWNDZWxsKSwgdW5zdXJlKGJpZ0ludENhc2UpLCB1bnN1cmUobm90QmlnSW50MzJDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzJDYXNlLCBub3ROdWxsQ2FzZSk7Cisj
ZWxzZQogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3ROdWxsQ2FzZSk7
CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGlzTnVsbDsKICAgICAgICAgaWYgKHByb3ZlblR5cGUo
Y2hpbGQpICYgU3BlY090aGVyKQogICAgICAgICAgICAgaXNOdWxsID0gbV9vdXQuZXF1YWwodmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSk7CkBAIC0xNjUyMywxNSAr
MTY4MzIsMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBMVmFsdWUgbG93QmlnSW50KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dIZWFwQmlnSW50
KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2Up
OworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpOwogCiAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBsb3dDZWxsKGVkZ2UsIG1vZGUpOwotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBMVmFsdWUgbG93QmlnSW50MzIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKworICAgICAgICBMb3dlcmVkTm9kZVZh
bHVlIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZhbHVlLnZh
bHVlKCk7CisgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUocmVzdWx0KSwg
ZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05vdEJpZ0ludDMyKHJlc3VsdCkpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNr
KGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7Cisg
ICAgICAgIHJldHVybiBtX291dC5iaWdJbnQzMlplcm87CisgICAgfQorI2VuZGlmCisKICAgICBM
VmFsdWUgbG93Tm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUg
bW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51
c2VLaW5kKCkgPT0gT2JqZWN0VXNlKTsKQEAgLTE2NzE3LDcgKzE3MDQ0LDcyIEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIElu
dDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBMVmFsdWUgaXNCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3Zl
blZhbHVlKHR5cGUsIFNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwor
ICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNW
YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAg
TFZhbHVlIGlzTm90QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlLCB+U3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47
CisgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmJpdEFu
ZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykpLAorICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0K
KyAgICBMVmFsdWUgdW5ib3hCaWdJbnQzMihMVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGpzVmFsdWUsIG1fb3V0LmNvbnN0
SW50NjQoMTYpKSk7CisgICAgfQorICAgIExWYWx1ZSBib3hCaWdJbnQzMihMVmFsdWUgaW50MzJW
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5iaXRPcigKKyAgICAgICAgICAgIG1f
b3V0LnNobChtX291dC56ZXJvRXh0KGludDMyVmFsdWUsIEIzOjpJbnQ2NCksIG1fb3V0LmNvbnN0
SW50NjQoMTYpKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50
MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIGlzTm90QW55QmlnSW50KExWYWx1ZSBqc1ZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICAvLyBpZiAoaXNCaWdJbnQzMikKKyAgICAg
ICAgLy8gICByZXR1cm4gZmFsc2UKKyAgICAgICAgLy8gaWYgKCFpc0NlbGwpCisgICAgICAgIC8v
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIC8vIHJldHVybiAhaXNIZWFwQmlnSW50CisgICAgICAg
IExCYXNpY0Jsb2NrIGlzQmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgaXNOb3RCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQu
YnJhbmNoKGlzQmlnSW50MzIoanNWYWx1ZSwgdHlwZSksIHVuc3VyZShpc0JpZ0ludDMyQ2FzZSks
IHVuc3VyZShpc05vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlz
QmlnSW50MzJDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuRmFsc2UgPSBtX291
dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzTm90QmlnSW50MzJDYXNlKTsKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChqc1ZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENh
c2UpLCB1bnN1cmUoaXNOb3RDZWxsQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlz
Tm90Q2VsbENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5UcnVlID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UpOworICAgICAgICBWYWx1
ZUZyb21CbG9jayByZXR1cm5Jc05vdEhlYXBCaWdJbnQgPSBtX291dC5hbmNob3IoaXNOb3RIZWFw
QmlnSW50KGpzVmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbik7CisgICAgICAgIHJldHVybiBtX291
dC5waGkoSW50MzIsIHJldHVybkZhbHNlLCByZXR1cm5UcnVlLCByZXR1cm5Jc05vdEhlYXBCaWdJ
bnQpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICBMVmFsdWUgaXNDZWxs
T3JNaXNjKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwg
U3BlY0NlbGxDaGVjayB8IFNwZWNNaXNjKSkKQEAgLTE3MDI5LDggKzE3NDIxLDE2IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xl
YW4oZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6Ci0g
ICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlQmlnSW50MzIoZWRn
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAg
ICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOb3RTdHJp
bmdWYXIoZWRnZSk7CkBAIC0xNzIxNiwxOCArMTc2MTYsMzggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zeW1ib2xTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9
CiAKLSAgICBMVmFsdWUgaXNOb3RCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRo
ZXJDZWxsKExWYWx1ZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQog
ICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBT
cGVjQ2VsbCwgflNwZWNCaWdJbnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSwgflNwZWNIZWFwQmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92
ZW47CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGVmYXVsdFRvRmFsc2UgPSBtX291dC5hbmNob3IobV9v
dXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgdHlw
ZSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOworCisgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGlu
dWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuRm9yQ2VsbCA9IG1fb3V0LmFu
Y2hvcihpc0hlYXBCaWdJbnQodmFsdWUsIHR5cGUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKEludDMyLCBkZWZhdWx0VG9G
YWxzZSwgcmV0dXJuRm9yQ2VsbCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAg
IHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCiAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuYmlnSW50U3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgfQogCi0gICAgTFZhbHVlIGlzQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzSGVhcEJpZ0ludChMVmFsdWUgY2VsbCwg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0JpZ0ludCkp
CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0Nl
bGwsIFNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAg
IHJldHVybiBtX291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCkBAIC0xNzY4NSwxNiArMTgxMDUsMzUgQEAgcHJpdmF0
ZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0K
IAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAg
dm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgewor
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNIZWFw
QmlnSW50LCBpc05vdEhlYXBCaWdJbnQoY2VsbCkpOworICAgIH0KKyAgICB2b2lkIHNwZWN1bGF0
ZUhlYXBCaWdJbnQoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNW
YWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjQmlnSW50LCBpc05vdEJpZ0ludChjZWxsKSk7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQorICAgIHZvaWQgc3BlY3VsYXRl
SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgICAgIExWYWx1ZSB2YWx1
ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
RlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQs
IGlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCh2YWx1ZSkpOwogICAgIH0KIAorI2lm
IFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVl
KSwgZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05vdEJpZ0ludDMyKHZhbHVlKSk7CisgICAgfQorCisg
ICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmln
SW50LCBpc05vdEFueUJpZ0ludCh2YWx1ZSkpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
cGVjdWxhdGVOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewogICAg
ICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNPYmplY3Qs
IGlzTm90T2JqZWN0KGNlbGwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAyMTcxNWQzZGQyMi4uOWJiYTc0MzliY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAgICAg
IGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBK
U1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0
b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUklu
Zm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFsaXpl
IGFsbCBvYmplY3RzLiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmlu
ZGV4IGFiM2U5YzYyOWFkLi4yNTg5ZTJjZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNzID0g
MDsKICAgICAgICAgdW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9kZS5j
ZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAgaWYg
KCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsK
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUo
dm0pOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkpCiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5v
ZGVGbGFnczo6SW50ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNs
dWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcAppbmRleCA2Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNj
cmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1ZjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBoZWFwT2JqZWN0SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAgaWYg
KGNlbGwtPmlzQmlnSW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRy
eUdldFN0cmluZyh2bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNIZWFw
QmlnSW50KCkpIHsKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmlu
Zyh2bSwgYXNIZWFwQmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IDUxODhjMDIzOWRmLi5jOWZmOTZhODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
dW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGFyZ3VtZW50cywgdWludDMyX3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdU
eXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICBjYXNlIEJpZ0ludFR5cGU6CisgICAgY2Fz
ZSBIZWFwQmlnSW50VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmpl
Y3QsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGViODA4MmU5Yjdi
Li40OGVhYTQwM2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQog
ewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJl
OgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBz
dHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVl
LT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5n
cyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmUKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVl
KQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJ
bnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAg
Ly8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8g
fQpAQCAtNzA2LDcgKzcwOCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZh
bHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAKICAgICBhdXRv
IG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBi
cmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBi
cmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50
ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNo
SWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBA
IC03MjksNyArNzMxLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVU
b0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICBjb21wYXJlUHRy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgcmVzdWx0LCBy
ZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRo
aXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIGxvYWQzMihBZGRyZXNzKHZh
bHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHQpOwog
ICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwpAQCAtNzUyLDYgKzc1
NCwxNSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihW
TSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7
CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0
byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVl
LmdwcigpLCByZXN1bHQpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgdXJz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgY29tcGFyZTMyKGludmVydCA/
IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAg
IGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY29tcGFyZTY0
KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVUcnVlKSwgcmVzdWx0KTsKICNlbHNlCkBAIC03NjcsNyArNzc4LDcgQEAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0m
IHZtLCBKU1ZhbHVlUmVncyB2YWwKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcg
Y29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
IC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAg
ICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8v
ICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAt
Nzc3LDYgKzc4OCw4IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJl
cikgewogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZh
bHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAgLTc4Niw3ICs3OTksNyBAQCBBc3NlbWJseUhlbHBl
cnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFs
dWVSZWdzIHZhbAogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsK
ICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsK
LSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsK
KyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewog
ICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ICE9IEludmFsaWRHUFJSZWcpOwpAQCAtODE3LDcgKzgzMCw3IEBAIEFzc2VtYmx5SGVscGVyczo6
SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsCiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKGpzRW1wdHlTdHJpbmcodm0p
KSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMp
OworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNo
VGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIo
KSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKIApAQCAtODQyLDYgKzg1NSwxNSBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIH0K
IAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRv
IGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUu
Z3ByKCksIHNjcmF0Y2gpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIHVy
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBzY3JhdGNoKTsKKyAgICB0cnV0aHkuYXBwZW5kKGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgc2NyYXRjaCkpOworICAgIGRvbmUu
YXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdHJ1dGh5LmFwcGVuZChi
cmFuY2g2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGU5NWY4ZmUzNWRjLi5l
ZTY2ZTA1YmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTI5LDcgKzkyOSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hJ
Zk5vdEJvb2xlYW4ocmVncy50YWdHUFIoKSwgdGVtcEdQUik7CiAjZW5kaWYKICAgICB9Ci0gICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyKEdQUlJlZyBn
cHIsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0
ZXJzKQorICAgIHsKKyAgICAgICAgSnVtcCBudW1iZXIgPSBicmFuY2hJZk51bWJlcihncHIsIG1v
ZGUpOworICAgICAgICBKdW1wIGJpZ0ludDMyID0gYnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVt
YmVyKGdwciwgdGVtcEdQUik7CisgICAgICAgIG51bWJlci5saW5rKHRoaXMpOworICAgICAgICBy
ZXR1cm4gYmlnSW50MzI7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyS25vd25O
b3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICBBU1NF
UlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIp
OworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1w
R1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJp
Z0ludDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJl
Z3MuZ3ByKCksIHRlbXBHUFIpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJL
bm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAg
IEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVt
cEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyks
IHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIg
dGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJh
bmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNo
OCgKQEAgLTk1MSwxMyArOTgxLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBi
cmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1F
OiByZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBp
bnB1dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVt
cCBicmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RU
eXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9
CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJh
bmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkJp
Z0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0lu
dFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBi
cmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShj
ZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0lu
dChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBC
aWdJbnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikg
eyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1
bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZO
b3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTM1Niw2ICsxMzg3
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9
CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lk
IHVuYm94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIHVyc2hpZnQ2NCh0cnVz
dGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgIH0KKworICAgIHZvaWQgYm94
QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGxzaGlmdDY0KHRydXN0ZWRJbW0z
MkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgICAgIG9yNjQoVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkJpZ0ludDMyVGFnKSwgZ3ByKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCkBAIC0xNzI4LDcgKzE3NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICAg
ICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8g
ICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2lu
dCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAg
IC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCkBAIC0xNzM5LDYgKzE3ODMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMg
Ym9vbGVhbikgewogICAgICAgICAvLyAgICAgcmV0dXJuIGJvb2xlYW4KKyAgICAgICAgLy8gfSBl
bHNlIGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAg
ICAgICAvLyB9IGVsc2UgewogICAgICAgICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAg
ICAvLyB9CkBAIC0xNzcwLDEwICsxODE2LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBub3RTdHJp
bmcubGluayh0aGlzKTsKIAotICAgICAgICBKdW1wIG5vdEJpZ0ludCA9IGJyYW5jaElmTm90Qmln
SW50KGNlbGxHUFIpOworICAgICAgICBKdW1wIG5vdEhlYXBCaWdJbnQgPSBicmFuY2hJZk5vdEhl
YXBCaWdJbnQoY2VsbEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBm
YWxzZSk7CiAKLSAgICAgICAgbm90QmlnSW50LmxpbmsodGhpcyk7CisgICAgICAgIG5vdEhlYXBC
aWdJbnQubGluayh0aGlzKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpTeW1ib2wsIGZh
bHNlKTsKICAgICAgICAgCiAgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKQEAgLTE3ODksNiAr
MTgzNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXAgbm90Qm9vbGVhbiA9IGJyYW5jaElmTm90
Qm9vbGVhbihyZWdzLCB0ZW1wR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCb29s
ZWFuLCBmYWxzZSk7CiAgICAgICAgIG5vdEJvb2xlYW4ubGluayh0aGlzKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgSnVtcCBub3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJL
bm93bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsKKyAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBl
OjpCaWdJbnQsIGZhbHNlKTsKKyAgICAgICAgbm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRp
ZgogICAgICAgICAKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpVbmRlZmluZWQsIHRydWUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOS4uZDVl
YTk5ZjMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM3MCw2ICszNzAsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9pc191bmRlZmluZWRfb3JfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2Jvb2xlYW4p
CiAgICAgICAgIERFRklORV9PUChvcF9pc19udW1iZXIpCisgICAgICAgIERFRklORV9PUChvcF9p
c19iaWdfaW50KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJ
TkVfT1Aob3BfaXNfY2VsbF93aXRoX3R5cGUpCiAgICAgICAgIERFRklORV9PUChvcF9qZXFfbnVs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxLi5kMDQzZmNlYjEwYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MjgsNiArNTI4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzc4NjczZTE4
YWMuLjY3YjAwYjBhMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYy5jcHAKQEAgLTQ3Niw2ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CisgICAgLy8g
RklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVn
YXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDRmFz
dDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogfQogCkBAIC00ODQsNiArNDg1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCiAgICAgSklUTmVnSUMqIG5lZ0lDID0gYml0d2lzZV9jYXN0PEpJVE5lZ0lDKj4obV9pbnN0
cnVjdGlvblRvTWF0aElDLmdldChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKKyAgICAvLyBGSVhNRTog
aXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNp
bmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVtaXRNYXRoSUNTbG93PE9wTmVn
YXRlPihuZWdJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUsIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRo
TmVnYXRlT3B0aW1pemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAppbmRleCBmYzk0Y2EzNzI0OS4uZGI1ZDU4MmM4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjgzLDYgKzI4MywzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19u
dW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIEpJVDo6
ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0lu
dD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZD
ZWxsKHJlZ1QwKTsKKworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFz
ayksIHJlZ1QxKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDApOworICAgIGNvbXBhcmU2NChFcXVh
bCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlZ1QwKTsKKyAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworICAgIEp1bXAgZG9u
ZSA9IGp1bXAoKTsKKworICAgIGlzQ2VsbC5saW5rKHRoaXMpOworICAgIGNvbXBhcmU4KEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzIHsgcmVnVDAgfSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QpOworfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKK05PX1JF
VFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sK
KyAgICAvLyBJZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxX
aXRoVHlwZSBpbnN0ZWFkIG9mIGlzQmlnSW50LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisjZW5kaWYKKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtNTcw
LDI4ICs2MDEsNTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMo
c3JjMSwgcmVnVDAsIHNyYzIsIHJlZ1QxKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgYm90
aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgorCisgICAgLyogQXQgYSBoaWdoIGxldmVs
IHdlIGRvIChhc3N1bWluZyAndHlwZScgdG8gYmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlz
IERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
cmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8g
ZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCisKKyAg
ICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3Vs
ZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51
bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRo
ZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9u
bHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7
CisgICAgbW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAg
ICBhZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVn
VDUpOworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChB
Ym92ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdU
MCwgcmVnVDEsIHJlZ1Q1KTsKKyAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywg
cmVnVDUpOworCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5n
cyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmln
SW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmlu
Z3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZkNlbGwocmVnVDIpKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVy
IGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmlu
ZSwgYW5kIHRoZW4gdGVzdAotICAgIC8vIGlmIGl0J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0
T0sgPSBicmFuY2hJZkludDMyKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJl
cihyZWdUMCkpOwotICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGJy
YW5jaElmSW50MzIocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1Qx
KSk7Ci0gICAgcmlnaHRPSy5saW5rKHRoaXMpOwogCi0gICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9w
U3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKLSAgICAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMSwg
cmVnVDAsIHJlZ1QwKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVn
VDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKLQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0
RXEpCisgICAgICAgIHhvcjY0KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xl
YW4ocmVnVDUsIEpTVmFsdWVSZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlZ1Q1KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYxNCwyNCArNjY4LDQ4IEBAIHZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMx
LCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNl
bGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFz
c3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8
IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgIGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdo
dCBpcyBDZWxsKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBub3RUYWtlbjsKKyAg
ICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8
fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0
IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIv
YnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMg
YW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywg
bGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIg
YXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8g
TGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgbW92ZShyZWdU
MCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOworICAgIGFkZDY0KHJlZ1Q1LCBy
ZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBsc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsKKworICAgIEp1bXAgYXJlRXF1
YWwgPSBicmFuY2g2NChFcXVhbCwgcmVnVDAsIHJlZ1QxKTsKKyAgICBpZiAodHlwZSA9PSBDb21w
aWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQorICAgICAgICBhZGRKdW1wKGFyZUVxdWFsLCB0
YXJnZXQpOworCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5n
cyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmln
SW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmlu
Z3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZkNlbGwocmVnVDIpKTsKIAotICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMg
YSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBh
bmQgdGhlbiB0ZXN0Ci0gICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9
IGJyYW5jaElmSW50MzIocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJl
Z1QwKSk7Ci0gICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNo
SWZJbnQzMihyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsK
LSAgICByaWdodE9LLmxpbmsodGhpcyk7Ci0KLSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KEVxdWFsLCByZWdU
MSwgcmVnVDApLCB0YXJnZXQpOwotICAgIGVsc2UKLSAgICAgICAgYWRkSnVtcChicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKKyAgICBpZiAodHlwZSA9PSBDb21waWxl
T3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkgeworICAgICAgICBhZGRKdW1wKGp1bXAoKSwgdGFy
Z2V0KTsKKyAgICAgICAgYXJlRXF1YWwubGluayh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNjg2LDcgKzc2NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHNyY1ZSZWcsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAg
aXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAxYzMwNzc2OWRh
YS4uNDg0MDMwMGIyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTI4OCw2ICsyODgsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3Jl
Qm9vbChkc3QsIHJlZ1QwKTsKIH0KIAorTk9fUkVUVVJOIHZvaWQgSklUOjplbWl0X29wX2lzX2Jp
Z19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIC8vIFdlIGVtaXQgaXNfY2VsbF93aXRo
X3R5cGUgaW5zdGVhZCwgc2luY2UgQmlnSW50MzIgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1iaXQg
cGxhdGZvcm1zLgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKQEAgLTg2Niw3ICs4NzIsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAgSnVtcCBpc05vdENlbGwgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90QmlnSW50
KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7
CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZGE4
MmYzMWUxYjguLjMxNDVjODAxODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTEzMTYsNiArMTMxNiwxOSBAQCBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jbwogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChnbG9iYWxPYmplY3QsIHNyYzEs
IHNyYzIpOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50KQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKGhlYXBCaWdJbnQtPmlzSGVh
cEJpZ0ludCgpKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KGhlYXBCaWdJ
bnQpLT5lcXVhbHNUb0ludDMyKHNtYWxsSW50KTsKK30KKyNlbmRpZgorCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3Qg
SlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CkBAIC0yODM5LDYgKzI4NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAg
IHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
ICphcml0aFByb2ZpbGUpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNh
bGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBh
IEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Bl
cmFuZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODUxLDggKzI4
NjUsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0g
b3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2
YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9
IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1
ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3Vi
bGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODYwLDYgKzI4ODIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJl
IGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3Bl
cmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4NzQsMTAgKzI4OTcsMjAgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQu
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewot
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmln
SW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlz
QmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMy
QXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAg
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBwcmlt
VmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgor
ICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkp
OwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKLQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0yODg4LDYgKzI5
MjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRo
b3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJ
bnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpAQCAtMjkwOCw5ICsyOTQyLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZh
bHVlKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIo
KTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVlID0g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAo
cHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAg
ICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CkBAIC0yOTIyLDYgKzI5NjcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlv
blZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklU
TmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI5
NDEsOSArMjk4NywxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBw
cmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgCi0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmln
SW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgLy8gRklYTUU6IHdoeSBkb2VzIHRoaXMgZnVuY3Rpb24gcHJvZmlsZSB0aGUg
YXJndW1lbnQgYnV0IG5vdCB0aGUgcmVzdWx0PworICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQz
MigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSkpOworICAg
ICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0K
KyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hl
YXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA1
YzFmYzM3NjE2MC4uNDc2YjM2ZGQ0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0yMDQsNiArMjA0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWQK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogI2lm
IFVTRShKU1ZBTFVFNjQpCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogbGVmdCwgSlNDZWxsKiByaWdo
dCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVx
SGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGhlYXBCaWdJbnQsIGlu
dDMyX3Qgc21hbGxJbnQpIFdURl9JTlRFUk5BTDsKICNlbHNlCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGxlZnQs
IEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDUyNDM1YTY2
MTIwLi4yYTJiYjk5Zjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTM2LDYgKzEzNiwxMiBAQAogI2RlZmluZSBP
RkZMSU5FX0FTTV9KU1ZBTFVFNjQgMAogI2VuZGlmCiAKKyNpZiBVU0UoQklHSU5UMzIpCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJ
R0lOVDMyIDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9B
U01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTEzNjQzOTAyYjYuLmNkMWMwMmE3ZDNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xOTYsNiArMTk2LDExIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFZh
bHVlTnVsbCAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1ZU51bGwKICAgICBjb25zdCBU
YWdOdW1iZXIgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TnVtYmVyVGFnCiAgICAgY29uc3Qg
Tm90Q2VsbE1hc2sgICAgID0gY29uc3RleHByIEpTVmFsdWU6Ok5vdENlbGxNYXNrCisgICAgaWYg
QklHSU5UMzIKKyAgICAgICAgY29uc3QgVGFnQmlnSW50MzIgPSBjb25zdGV4cHIgSlNWYWx1ZTo6
QmlnSW50MzJUYWcKKyAgICAgICAgY29uc3QgTWFza0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFs
dWU6OkJpZ0ludDMyTWFzaworICAgIGVuZAorICAgIGNvbnN0IExvd2VzdE9mSGlnaEJpdHMgPSBj
b25zdGV4cHIgSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cwogZWxzZQogICAgIGNvbnN0IEludDMy
VGFnID0gY29uc3RleHByIEpTVmFsdWU6OkludDMyVGFnCiAgICAgY29uc3QgQm9vbGVhblRhZyA9
IGNvbnN0ZXhwciBKU1ZhbHVlOjpCb29sZWFuVGFnCkBAIC01MjEsNiArNTI2LDcgQEAgY29uc3Qg
SlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlvblR5cGUKIGNvbnN0IEFycmF5VHlw
ZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSBjb25zdGV4
cHIgRGVyaXZlZEFycmF5VHlwZQogY29uc3QgUHJveHlPYmplY3RUeXBlID0gY29uc3RleHByIFBy
b3h5T2JqZWN0VHlwZQorY29uc3QgSGVhcEJpZ0ludFR5cGUgPSBjb25zdGV4cHIgSGVhcEJpZ0lu
dFR5cGUKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJlZCBpbiBh
IHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgogIyBzd2l0
Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDYyNjUyYTY2MjM1Li4xNGViNWZmYWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTEz
MDMsNiArMTMwMywxMiBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1i
ZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiBlbmQpCiAKIAorIyBPbiAz
Mi1iaXQgcGxhdGZvcm1zIEJJR0lOVDMyIGlzIG5vdCBzdXBwb3J0ZWQsIHNvIHdlIGdlbmVyYXRl
IG9wX2lzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQgb2Ygb3BfaXNfYmlnX2ludAorbGxpbnRPcChv
cF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyh1bnVzZWQsIHVudXNlZCwgdW51c2VkKQor
ICAgIG5vdFN1cHBvcnRlZCgpCitlbmQpCisKKwogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2Vs
bF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDAsIHQzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzNDE2ODBhYmVlOC4uM2YwYjhh
NjZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODQ0LDI0ICs4NDQsNDggQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
dW5kZWZpbmVkX29yX251bGwsIE9wSXNVbmRlZmluZWRPck51bGwsIG1hY3JvIChzaXplLCBnZXQK
IGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1
YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgY3JlYXRlQm9vbGVhbikKICAgICBsbGludE9wV2l0aFJldHVybihvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAg
ICAgZ2V0KG1fcmhzLCB0MCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDIsIHQwKQorCisgICAgICAgICMgQXQgYSBoaWdoIGxldmVsIHdlIGRvCisg
ICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAg
IyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7
CisgICAgICAgICMgaWYgKHJlc3VsdCkKKyAgICAgICAgIyAgICAgZ290byBkb25lOworICAgICAg
ICAjIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290
byBzbG93UGF0aDsKKyAgICAgICAgIyBkb25lOgorICAgICAgICAjIHJldHVybiByZXN1bHQ7CisK
KyAgICAgICAgIyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJp
Z2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhh
dCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFu
Y2hJZk51bWJlcgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBh
biBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBs
ZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJl
ciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAg
ICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICAgICAg
bW92ZSB0MCwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAgICAgbW92ZSBMb3dlc3RPZkhp
Z2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAgICBhZGRxIHQ1LCB0MworICAg
ICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgMSwgdDUKKyAgICAgICAgYnFhZXEgdDMs
IHQ1LCAuc2xvdworCisgICAgICAgIGNxZXEgdDAsIHQxLCB0NQorICAgICAgICBidHFueiB0NSwg
dDUsIC5kb25lICNpcyB0aGVyZSBhIGJldHRlciB3YXkgb2YgY2hlY2tpbmcgdDUgIT0gMCA/CisK
ICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICAjIFRoaXMg
YW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5vdCBmb3IgQmlnSW50MzIgKHNpbmNlIGl0IG1ha2Vz
IGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8gYmUgc3RyaWN0RXF1YWwgdG8gYSBub24tQ2VsbCkK
KyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwgbm90Q2VsbE1hc2ssIC5zbG93
Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAs
IG51bWJlclRhZywgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAgICBicWFlcSB0MSwgbnVtYmVy
VGFnLCAucmlnaHRPSwotICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5y
aWdodE9LOgotICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQotICAgICAgICBv
cnEgVmFsdWVGYWxzZSwgdDAKLSAgICAgICAgcmV0dXJuKHQwKQorCisgICAgLmRvbmU6CisgICAg
ICAgIGNyZWF0ZUJvb2xlYW4odDUpCisgICAgICAgIHJldHVybih0NSkKIAogICAgIC5zbG93Ogog
ICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCkBAIC04NzEsMzMg
Kzg5NSw1MyBAQCBlbmQKIAogCiBzdHJpY3RFcU9wKHN0cmljdGVxLCBPcFN0cmljdGVxLAotICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
KQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVlRmFsc2UsIG9wZXJhbmQgZW5kKQogCiAK
IHN0cmljdEVxT3AobnN0cmljdGVxLCBPcE5zdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQsIHJlc3VsdCkgY3FuZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9w
ZXJhbmQpIHhvcnEgVmFsdWVUcnVlLCBvcGVyYW5kIGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcXVh
bGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQor
bWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBqdW1w
SWZFcXVhbCwganVtcElmTm90RXF1YWwpCiAgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAg
ICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDMsIHQxKQorCisgICAgICAgICMgQXQgYSBoaWdoIGxldmVsIHdlIGRv
CisgICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAg
ICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyBpZiAobGVmdCA9PSByaWdodCkKKyAg
ICAgICAgIyAgICAgZ290byBqdW1wVGFyZ2V0OworICAgICAgICAjIGlmIChsZWZ0IGlzIENlbGwg
fHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAg
IyBnb3RvIG90aGVySnVtcFRhcmdldAorCisgICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1l
bnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJy
YW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3
ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sg
aXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0
IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAg
ICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRz
IG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUg
b3IgZXF1YWwgMTw8NTAuCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgIG1vdmUgdDEsIHQz
CisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAgICAgYWRkcSB0NSwgdDIK
KyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0MworICAgICAgICBsc2hpZnRx
IDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAgICAgICBicWVxIHQwLCB0
MSwgLmVxdWFsCisKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAg
ICAgICAjIFRoaXMgYW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5vdCBmb3IgQmlnSW50MzIgKHNp
bmNlIGl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8gYmUgc3RyaWN0RXF1YWwgdG8g
YSBub24tQ2VsbCkKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwgbm90Q2Vs
bE1hc2ssIC5zbG93Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sKLSAgICAg
ICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAgICBicWFl
cSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSwotICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAu
c2xvdwotICAgIC5yaWdodE9LOgotICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIC5q
dW1wVGFyZ2V0KQotICAgICAgICBkaXNwYXRjaCgpCiAKLSAgICAuanVtcFRhcmdldDoKLSAgICAg
ICAganVtcChtX3RhcmdldExhYmVsKQorICAgICAgICBqdW1wSWZOb3RFcXVhbChqdW1wLCBtX3Rh
cmdldExhYmVsLCBkaXNwYXRjaCkKKworICAgIC5lcXVhbDoKKyAgICAgICAganVtcElmRXF1YWwo
anVtcCwgbV90YXJnZXRMYWJlbCwgZGlzcGF0Y2gpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtOTA3LDMzICs5NTEs
MzYgQEAgZW5kCiAKIAogc3RyaWN0RXF1YWxpdHlKdW1wT3AoanN0cmljdGVxLCBPcEpzdHJpY3Rl
cSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCkKLQorICAgIG1hY3JvIChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGp1bXAo
dGFyZ2V0TGFiZWwpIGVuZCwKKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNo
KSBkaXNwYXRjaCgpIGVuZCkKIAogc3RyaWN0RXF1YWxpdHlKdW1wT3Aoam5zdHJpY3RlcSwgT3BK
bnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBicW5lcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCkKKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNo
KSBkaXNwYXRjaCgpIGVuZCwKKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNo
KSBqdW1wKHRhcmdldExhYmVsKSBlbmQpCiAKIG1hY3JvIHByZU9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbikKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVv
cGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gdXBkYXRlQXJpdGhQcm9maWxlKHR5cGUpCi0g
ICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgICAgICAgICBvcmggdHlw
ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQ
cm9maWxlOjptX2JpdHNbdDJdCiAgICAgICAgIGVuZAogCi0gICAgICAgIGdldChtX3NyY0RzdCwg
dDApCi0gICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDMKLSAgICAgICAgbWV0YWRhdGEodDEs
IHQyKQotICAgICAgICAjIE1ldGFkYXRhIGluIHQxLCBzcmNEc3QgaW4gdDMKLSAgICAgICAgYnFi
IHQzLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgICAgIGludGVnZXJPcGVyYXRpb24odDMsIC5zbG93
KQotICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MwotICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQw
LCA4XQotICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQotICAgICAg
ICBkaXNwYXRjaCgpCisgICAgZ2V0KG1fc3JjRHN0LCB0MCkKKyAgICBsb2FkcSBbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbWV0YWRhdGEodDIsIHQzKQorICAgICMgc3JjRHN0IGluIHQxLCBtZXRhZGF0
YSBpbiB0MgorICAgICMgRklYTUU6IHRoZSBuZXh0IGxpbmUganVtcHMgdG8gdGhlIHNsb3cgcGF0
aCBmb3IgQmlnSW50MzIuIFdlIGNvdWxkIGluc3RlYWQgaGF2ZSBhIGRlZGljYXRlZCBwYXRoIGlu
IGhlcmUgZm9yIHRoZW0uCisgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93CisgICAgaW50ZWdl
ck9wZXJhdGlvbih0MSwgLnNsb3cpCisgICAgb3JxIG51bWJlclRhZywgdDEKKyAgICBzdG9yZXEg
dDEsIFtjZnIsIHQwLCA4XQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQp
CisgICAgZGlzcGF0Y2goKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKKwogZW5k
CiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF90b19udW1iZXIsIE9wVG9OdW1iZXIsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCkBAIC0xMjc5LDYgKzEzMjYsMjYgQEAgbGxpbnRP
cFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgIHJldHVybih0MSkKIGVuZCkKIAoraWYgQklHSU5UMzIKKyAg
ICBsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyhzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgICAgIGdldChtX29wZXJhbmQsIHQxKQorICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICAgICAgYnRxbnog
dDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICAgICAgY2JlcSBKU0NlbGw6Om1fdHlw
ZVt0MF0sIEhlYXBCaWdJbnRUeXBlLCB0MQorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKKyAg
ICAgICAgcmV0dXJuKHQxKQorICAgIC5ub3RDZWxsQ2FzZToKKyAgICAgICAgYW5kcSBNYXNrQmln
SW50MzIsIHQwCisgICAgICAgIGNxZXEgdDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgICAgICBvcnEg
VmFsdWVGYWxzZSwgdDAKKyAgICAgICAgcmV0dXJuKHQwKQorICAgIGVuZCkKK2Vsc2UKKyMgaWYg
QklHSU5UMzIgaXMgbm90IHN1cHBvcnRlZCB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhfdHlw
ZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKKyAgICBsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9w
SXNCaWdJbnQsIG1hY3JvKHVudXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgICAgIG5vdFN1cHBv
cnRlZCgpCisgICAgZW5kKQorZW5kCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0
aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggODRmZTM5OWNk
OGMuLjRiOTQ0NTA1ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcApAQCAtODMsNiArODMsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmll
ckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAg
ICBpZiAocmFkaXggPT0gMTApCiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmlnSW50ID0g
SlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRp
eCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQ
YXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
CiAgICAgLy8gRklYTUU6IFdlIGFyZSBhbGxvY2F0aW5nIGEgSlNCaWdJbnQganVzdCB0byBiZSBh
YmxlIHRvIHVzZQogICAgIC8vIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcgd2hlbiByYWRpeCBpcyBu
b3QgMTAuCiAgICAgLy8gVGhpcyBjcmVhdGVzIHNvbWUgR0MgcHJlc3N1cmUsIGJ1dCBzaW5jZSB0
aGVzZSBpZGVudGlmaWVycwpAQCAtOTAsMTEgKzk0LDE1IEBAIGNvbnN0IElkZW50aWZpZXImIElk
ZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3Qg
SWRlCiAgICAgLy8gaXQgd29udCBiZSBtdWNoIHByb2JsZW1hdGljLCBnaXZlbiBzdWNoIGNhc2Vz
IGFyZSB2ZXJ5IHJhcmUuCiAgICAgLy8gVGhlcmUgaXMgYSBsb3Qgb2Ygb3B0aW1pemF0aW9ucyB3
ZSBjYW4gYXBwbHkgaGVyZSB3aGVuIG5lY2Vzc2FyeS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjI3Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJz
ZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpF
cnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpV
bnNpZ25lZCk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX2lkZW50aWZp
ZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3Ry
aW5nKHZtLCBiaWdJbnQsIDEwKSkpOworICAgIEpTQmlnSW50KiBoZWFwQmlnSW50OworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgaGVhcEJp
Z0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkp
OworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBoZWFwQmlnSW50ID0gYmlnSW50LmFzSGVhcEJp
Z0ludCgpOworCisgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgaGVhcEJpZ0ludCwgMTApKSk7CiAgICAg
cmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMDdkOGU4YzgyMWMuLmVlOGZm
ZmM1NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDc3ZDhjYWYyMzY4Li44ZWQxNGFhOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDE4ICs3NSw2IEBAIHZv
aWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90
eXBlKiBiaWdJbnRQcm90b3R5cGUpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBib29sIGlz
U2FmZUludGVnZXIoSlNWYWx1ZSBhcmd1bWVudCkKLXsKLSAgICBpZiAoYXJndW1lbnQuaXNJbnQz
MigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghYXJndW1lbnQuaXNEb3VibGUo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG91YmxlIG51bWJlciA9IGFyZ3VtZW50
LmFzRG91YmxlKCk7Ci0gICAgcmV0dXJuIHRydW5jKG51bWJlcikgPT0gbnVtYmVyICYmIHN0ZDo6
YWJzKG51bWJlcikgPD0gbWF4U2FmZUludGVnZXIoKTsKLX0KLQogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1l
bnQpCiB7CiAgICAgQVNTRVJUKGFyZ3VtZW50LmlzUHJpbWl0aXZlKCkpOwpAQCAtOTQsMjAgKzgy
LDI0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIAogICAgIGlmIChhcmd1bWVudC5pc0Jp
Z0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKLSAgICAK
KworICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOwor
I2VuZGlmCisgICAgfQorCisgICAgaWYgKGFyZ3VtZW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
cmV0dXJuIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgeworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IEFTU0VSVChhcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVy
KCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkKLSAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSkpOwotICAgIAotICAgIGlmIChhcmd1
bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1l
bnQuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24i
X3MpOwotICAgIAotICAgIEFTU0VSVChhcmd1bWVudC5pc1N0cmluZygpKTsKLSAgICAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKLSAgICB9KSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
YXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzEx
MSwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0g
dmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIo
KSkgewotICAgICAgICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cHJpbWl0aXZlLmFzSW50MzIoKSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKSB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0
aXZlLmFzSW50MzIoKSkpOworI2VuZGlmCisgICAgfQogCi0gICAgICAgIGlmIChwcmltaXRpdmUu
aXNVSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2
ZS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3Vi
bGUoKTsKKyAgICAgICAgaWYgKHRydW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51
bWJlcikgPiBtYXhTYWZlSW50ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5v
dCBhIHNhZmUgaW50ZWdlciJfcykpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5h
c0RvdWJsZSgpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpt
YWtlSGVhcEJpZ0ludE9yQmlnSW50MzIodm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2
ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3Vs
dCA9IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUw
MDQ1ZGFjOTYuLmU2MTk4MmI5M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludE9iamVjdC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoQmlnSW50T2JqZWN0KTsKIGNvbnN0IENsYXNzSW5mbyBCaWdJbnRP
YmplY3Q6OnNfaW5mbyA9IHsgIkJpZ0ludCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQmlnSW50T2JqZWN0KSB9OwogCiAKLUJpZ0ludE9iamVj
dCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogYmlnSW50KQorQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmlnSW50KQog
ewogICAgIEJpZ0ludE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
QmlnSW50T2JqZWN0Pih2bS5oZWFwKSkgQmlnSW50T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJp
Z0ludE9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBi
aWdJbnQpOwpAQCAtNDksNyArNDksNyBAQCBCaWdJbnRPYmplY3Q6OkJpZ0ludE9iamVjdChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEJpZ0ludE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0JpZ0ludCogYmlnSW50KQordm9pZCBCaWdJbnRPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCmluZGV4IDQ0ZmM3NmZi
ZGY5Li5hNjM1NGExNmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50T2JqZWN0LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENh
aW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpT
QmlnSW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNDEsMTEgKzQwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLmJpZ0ludE9i
amVjdFNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCopOworICAgIHN0YXRpYyBCaWdJbnRP
YmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCi0gICAgSlNCaWdJbnQqIGludGVybmFsVmFsdWUoKSBjb25zdCB7
IHJldHVybiBhc0JpZ0ludChKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7IH0KKyAg
ICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1dyYXBwZXJPYmplY3Q6
OmludGVybmFsVmFsdWUoKTsgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtNTcsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQmln
SW50Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
VmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEJpZ0ludE9iamVjdChWTSYsIFN0cnVjdHVy
ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFBy
b3RvdHlwZS5jcHAKaW5kZXggZDA1ODljZjQyYjIuLmRmZjBmMTY1N2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTgwLDEy
ICs4MCwyNCBAQCB2b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNC
aWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAvLyBGSVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmlj
aWVudCwgYnV0IHJlLWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBl
bm91Z2ggd29yayB0aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBp
ZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCB0aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBp
ZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0g
anNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3Qq
IGJpZ0ludE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1
ZS5hc0NlbGwoKSkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZh
bHVlKCk7CisKKyAgICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAg
ICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJ
bnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFw
QmlnSW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEy
MCw2ICsxMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhl
IHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5kcyBhbmQgc2ltaWxhciB0aGluZ3MuCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBlM2JlZDg4ZDgzYS4uNTg5Yzg5Nzg4YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNs
dWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDY5
LDEzICs0NjgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAg
ICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJl
cihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAgUkVUVVJOX1dJVEhf
UFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBA
IC00ODQsMTMgKzQ3OCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwogICAgIEpTVmFsdWUg
YXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlh
bnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGdsb2JhbE9iamVjdCwg
YXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0Owot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkp
Ci0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpz
TnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsKICAgICBSRVRVUk5f
V0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9
CiAKQEAgLTUwNyw3ICs0OTYsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9y
VW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICBVbmFy
eUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHBy
b2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkg
fHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgeworCisg
ICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0Lmlz
QmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5k
aWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0lu
dDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDMyT3ZlcmZsb3co
KTsKQEAgLTUyNywxMCArNTI0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9y
VW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UKIHN0YXRpYyB2b2lk
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBK
U1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0NSw4ICs1MzksMjEgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigp
OwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAg
ICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAg
IGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFs
dWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHByaW1WYWx1ZS5p
c0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9X
SVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
clVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBA
IC01ODQsOCArNTkxLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFy
eUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAg
ICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxzZSAKICAgICAg
ICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwNywxMyArNjE4LDgg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50
PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsK
LSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQp
KQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwot
ICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1
bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY0OSw3
ICs2NTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9s
bG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUg
dG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2Fs
bCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50
MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRl
bXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJh
bWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcxLDI0ICs2NzcsOCBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpz
VmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFs
dWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQs
IGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhS
T1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0
PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3Vs
dCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03
MDAsMjYgKzY5MCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29k
ZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYoZ2xvYmFsT2JqZWN0
LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51
bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9i
YWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAg
ICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0K
LSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJs
ZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsK
ICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMxLDI0
ICs3MDMsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWlu
ZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAg
Ci0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3Vi
bGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1i
ZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3BvdykKQEAgLTc1NywyNSArNzE0LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpT
VmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0
TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAg
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBv
cGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51
bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsK
KyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlm
dCkKQEAgLTc4NCwyMiArNzI1LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQp
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxl
ZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQg
PSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMg
PSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQg
c2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1i
ZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90Pihy
aWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlm
dCkKQEAgLTgwOCwyMiArNzM3LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQp
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxl
ZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQg
PSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMg
PSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVS
Tl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdU
Rjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg0OSw3OSArNzY2LDQ3IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRl
Y29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
b3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhi
eXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051
bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1
bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVj
b2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29k
ZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJp
dHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9u
LiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsK
IAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVt
ZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5
dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAg
ICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsK
KyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAg
IH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0
TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdF
VF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicg
b3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90
PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMzNDU0NDJmNTQuLjQ2YTliMTAxNTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21h
aWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRU
eXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJp
Z0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNC
aWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1P
cHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17
Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVu
Z3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAgICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDAp
OwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJp
bmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50Ojpw
YXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9y
UGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJl
dHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwg
cGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0
ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdW
aWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50
U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFy
c2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQogewogICAgIGlmIChzLmlzOEJp
dCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0
ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRN
b2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1v
ZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmln
SW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQogewogICAgIHJldHVybiBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsK
IH0KQEAgLTQ1NCwxNiArNDQxLDIzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmln
SW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFp
ciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUu
Z2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRP
bmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOwor
ICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZh
aXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25l
LmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCAxKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoIXgt
PnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwg
eC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgs
IFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUz
Miw3ICs1MjYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSQogICAgIGlmICh4LT5zaWduKCkp
CiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAKLSAgICAvLyB4ICYgKC15KSA9PSB4ICYg
fih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpCiAgICAg
SlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgcmV0dXJu
IGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBAIC0xNjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcg
SlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmFk
aXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJldmlzaXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8g
SlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5nOwogCiAgICAgQVNT
RVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwpAQCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9v
bCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1K
U0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBh
cnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9k
ZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAK
QEAgLTE4MTAsNyArMTgwNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAgICAgd2hpbGUg
KHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0pKQogICAgICAgICArK3A7CiAK
LSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJhY3RlcnMKKyAgICAvLyBDaGVjayBS
YWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAn
KSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAn
YicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEs
IGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ246OlVuc2lnbmVk
LCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwpAQCAtMTgyNCwyNCArMTgxOCwx
OCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogCiAgICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQ
YXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlmIChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlm
IChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgZWxzZSBpZiAoZGF0
YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CiAgICAgICAgICAg
ICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7CiAgICAgICAgICAgICArK3A7Ci0gICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3BdID09ICcrJykKKyAgICAgICAgICAgICsrcDsK
ICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2
bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwotCi0gICAgaWYg
KHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKLSAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNp
Z24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJy
b3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1K
U0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJ
bmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJz
ZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6
OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFk
aXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFy
c2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwogICAgIHVu
c2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1Miw3ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENo
YXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChl
cnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQogICAgICAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9y
KGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAK
ICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCkBAIC0xODY2LDQ0ICsxODU0LDg0IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CiAKLSAg
ICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNl
bHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKLQotICAgIHVuc2lnbmVkIGxpbWl0
MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRh
ID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRp
eCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmpl
Y3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0
IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJv
dyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5
cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkr
KywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAoZGF0YVtpXSA+
PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAt
ICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0
YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAgICAgICBlbHNl
IGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAgICAgICAgZGln
aXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0
PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworI2VuZGlmCiAgICAgfQogCi0g
ICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQgPyB0cnVlIDog
ZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmln
aHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IG51bWJl
ciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgK
KyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRjaCAocmFkaXgp
IHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMy
ID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICAgIGxlbmd0aExpbWl0
Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgICBs
ZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAotICAgIEFTU0VSVChn
bG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6
VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmlu
ZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAg
PyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8
aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChzdGF0
aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgaW5pdGlhbExlbmd0
aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBsZW5ndGgpIHsKKyAgICAgICAgaW50MzJf
dCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBt
dWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsraSwgKytwKSB7CisgICAgICAgICAgICBk
aWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gcmFkaXg7CisgICAgICAg
ICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtwXSA8IGxpbWl0MCkKKyAgICAgICAgICAg
ICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtw
XSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBk
YXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdBJyAm
JiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAn
QScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChlcnJvclBh
cnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwgbXVsdGlwbGllci51bnNhZmVHZXQoKSk7
CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7CisgICAgICAgICAgICBpZiAocCA9PSBsZW5n
dGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCkK
KyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsK
KyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0
PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhl
YXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgaW5pdGlhbExl
bmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhh
dmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBh
biBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgaWYgKCFoZWFwUmVzdWx0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBoZWFwUmVzdWx0
LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworICAgICAgICB9Cisg
ICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4o
bXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworICAg
IH0KIAotICAgIHJldHVybiBudWxscHRyOworICAgIGhlYXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9
PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAgcmV0dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJp
bSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2ln
bmVkIG4pCkBAIC0xOTI3LDE4ICsxOTU1LDIwIEBAIGJvb2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVt
YmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAgQVNTRVJUKG51bVZhbHVlLmlzTnVtYmVyKCkp
OwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpIHsKLSAgICAgICAgaW50IHZhbHVl
ID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAgICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkg
PT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDAp
ID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1
ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVy
biBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50MzIoKSk7CiAgICAgCiAgICAgZG91YmxlIHZh
bHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAgICByZXR1cm4gY29tcGFyZVRvRG91YmxlKHRo
aXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKIH0KIAorYm9vbCBKU0JpZ0lu
dDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09
IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUp
KSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRv
RG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIHsKICAgICAvLyBUaGlzIGFsZ29yaXRobSBl
eHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJRUVFIDc1NApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0ZTYwOTlmNDcuLjhlMmMxNDhlNmNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw2ICs4MiwxNyBAQCBw
dWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQogCisgICAgc3RhdGljIEpTVmFsdWUgbWFrZUhlYXBCaWdJbnRPckJpZ0ludDMyKFZNJiB2bSwg
aW50NjRfdCB2YWx1ZSkKKyAgICB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAodmFs
dWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKTsK
KyNlbmRpZgorCisgICAgICAgIGF1dG8gcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoc3RhdGljX2Nhc3Q8SlNDZWxsKj4ocHRyKSk7
CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBFcnJvclBhcnNlTW9kZSB7CiAgICAgICAgIFRocm93
RXhjZXB0aW9ucywKICAgICAgICAgSWdub3JlRXhjZXB0aW9ucwpAQCAtOTAsMTMgKzEwMSwxMiBA
QCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUludE1vZGUgeyBEaXNhbGxvd0VtcHR5U3Ry
aW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51bSBjbGFzcyBQYXJzZUludFNpZ24geyBV
bnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9k
ZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNl
SW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpU
aHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChK
U0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJz
ZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQ
YXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0ds
b2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6
OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpTVmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3Ry
aW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRpeCk7CiAKLSAgICBPcHRpb25hbDx1aW50
OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwogICAgIAogICAgIGVudW0gY2xhc3MgQ29t
cGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOwog
ICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwogICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0
IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0
aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3Vs
dCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIzMywxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9y
UGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCos
IENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJz
ZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQ
YXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJ
bnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChK
U0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUlu
dFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2Rl
OjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3Io
SlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQp
OwogCkBAIC0yNTgsOSArMjY5LDkgQEAgcHJpdmF0ZToKICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwogfTsKIAotaW5saW5lIEpTQmlnSW50KiBh
c0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoSlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOwor
ICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpOwogICAgIHJldHVybiBq
c0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjIuLjM3MmFkZDJl
ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIz
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKKyNp
bmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0
dGVyLmgiCkBAIC03MSw2ICs3MiwxNCBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIEFTU0VSVCghaXNJbnQz
MigpICYmICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBh
c0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmln
SW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4w
OworICAgIH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsK
ICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBi
b3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTAsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6
OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAg
ICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJv
b2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJ
bnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7CisjZW5kaWYKIAogICAg
IEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMp
KTsKQEAgLTExOCw2ICsxMzEsMTQgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYg
KGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5G
cm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmln
SW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2Jq
ZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAgICAgICAvLyBGSVhNRTogdGhlcmUg
bXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGZpbmQgdG9UaGlzIGZvciBKU0JpZ0ludCwgYnV0IEkg
Y2FuJ3QgZXZlbiBmaW5kIHdoZXJlIGl0IGlzIGRlZmluZWQuCisgICAgICAgIHJldHVybiBoZWFw
QmlnSW50LT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3QpKS0+dG9UaGlzKGhlYXBCaWdJ
bnQsIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJU
KGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRo
aXMoKTsKIH0KQEAgLTEzMCw3ICsxNTEsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6
ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIGlmIChp
c0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBn
bG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwotICAgICAgICBpZiAoaXNCaWdJbnQoKSkK
KyAgICAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAg
ICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7CkBAIC0xNDAsNiAr
MTYxLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pm51bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQ
cm90b3R5cGUoKTsKKyNlbmRpZgogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwog
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMjg2LDYgKzMxMSw4IEBAIHZvaWQgSlNW
YWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgb3V0LnBy
aW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAo
c3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkK
ICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxT
dHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFw
QmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06
IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAg
ICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAg
ICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRlcmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0
KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAgLTMwNSw2ICszMzIsMTAgQEAgdm9pZCBKU1Zh
bHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgi
TnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgi
VW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIo
KSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0lu
dDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsK
IH0KQEAgLTM0Nyw2ICszNzgsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVs
c2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0
LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlm
CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM4NCwxOCAr
NDE5LDI1IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgcmV0dXJuRW1wCiAgICAgICAgIHJldHVybiB2bS5zbWFs
bFN0cmluZ3MubnVsbFN0cmluZygpOwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlmIChpc1N5bWJv
bCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5u
b3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7Ci0gICAgICAgIHJldHVybiBlcnJv
clZhbHVlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAg
ICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAgICAgICAgICAgIHJldHVybiB2bS5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGludGVnZXIgKyAnMCcpOworICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoaW50
ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCog
YmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byBkaWdpdCA9IGJpZ0lu
dC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnNt
YWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKLSAgICAgICAg
SlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYmlnSW50LT50
b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisjZW5kaWYKKyAgICBpZiAoaXNIZWFwQmlnSW50
KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzSGVhcEJpZ0ludCgpOworICAgICAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJhdGhlciBoYXZlIHR3byBjYXNlcyBoZXJlOiBvbmUtY2hh
cmFjdGVyIHN0cmluZyB2cyBqc05vblRyaXZpYWxTdHJpbmcgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4K
KyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUodm0sIGJp
Z0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkucmVsZWFzZUltcGwoKS5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZXJyb3JWYWx1ZSgp
KTsKICAgICAgICAgcmV0dXJuIHJldHVyblN0cmluZzsKICAgICB9CisgICAgaWYgKGlzU3ltYm9s
KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9zKTsKKyAgICAgICAgcmV0dXJuIGVycm9y
VmFsdWUoKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJTdHJpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDBiY2FiNDBi
OGQ5Li5kZDQ2ZmFkMDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0
ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTE3Nyw2ICsxNzcsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBKU1RydWVUYWcgeyBKU1RydWUgfTsK
ICAgICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNlIH07CiAgICAgZW51bSBKU0NlbGxUYWcgeyBK
U0NlbGxUeXBlIH07CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVudW0gSlNCaWdJbnQzMlRhZyB7
IEpTQmlnSW50MzIgfTsKKyNlbmRpZgogICAgIGVudW0gRW5jb2RlQXNEb3VibGVUYWcgeyBFbmNv
ZGVBc0RvdWJsZSB9OwogCiAgICAgSlNWYWx1ZSgpOwpAQCAtMTg2LDYgKzE4OSw5IEBAIHB1Ymxp
YzoKICAgICBKU1ZhbHVlKEpTRmFsc2VUYWcpOwogICAgIEpTVmFsdWUoSlNDZWxsKiBwdHIpOwog
ICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBK
U1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpOworI2VuZGlmCiAKICAgICAvLyBOdW1iZXJz
CiAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxOSw2ICsyMjUs
OSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jv
b2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5
IGJlIGNhbGxlZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50
MzJGb3JBcml0aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBv
dGhlcndpc2UgbGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzOCw2ICsyNDcsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAg
ICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsK
KyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7
CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIo
KSBjb25zdDsKQEAgLTI0Niw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0cyhW
TSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdl
dD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAgLy8gRXh0cmFjdGluZyB0aGUg
dmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBXVEY6OlN0cmluZyYp
IGNvbnN0OwogICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0
OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2NSw5ICsyNzYsMTAgQEAgcHVi
bGljOgogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBl
ZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8gYmVlbiBzZXQgaW4gdGhlIENh
bGxGcmFtZSBhbHJlYWR5LgogICAgIGRvdWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwotICAgIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiB0b0Jp
Z0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9OdW1l
cmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkgY29u
c3Q7CiAKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0IGNhbiBiZSBkb25lIHdpdGhv
dXQgc2lkZSBlZmZlY3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0
aXZlKCkgY29uc3Q7CkBAIC0zMTYsOCArMzI4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsK
ICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJp
Y3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7
Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFs
Rm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKTsKICAgICBz
dGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwog
CiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKQEAgLTQxNSwxMSArNDI2LDIwIEBAIHB1YmxpYzoK
ICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgICAg
ICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2lu
ZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJv
bSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRlcnMu
Ci0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZykgVW5kZWZp
bmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQgMyBtYXNrZWQgb3V0IChV
bmRlZmluZWRUYWcpLCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCiAgICAgICogICBzYW1l
IHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQu
CiAgICAgICoKICAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRl
cm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CiAgICAgICogaG9sZXMsIGFu
ZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVy
bmFsIHZhbHVlIG9mIDApLgorICAgICAqCisgICAgICogV2hlbiBVU0UoQklHSU5UMzIpLCB3ZSBo
YXZlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFsbCAo
MzItYml0IGF0IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAq
IFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5n
czoKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVn
ZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2Vk
IHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNldCB0
byB0cnVlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8g
d2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBj
YW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRv
IGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZpbmVk
IGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMgdmFs
dWUgaXMgMl40OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQg
dmFsdWUgd2lsbCBiZWdpbgpAQCAtNDI5LDExICs0NDksMTkgQEAgcHVibGljOgogICAgIC8vIElm
IGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNhdGVzIGFuIGludGVnZXIg
bnVtYmVyLAogICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0IHRoaXMgdmFsdWUgaXMg
YSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KICAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qg
TnVtYmVyVGFnID0gMHhmZmZlMDAwMDAwMDAwMDAwbGw7CisgICAgLy8gVGhlIGZvbGxvd2luZyBj
b25zdGFudCBpcyB1c2VkIGZvciBhIHRyaWNrIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJp
Y3RFcSwgdG8gZGV0ZWN0IGlmIGVpdGhlciBvZiB0aGUgYXJndW1lbnRzIGlzIGEgZG91YmxlCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IExvd2VzdE9mSGlnaEJpdHMgPSAxVUxMIDw8IDQ5
OworICAgIHN0YXRpY19hc3NlcnQoTG93ZXN0T2ZIaWdoQml0cyAmIE51bWJlclRhZyk7CisgICAg
c3RhdGljX2Fzc2VydCghKChMb3dlc3RPZkhpZ2hCaXRzPj4xKSAmIE51bWJlclRhZykpOwogCiAg
ICAgLy8gQWxsIG5vbi1udW1lcmljIChib29sLCBudWxsLCB1bmRlZmluZWQpIGltbWVkaWF0ZXMg
aGF2ZSBiaXQgMiBzZXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IE90aGVyVGFnICAg
ICAgID0gMHgyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCb29sVGFnICAgICAgICA9
IDB4NDsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVW5kZWZpbmVkVGFnICAgPSAweDg7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCaWdJbnQz
MlRhZyAgICA9IDB4MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IEJpZ0ludDMyTWFz
ayAgID0gTnVtYmVyVGFnIHwgQmlnSW50MzJUYWc7CisjZW5kaWYKICAgICAvLyBDb21iaW5lZCBp
bnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgogICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IGZhbHNl
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUgICAgICA9IE90aGVyVGFn
IHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uYmUwZjM5YzUyMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTMyOSw2ICszMjgsMTIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFz
Q2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0Jp
dHMucGF5bG9hZCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVh
cEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxKU0JpZ0ludCo+KHUuYXNCaXRzLnBheWxvYWQpOworfQorCiBB
TFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBk
KQogewogICAgIEFTU0VSVCghaXNJbXB1cmVOYU4oZCkpOwpAQCAtNTIyLDggKzUyNywyMiBAQCBB
TFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4g
dS5wdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVhcEJpZ0lu
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNCaWdJbnQqPih1LnB0cik7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnQz
MlRhZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVtYmVyVGFnIHBhcnQgaXMg
Zm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBzaWduLWV4dGVuZGVkLgor
ICAgIHUuYXNJbnQ2NCA9ICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpIDw8IDE2KSAmIH5O
dW1iZXJUYWcpIHwgQmlnSW50MzJUYWc7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBp
bmxpbmUgaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUgbnVtYmVyKQogewogICAgIGlm
IChudW1iZXIgIT0gbnVtYmVyKQpAQCAtNjEwLDkgKzYyOSwzMSBAQCBpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc1N0cmluZygpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50KCk7Cisg
ICAgcmV0dXJuIGlzQmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0JpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgcmV0dXJuICh1LmFz
SW50NjQgJiBCaWdJbnQzMk1hc2spID09IEJpZ0ludDMyVGFnOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK2lubGluZSBpbnQzMl90IEpT
VmFsdWU6OmJpZ0ludDMyQXNJbnQzMigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQmlnSW50MzIo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCA+PiAxNik7Cit9
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJv
bCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N5bWJvbCgp
OwpAQCAtNjIwLDcgKzY2MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29u
c3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBjb25zdAogewotICAgIHJl
dHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3lt
Ym9sKCkgfHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuICFpc0NlbGwoKSB8fCBh
c0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+
aXNIZWFwQmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVy
KCkgY29uc3QKQEAgLTc2MCw4ICs4MDEsMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJp
bWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnUKICAg
ICAgICAgdmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIEFT
U0VSVChpc1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQTmFOOworICAgIGlmIChpc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIG51bWJlciA9IFBOYU47CisgICAgICAgIHZhbHVlID0gKnRoaXM7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dl
ZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlzOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4MjUsNDUgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNW
YWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBy
ZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1BTFdBWVNfSU5MSU5F
IFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6
OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlm
IChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91Ymxl
KCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAg
ICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3Vi
bGUoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmln
SW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50
b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDAp
OwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJp
YW50PEpTQmlnSW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1
ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICBpZiAo
aXNJbnQzMigpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKICAgICBpZiAo
aXNEb3VibGUoKSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAg
ICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQ
cmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChwcmlt
VmFsdWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4g
cHJpbVZhbHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS50b0ludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgcmV0dXJu
IHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgcmV0dXJu
IGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTAzMiwzNyArMTA4Mywx
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGRv
IHsKLSAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICAgICAgYm9v
bCBzMSA9IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwot
ICAgICAgICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyh2MikpKTsKLQot
ICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewotICAgICAgICAgICAgU3RyaW5nIHYy
U3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQq
IG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7Ci0g
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Cisg
ICAgICAgICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3ZSBoYXZlIGEgbnVtYmVyIGl0IGlz
IHYyIG1ha2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNpbXBsZXIuCisgICAgICAgICAgICBz
dGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzMSAmJiB2Mi5pc0Jp
Z0ludCgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnZh
bHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0Jp
Z0ludChnbG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYxID0gSlNWYWx1ZShu
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgZGVh
bHMgd2l0aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMsIGFuZCBpcyBhIHNob3J0Y3V0IGZv
ciBhIGZldyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBoYXMgdG8gY29tZSBoZXJlIGFuZCBu
b3QgYmVmb3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRoYXQgTmFOID09IE5hTgorICAgICAg
ICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAo
djEuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCkBAIC0xMDgwLDcgKzExMTEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1
ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwog
CiAgICAgICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNPYmpl
Y3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNs
eQogICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
ICAgICB2MSA9IHAxOwpAQCAtMTEwMiw1NiArMTEzMyw4NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKUwogICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAoc3lt
MSB8fCBzeW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAgICAg
ICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3Vz
bHkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wg
czEgPSB2MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKKyAg
ICAgICAgaWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIpCisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwg
YXNTdHJpbmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAg
ICAgIC8vIFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRoZSBuZXh0IGNhc2UsIHNvIGxvc2lu
ZyB0aGUgaW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBudW1iZXIgaXMgZmluZQorICAgICAg
ICB9CiAgICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAgICAgICAgZG91YmxlIGQxID0gdjEu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3Vh
cmFudGVlZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5rcyB0byB0aGUgc3dhcCBhYm92ZSkK
KyAgICAgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5n
IHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICB2MiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdo
IHRvIHRoZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBCaWdJbnRzICh3aGljaCBpcyBvbmx5
IG1pc3NpbmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2UsIGhlbmNlIHRoZSBjaGVjayBhYm92
ZSkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHYxLmlzTnVt
YmVyKCkgfHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYx
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAg
ICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjEgPSBKU1ZhbHVl
KHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9O
dW1iZXIgY29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIG9uZSBt
b3JlIHN3YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25seSB2MiBpcyBhbGxvd2VkIHRvIGJl
IGEgbnVtYmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEs
IHYyKTsKICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewotICAgICAgICAgICAg
aWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkg
PT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIg
Y29tcGFyaXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNC
aWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpl
cXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0Jp
Z0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQo
KSAmJiB2MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1
YWxzVG9OdW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKHYxLmlzQmln
SW50MzIoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigpOworICAgICAgICAg
ICAgaWYgKHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGRvdWJsZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYyLmFzRG91YmxlKCk7CisgICAgICAg
ICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2
Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFs
cyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigp
KTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVt
YmVyKHYyKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwogfQogCiAvLyBFQ01BIDExLjkuMwot
QUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpCiB7Ci0gICAgQVNTRVJUKHYx
LmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJp
bmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICBpZiAodjEtPmlzU3RyaW5nKCkg
JiYgdjItPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGds
b2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5p
c0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSks
IGFzQmlnSW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi0+aXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHN0YXRpY19jYXN0PEpT
QmlnSW50Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYyKSk7CiAgICAgcmV0dXJuIHYx
ID09IHYyOwogfQogCkBAIC0xMTYzLDEwICsxMjIyLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6
OnN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0
dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAotICAgIGlmICghdjEuaXNDZWxs
KCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQz
MkFzSW50MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQo
KSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJp
Z0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlz
Q2VsbCgpKQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3Qs
IHYxLmFzQ2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93
Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgcmV0dXJuIHYxID09IHYyOwog
fQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0
CkBAIC0xMTg0LDE1ICsxMjUwLDIzIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3Ry
aWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgp
KQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5h
c0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAg
ICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJ
bXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIp
LT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcp
Ci0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0lu
dDMyQXNJbnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNU
b0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0Nl
bGwoKSAmJiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5n
KCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmlu
Z0ltcGwqIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAg
ICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRW
YWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQorICAg
ICAgICAgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRy
aVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxz
KHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAKICAg
ICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMjgwLDEwIEBAIGlubGlu
ZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IGlzTm90WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1
cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRy
aVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKSA/IFRy
dWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCmluZGV4IDJmZWEyYjViOGVkLi5hYmNlMzRjYWI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgQ29u
c3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYgY29uc3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5n
KCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKQorICAgIGlmIChjZWxs
LT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIGJvb2wg
SlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwg
Y2VsbC0+aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlz
U3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxs
KS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGlkZW50
aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTVmFsdWUg
SlNDZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmlu
Zyo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmpl
Y3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKIH0K
QEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLCBKUwogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVy
KGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+Z2V0UHJpbWl0aXZl
TnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkp
CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVt
YmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhp
cyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogfQpA
QCAtMTg1LDcgKzE4NSw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1N0cmluZyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIGlmIChpc1N5bWJv
bCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVh
cEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0
aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTE5Niw3
ICsxOTYsNyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwogICAgIGlmIChp
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0
aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBp
ZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Jp
Z0ludCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJv
bCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IDJiZWY0YTdkOGVjLi4wNmVkNGU3MDkyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAg
Ly8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgIGJv
b2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OwogICAg
IGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDFjOWQxMzI0OGE5Li44Nzk4YzVhOTc4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjA0
LDkgKzIwNCw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJl
dHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNDZWxsOjppc0Jp
Z0ludCgpIGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzSGVhcEJpZ0ludCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0g
SGVhcEJpZ0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25z
dApAQCAtMzQwLDcgKzM0MCw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xl
YW4oKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4o
KTsKICAgICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmplY3QpKS0+bWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIGlubGlu
ZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlz
KS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwotICAgIGlmIChp
c0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIFRy
dWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4
IDIyYzAxMjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6
dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZvciBO
YU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29sZWFu
KGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCiAgICAgcmV0dXJu
IGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBm
YWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXgg
YjAyYjM0N2Q2YTUuLjgzYmRkOWUxMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNF
KFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkK
KyAgICBDQVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlw
ZSkKICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5cGUpCiAgICAgQ0FTRShOYXRpdmVFeGVjdXRh
YmxlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggNDgzNmY5
MWIwYmIuLjc0ZjMxZmY4MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aApAQCAtMjYsOCArMjYsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIFRoZSBD
ZWxsVHlwZSB2YWx1ZSBtdXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBpcyBhIEpTQ2Vs
bC4KICAgICBDZWxsVHlwZSwKICAgICBTdHJpbmdUeXBlLAotICAgIEJpZ0ludFR5cGUsCi0gICAg
TGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gQmlnSW50VHlwZSwKKyAgICBIZWFwQmlnSW50
VHlwZSwKKyAgICBMYXN0TWF5YmVGYWxzeUNlbGxQcmltaXRpdmUgPSBIZWFwQmlnSW50VHlwZSwK
ICAgICBTeW1ib2xUeXBlLAogCiAgICAgR2V0dGVyU2V0dGVyVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBm
bGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBm
bGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNT
RVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQog
Ci0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1f
ZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApp
bmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBA
IC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJhZjA3Li43NmNjMjUwYjE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTEgKzM2LDYgQEAgYm9v
bCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9i
YWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQot
ewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEs
IHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4
Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03Mywy
MSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhw
MikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9u
LiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVm
dE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJl
c3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdl
dCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VE
X1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorICAgIH07CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcml0aG1ldGljQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjphZGQsIGRvdWJsZU9wLCBiaWdJ
bnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9u
LiJfcykpOwogfQogCiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQpAQCAtMTI4LDcgKzEyNSw3IEBAIGJv
b2wganNJc09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0eXBlID0g
di5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9
PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJp
bmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEhlYXBCaWdJbnRUeXBlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAg
ICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoZ2xvYmFsT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAppbmRleCA0YmJlMjNjMDcyNS4uN2RkZDlkMDUyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMjM5LDYgKzIzOCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9t
UmVnaXN0ZXJBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZQogICAgIHJldHVy
biByb3BlQnVpbGRlci5yZWxlYXNlKCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQgY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHYxLCBKU1ZhbHVlIHByaW1WYWx1ZSkKK3sKKyAg
ICBBU1NFUlQocHJpbVZhbHVlLmlzUHJpbWl0aXZlKCkpOworICAgIEFTU0VSVCghcHJpbVZhbHVl
LmlzQmlnSW50KCkpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChwcmltVmFsdWUu
aXNTdHJpbmcoKSkgeworICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0
cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgICAgICBpZiAoIWJpZ0ludFZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmlu
ZWQ7CisKKyAgICAgICAgaWYgKGJpZ0ludFZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlKHYxLCBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQo
KSk7CisKKyAgICAgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50MzIoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAvLyBGSVhNRTogdXNlIHNvbWV0aGluZyBsZXNzIGhhY2t5LCBl
LmcuIHNvbWUga2luZCBvZiBKU0JpZ0ludDo6Y29tcGFyZVRvSW50MzIKKyAgICAgICAgcmV0dXJu
IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0YXRpY19jYXN0PGRvdWJsZT4oYmlnSW50
VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGRvdWJsZSBu
dW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmlu
ZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBudW1iZXJWYWx1
ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQsIEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJ
bnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKQEAgLTI1NSw1MCArMjgzLDQ3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmICh2
MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21w
YXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKSwg
Y29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
IEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAgICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmco
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmlu
Z1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6
OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRWYWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKLSAg
ICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYx
KSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBhcmlzb25Nb2RlKTsKLQotICAgICAgICBkb3Vi
bGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmln
SW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwg
bnVtYmVyVmFsdWUpLCBjb21wYXJpc29uTW9kZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
ICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChjb21w
YXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQorICAgICAg
ICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDwgdjIuYmlnSW50MzJBc0ludDMyKCk7
CisgICAgICAgIEFTU0VSVChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1v
ZGU6Okxlc3NUaGFuT3JFcXVhbCk7CisgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIo
KSA8PSB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKICAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZSBwcmlt
VmFsdWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNC
aWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVj
dCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisjZW5kaWYKKwor
ICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIEpTQmlnSW50KiB2Mkhl
YXBCaWdJbnQgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBoYXZlIHNvbWUgZmFzdC1pc2ggcGF0
aCBmb3IgYSBjb21wYXJpc29uIGJldHdlZW4gYSBzbWFsbCBhbmQgYSBsYXJnZSBiaWctaW50Cisg
ICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hl
YXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQz
MigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjEu
YmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkp
CisgICAgICAgIHYySGVhcEJpZ0ludCA9IHYyLmFzSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHYySGVhcEJpZ0lu
dCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5k
aWYKKworICAgIGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFwQmlnSW50KQorICAgICAgICByZXR1
cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBCaWdJbnQsIHYy
SGVhcEJpZ0ludCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQpIHsK
KyAgICAgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYyKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KEpTQmlnSW50Ojpjb21wYXJlKGJpZ0ludFZhbHVlLCBhc0JpZ0ludCh2MikpLCBjb21wYXJp
c29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25S
ZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6
Y29tcGFyZShhc0JpZ0ludChwcmltVmFsdWUpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9k
ZSk7Ci0gICAgCi0gICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCisg
ICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJbnQsIHYxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgLy8gSGVyZSB3ZSBjaGVjayBpbnZlcnRlZCBiZWNhdXNlIEJp
Z0ludCBpcyB0aGUgdjIKLSAgICBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29u
UmVzdWx0ID0gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MiksIG51bWJlclZh
bHVlKTsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2Rl
OjpMZXNzVGhhbikKICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOwotCiAgICAgcmV0dXJuIGNvbXBhcmlzb25S
ZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIHx8IGNvbXBh
cmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCkBA
IC0zNTcsNyArMzgyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8
IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcy
KSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0
LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3
LDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2Fz
Tm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsK
ICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAx
LCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAt
NDUyLDcxICs0NzcsMzQ5IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpz
QWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94ZWQsIGFu
ZCByZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBlbmFtZSBI
ZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJp
Z0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJ
bnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBC
aWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Zh
bHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVtZXJpYy5p
c051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNO
dW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFzTnVt
YmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJ
bnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmljLmJpZ0lu
dDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJ
bnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBs
ZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAgICBpZiAo
cmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVm
dEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFw
QmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVh
cEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1l
cmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVh
cEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CisjZWxzZQor
ICAgICh2b2lkKSBiaWdJbnQzMk9wOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQo
KSAmJiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFw
QmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsK
K30KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAt
IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBh
dXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1Zh
bHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3Jk
T3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdodDsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0
KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0Jp
bmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6c3ViLCBkb3VibGVPcCwgYmln
SW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFj
dGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNNdWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCAqPSByaWdodDsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNP
dmVyZmxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmln
aHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAg
fTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKworQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUg
bGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAvIHJp
Z2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50
MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
IXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAgICAg
IFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICBy
ZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6
ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUg
cmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Cisg
ICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNW
YWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4K
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0
aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91
YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91Ymxl
IHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07
CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUg
eworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0
IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAg
ICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9u
IGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAg
cmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6
OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5l
eHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIg
ZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1
ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xv
YmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0g
di50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJl
dHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcg
bmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBl
ciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1Zh
bHVlKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRlYyhn
bG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkpOwor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVt
ZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVt
ZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0Jp
Z0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBzaGlmdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBib29sIGlzTGVmdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51
bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGxlZnROdW1lcmlj
ID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByaWdodE51
bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwor
ICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkg
eworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAg
ICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOwor
ICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQz
MikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIo
cmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmlj
LmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlu
dDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAg
IGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAg
ICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0
OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQg
cmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEg
c2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUg
Yml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+
IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
YSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0
aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUg
dG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQg
ZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxl
ZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAg
ICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVh
cEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJp
Z0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0
TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAg
ICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBjYXNlIGZv
ciBsZWZ0IGlzIEhlYXBCaWdJbnQgYW5kIHJpZ2h0IGlzIEJpZ0ludDMyLCBpdCBzZWVtcyBmYWly
bHkgbGlrZWx5IHRvIG9jY3VyIGZyZXF1ZW50bHkuCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpT
QmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0g
cmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFw
QmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpCit7CisgICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxP
YmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RG
OjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFs
dWUgKiByaWdodFZhbHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJv
b2wgaXNMZWZ0ID0gZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYy
LCBpc0xlZnQpOwogfQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4K
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYm
IGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVG
cmVlQ2VsbHMoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9
IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCks
IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
bGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkp
OworICAgIC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQs
IGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVz
ZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBz
bWFsbCBiaWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8g
QnV0IGl0IGlzIHF1aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2Ug
YSBzaWduIGJpdCB3aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRp
b24uCisjZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHRO
dW1lcmljLmlzQmlnSW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBK
U0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVm
dE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9
IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmln
aHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KTsKKyNlbHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJp
Yy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQp
KTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJh
ZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50
MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAg
ICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVu
dGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBh
bmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpT
VmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2Miwg
SlNCaWdJbnQ6OmJpdHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5l
IGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNW
YWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAg
YXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJf
dCB7CisgICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1F
OiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhl
ICJvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9u
IHRoZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1p
bmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGln
bmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAg
ICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29k
ZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRv
IGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsK
KyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1
cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhv
ciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRo
ZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhl
IGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4i
X3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKaW5kZXggNWZhNzAxM2NiN2YuLmYxNmMwMmE3NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNzksNyArMjc5LDcgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBTdHJpbmdUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQ
cm90b3R5cGUoKTsKICAgICAKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9
PSBCaWdJbnRUeXBlKQorICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhl
YXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5
cGUoKTsKIAogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJv
bFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDY5ZTUyZWE2Njdj
Li44NTIyMjg5YjFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNTAx
LDcgKzUwMSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICAgICAgc2VudGluZWxNYXBCdWNrZXQoKTsKICAgICAgICAgc2VudGluZWxTZXRCdWNrZXQoKTsK
ICAgICB9Ci0gICAgYmlnSW50Q29uc3RhbnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSgqdGhpcywgMSkpOworICAgIGhlYXBCaWdJbnRDb25zdGFudE9uZS5zZXQoKnRoaXMsIEpT
QmlnSW50OjpjcmVhdGVGcm9tKCp0aGlzLCAxKSk7CiAKICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5z
ZXRDdXJyZW50QXRvbVN0cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlBdG9tU3RyaW5nVGFibGUpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOWU5OGQ1M2M1M2EuLjQwMWRh
NmZmODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTczMSw3ICs3MzEsNyBA
QCBwdWJsaWM6CiAgICAgQXRvbVN0cmluZ1RhYmxlKiBhdG9tU3RyaW5nVGFibGUoKSBjb25zdCB7
IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5
bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdpc3RyeTsgfQogCi0gICAgU3Ryb25n
PEpTQmlnSW50PiBiaWdJbnRDb25zdGFudE9uZTsKKyAgICBTdHJvbmc8SlNCaWdJbnQ+IGhlYXBC
aWdJbnRDb25zdGFudE9uZTsKIAogICAgIFN0cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmUo
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCAxOWIxOTFhNmQ2Yi4uNTA3ZjQyNDJlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKQEAgLTIxODcsNyArMjE4Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUoSlNHbG9iYWxPYmpl
Y3QqIGdsCiAgICAgdWludDhfdCogdm1TdGFja0VuZCA9IHZtU3RhY2tTdGFydCAtIG9yaWdpbmFs
TWF4UGVyVGhyZWFkU3RhY2tVc2FnZTsKICAgICBwdHJkaWZmX3Qgc2l6ZURpZmYgPSB2bVN0YWNr
RW5kIC0gZW5kOwogICAgIFJFTEVBU0VfQVNTRVJUKHNpemVEaWZmID49IDApOwotICAgIFJFTEVB
U0VfQVNTRVJUKHNpemVEaWZmIDwgVUlOVF9NQVgpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihzaXplRGlmZikgPCBVSU5UX01BWCk7CiAKICAgICBPcHRpb25zOjpt
YXhQZXJUaHJlYWRTdGFja1VzYWdlKCkgPSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2Ug
KyBzaXplRGlmZjsKICAgICBoZWxwZXIudXBkYXRlVk1TdGFja0xpbWl0cygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1M2Ex
MDBmNTYxMy4uM2MwZWVlZmFmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDIgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFu
IGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmln
SW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFnLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6
CisKIDIwMjAtMDQtMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wbGVtZW50IDFHQiBvZiBleGVjdXRhYmxlIG1lbW9yeSBvbiBhcm02NApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKaW5kZXggM2Y4M2Y2NmMwZjIuLmU0YjU3NGRmYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgK
QEAgLTEzOSw2ICsxMzksMTAgQEAKICNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9KU1ZB
TFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQpICovCiAKKyNpZiBVU0UoSlNWQUxV
RTY0KQorI2RlZmluZSBVU0VfQklHSU5UMzIgMQorI2VuZGlmCisKIC8qIEZJWE1FOiBUaGlzIG5h
bWUgc2hvdWxkIGJlIG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGggQ2Fs
bEZyYW1lKiAqLwogLyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBDYWxs
RnJhbWUqICovCiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8
IENQVShYODZfNjQpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395617</attachid>
            <date>2020-04-06 14:12:41 -0700</date>
            <delta_ts>2020-04-08 23:34:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>402369</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTBkMmE0ZjUzZTMuLjdkNzcwZGU3OTA0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wNC0wNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhlIERGRwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2MzEuLjNiNTZjODU4YjI4
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTE0LDcgKzE0LDcgQEAgYXNzZXJ0
LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKIH0KIAog
ZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZSh4IC8geSwg
eiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh4IC8g
eSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1dCBzaG91bGQgYmUgIiAr
IHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkVEQ0JBOTg3NjU0MzIx
MG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0
LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3Jh
cHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2JhNDEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVlLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVlLmpzCkBAIC0z
LDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0LCBl
eHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9IGV4cGVjdGVkOiAiICsg
ZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90Lmpz
CmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxv
Z2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKIAotZnVu
Y3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBuKSB7CiAgICAgaWYg
KGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIgKyBuKTsKICAgICB9CiB9
CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChhKSB7CiBub0lubGluZShs
b2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgIGFz
c2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgxbiks
IGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUpOwotICAgIGFzc2VydChs
b2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxMG4pLCBmYWxz
ZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNlLCAxbik7CisgICAgYXNz
ZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoLTFu
KSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwppbmRleCA4MWM1
ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1vZC1qaXQuanMKQEAgLTI1
LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAKIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9kRm9sZGluZygxMCwgMzAp
OwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAgKyAiICUgIiArIDMwICsg
IikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAsICJbTnVtYmVyXSAtKCIg
KyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0IHIgPSBiaWdJbnRNb2RG
b2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEwbiwgIi0oIiArIDEwbiAr
ICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZhbHVlKHIsIC0xMG4sICJb
QmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiArIHIpOwogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKaW5kZXggNGU1OGNhNjA3
NDAuLmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0
LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlm
dC1nZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcg
Sm9zaCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5l
ZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vIE1vZGlm
aWVkIGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsK
LSAgICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOwor
ZnVuY3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZh
ciByZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1
bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAot
YXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsK
LSAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVz
c2FnZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEw
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgw
YjEwMW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgw
biwgLTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRl
c3RSaWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgy
NDZuLCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgy
NDZuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAg
dGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4s
IDEyOW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC01biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7Cisg
ICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4s
IDNuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0x
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAt
MTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgy
NDZuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4s
IC0weDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVW
YWx1ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
MGIxMDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09
PSAwYjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4s
ICIwYjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFu
ID4+IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoMGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEy
OG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0x
MjhuID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIw
eDI0Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
LTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAw
biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4g
PT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNz
ZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAi
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJu
LAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9
PT0gMHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4g
Pj4gLTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4s
ICItNW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwg
LTB4MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+
PiAxbiwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+
IDJuLCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4g
M24sIC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAt
MTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4
biA9PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgy
NDZuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgy
NDZuID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICIt
MHgyNDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0
Nm4gPj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAt
NjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAw
MDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IC02NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAw
MDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwK
LSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAx
MjhuLCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEy
Y24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5
biA9PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
dHlwZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1w
cm92ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRmZDYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMKQEAgLTEsOCArMSw4IEBA
CiAvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9
ZmFsc2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBhc3NlcnQoaW5wdXQsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5jdGlvbiBmb28obykgewpA
QCAtMTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9JbmxpbmUoZm9vKTsKIAogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGZvbygzbikgPT09ICIz
Iik7CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBh
cmUtbnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4uODI1ZTg1ZDZiNjEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIuanMKQEAgLTU5LDE3ICs1
OSwxNyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsKICAgICAgICAgICAgIG5v
SW5saW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KTsKIAog
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgICAgICAgICAg
ICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9
KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGlj
JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQog
ICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpYyR7dGVzdENh
c2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1v
bm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT0gJHtsbGlu
dFJlc3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFu
dCR7dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rl
c3RDYXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9y
cGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0pICE9ICR7bGxpbnRSZXN1
bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNSaWdodENvbnN0YW50JHt0
ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAg
ICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2Fz
ZUluZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RQb2x5bW9ycGhpYygk
e2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9KSI7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0sICR7b3Bl
cmF0b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50UmVzdWx0fSkiOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICArK3Rlc3RDYXNlSW5kZXg7
CiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBl
cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMu
anMKaW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTgzLDcgKzgz
LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3Jp
Z2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAg
IiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVxdWFs
T3V0cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVmdENhc2VJ
bmRleF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkzLDcgKzk0LDggQEAgZnVu
Y3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJp
Z2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUlu
ZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTog
IiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0
bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4
OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHku
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAg
LTMwLDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZh
ciByZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9
IGluZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09
IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4
cGVjdGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlz
c2luZy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVh
N2Q3M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3Npbmct
ZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEs
OCBAQAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdh
YScpOworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdh
YScpOwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJv
cGUKKyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI1N2EwMjc2YjNiLi40ZjhlYjU3
ZTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc3LDYgKzk3Nyw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmgKICAgICBydW50aW1lL1Njb3BlT2Zmc2V0LmgKICAgICBy
dW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKKyAgICBydW50aW1lL1NjcmliYmxlLmgKICAg
ICBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggMmEzZmMyMzI1MmUuLjFmOGI2NTRmOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzODcgQEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlz
c2V0QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRp
b24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0
byBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFs
bCAoMzIgYml0IG9yIGxlc3MpLgorICAgICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGlu
dG8gSlNWYWx1ZSBvbiA2NC1iaXQgcGxhdGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBv
ZiBhIEpTQmlnSW50LgorICAgICAgICBUaGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhY
WDpYWFhYOjAwMTIKKyAgICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9m
IHRoZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3
aXRoIGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0
byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25m
dXNlZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQg
dG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNl
IGJlY2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNv
bmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisK
KyAgICAgICAgVGhpcyBlbnRpcmUgY2hhbmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRv
IG1ha2UgaXQgZWFzaWVyIHRvIGRpc2FibGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4K
KyAgICAgICAgSXQgc2hvdWxkIGFsc28gbWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYg
YSBnaXZlbiBidWcgY29tZXMgZnJvbSBpdCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAg
ICAgIE5vdGUgdGhhdCBpbiB0aGlzIHBhdGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMg
d2hlbiBwYXJzaW5nIEJpZ0ludCBjb25zdGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4g
QWRkIG9yIEJpdE9yKSBwcm9kdWNlIGEgQmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5k
cyBhcmUgQmlnSW50MzIsCisgICAgICAgIGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIg
ZnJvbSBmb3IgZXhhbXBsZSB0aGUgc3Vic3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBo
ZWFwLWFsbG9jYXRlZCBKU0JpZ0ludHMsIGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJp
dHMuCisgICAgICAgIEFzIGEgcmVzdWx0LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJl
IGhlYXAtYWxsb2NhdGVkIG9yIGlubGluZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbmNsdWRlcyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBw
YXRocywgd2hpY2ggYXJlIG5vdyBncm91cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAg
ICAgICBCZWNhdXNlIHRoaXMgaW5jcmVhc2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWdu
aWZpY2FudGx5LCBJIHNwbGl0IHRoZSBwYXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9u
bHkgdXNlZCBieSB0aGUgR0MgaW50byBTY3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21w
aWxlIHRpbWVzLgorCisgICAgICAgIEluIHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVz
ZUtpbmRzIGZvciBCaWdJbnRzOiBIZWFwQmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55Qmln
SW50VXNlLgorICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIG5vdyB0aGF0IHdl
IGFyZSByZWNlaXZpbmcgQmlnSW50cywgYnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBv
ZiBoZWFwLWFsbG9jYXRlZCBhbmQgc21hbGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAg
IFVuZm9ydHVuYXRlbHksIGEgbmFpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWdu
aWZpY2FudGx5IHJlZ3Jlc3NlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMg
dmFyaWFudHMpLCBhcyBpdCBpcyBubyBsb25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24t
Y2VsbCBjYW5ub3QgYmUgZXF1YWwuCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29k
ZSB3YXMganVtcGluZyB0byBhIHNsb3cgcGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVh
c3Qgb25lIG9wZXJhbmQgaXMgYSBkb3VibGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFy
ZSBjZWxscworICAgICAgICBOb3csIGl0IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBw
YXRoIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBw
ZXJmb3JtYW5jZSBjb3N0LCBJIHNpZ25pZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20K
KyAgICAgICAgICBpZiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAg
ICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQg
aXMgSW50MzIpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAg
ICAgZ290byBzbG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJ
bnQzMikgeworICAgICAgICAgICAgaWYgKHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAg
Z290byBzbG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdo
dAorICAgICAgICBUbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJs
ZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAg
ICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aAorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMg
dG8gYmUgZmFzdGVyIHRoYW4ganVzdCByZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBp
cyBDZWxsKSBieSBhbiB8fCwgYmVjYXVzZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChs
ZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVj
ZSB0aGUgcHJlc3N1cmUgb24gdGhlIGJyYW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpl
dFN0cmVhbTIgdGVzdHMgYXBwZWFyIHRvIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdo
bHkgbmV1dHJhbCB3aGlsZSBpdCB3YXMgYSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0
aGlzIHRyaWNrLCBidXQgdGhlIG51bWJlcnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRv
IGRvIG1vcmUgbWVhc3VyZW1lbnRzIGJlZm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgSSBkb24ndCB5ZXQgaGF2ZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9u
IGEgQmlnSW50IGJlbmNobWFyaywgSSB3aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWlu
ZyB0byBsYW5kIGl0LCBidXQgSSdkIGxpa2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3Jp
dGVyOjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVt
aXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29u
c3QpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9B
cml0aFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZl
Tm9uSW50MzIpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJ
bnQpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50
KToKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlND
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3Bl
Y3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVj
dWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6
CisgICAgICAgIChKU0M6OmxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3Vs
YXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAo
SlNDOjppc0JpZ0ludDMyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cFRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051
bWVyaWMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25O
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RF
cUFuZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAq
IGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRl
QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBC
aWdJbnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1l
cmljKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJ
bnRFcXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kOjplZGdlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQ6Om5vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6OnVzZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJ
bnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50
MzJDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlQmlnSW50MzJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6
CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5
cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29t
bW9uVmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9u
VmFsdWVzLmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNo
aWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRo
Qml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUFyaXRoQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVZhbHVlQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUJpdFVSU2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpsb3dIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6bG93QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjppc0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNOb3RCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OnVuYm94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpi
b3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90
QW55QmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3Vs
YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmln
SW50VW5rbm93bldoZXRoZXJDZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6aXNOb3RIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6aXNIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAg
ICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29t
cGlsZVN0dWIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFy
YXJncyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2Vt
Ymx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJL
bm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZO
b3RCaWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZkhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJy
YW5jaElmTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5i
b3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX25lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6
Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVx
SnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X2JpZ19pbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAg
ICAgICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6Y2FsbEJpZ0ludENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0lu
dE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9CaWdJbnRPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OnRvVGhpc0JpZ0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50
UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBk
YXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJp
dGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5j
cHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5n
VG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OmRlYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAg
ICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpT
QmlnSW50OjplcXVhbHNUb051bWJlcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNU
b0ludDMyKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFz
SGVhcEJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0
b1RoaXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNz
dW1pbmdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFj
a3RyYWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hl
YXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNQcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVy
aWMgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFs
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Q
cmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRv
Qm9vbGVhbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0
VHlwZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChK
U0M6OmNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50
Q29tcGFyZSk6CisgICAgICAgIChKU0M6OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0Vx
KToKKyAgICAgICAgKEpTQzo6YXJpdGhtZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNT
dWIpOgorICAgICAgICAoSlNDOjpqc011bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAg
ICAgKEpTQzo6anNSZW1haW5kZXIpOgorICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChK
U0M6OmpzSW5jKToKKyAgICAgICAgKEpTQzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdp
c2VOb3QpOgorICAgICAgICAoSlNDOjpzaGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToK
KyAgICAgICAgKEpTQzo6anNSU2hpZnQpOgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3Ap
OgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VP
cik6CisgICAgICAgIChKU0M6OmpzQml0d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3Jp
YmJsZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRP
YmplY3QuaC4KKyAgICAgICAgKEpTQzo6c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlND
Ojppc1NjcmliYmxlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JM
b29rdXBQcmltaXRpdmVJbXBsKToKKwogMjAyMC0wNC0wNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0
aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBj
YWNoZWQgaW4gdGhlIERGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNjUzOTVh
ZDBmZi4uMjA4NjBhOGFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYs
NiArODY2LDcgQEAKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25T
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFE
ODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQky
QUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3Jp
Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVC
QTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENF
IC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBC
REJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWlu
YXRlRGVhZENvZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1v
blNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxp
bmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MzNCMkE1NDcyMjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRGQjFCREFDREFDMDA4MEZG
NzQgLyogQjNWYWx1ZUlubGluZXMuaCAqLzsgfTsKQEAgLTM1MTEsNiArMzUxMiw3IEBACiAJCTJB
RjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21T
aWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21T
aWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhB
MjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcg
LyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBi
My9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFz
c29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3Nv
Y2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0
MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0g
YjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NTU2LDYgKzc1NTgsNyBAQAogCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29w
ZWRBcmd1bWVudHNUYWJsZS5oICovLAogCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZU9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
T2Zmc2V0LmggKi8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmgg
Ki8sCiAJCQkJMTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3Bw
ICovLAogCQkJCTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmgg
Ki8sCiAJCQkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywK
QEAgLTg5MjEsNiArODkyNCw3IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMg
LyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIx
REI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9y
Rm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAppbmRleCBjMTAwMjQwNGVmNi4uMzU3ODY4M2I1OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtNDY5
OCw3ICs0Njk4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBJbW1lZGlhdGVzOgogICAgICAg
ICAvLwotICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFw
cHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCisgICAgICAgIC8vIEFuIGlt
bWVkaWF0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0ZXIgYW4gb3Ag
aGFzIGJlZW4gZW1pdHRlZC4KICAgICAgICAgLy8gVGhlIHdyaXRlcyBhcmUgdW5jaGVja2VkIHNp
bmNlIHRoZSBvcGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3aWxsIGhhdmUgZW5zdXJlZCBzcGFjZS4K
IAogICAgICAgICB2b2lkIGltbWVkaWF0ZTgoaW50IGltbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggZmVhNjY3NDViNjIuLmYyYzA1
ODRkNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9m
aWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVn
cyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3Mg
cmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKLSAgICBpZiAo
IXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAh
c2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYm
ICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgp
ICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTggQEAgdm9pZCBBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQs
IEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RCaWdJbnQzMiA9IGppdC5icmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1pdFNldEJpZ0lu
dDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90QmlnSW50MzIu
bGluaygmaml0KTsKKyNlbHNlCisgICAgKHZvaWQpIHRlbXBHUFI7CisjZW5kaWYKKwogICAgIG5v
bk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5v
bk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkp
OwotICAgIGVtaXRTZXRCaWdJbnQoaml0KTsKKyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBC
aWdJbnQoaml0KTsKICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVy
aWMubGluaygmaml0KTsKQEAgLTg4LDE5ICs5NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6Qmln
SW50MzI7CisgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJ
bnQoKSBjb25zdAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpC
aWdJbnQ7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJ
bnQ7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0
CiB7Ci0gICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0
aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVt
aXRTZXRIZWFwQmlnSW50KCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2Jz
ZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBs
YXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlw
ZT46OmVtaXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAo
c2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGpp
dCwgT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQml0ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1p
dFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBj
b25zdAogewpAQCAtMTQ5LDggKzE3OCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0
LnByaW50KHNlcGFyYXRvciwgIkludDUyT3ZlcmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRv
ciA9ICJ8IjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50
KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0
LnByaW50KHNlcGFyYXRvciwgIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9
ICJ8IjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAg
ICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdj
MWZlNzEzYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAg
ICAgICA9IDEgPDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAg
ICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9
IDEgPDwgNSwKKyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmln
SW50MzIgICAgICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgbnVtQml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBu
dW1CaXRzTmVlZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAg
ICBleHBsaWNpdCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0
cyhiaXRzKQogICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVy
biBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmlj
IHwgQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9i
aXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhl
YXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJl
dHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5l
Z1plcm9Eb3VibGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1
cm4gbV9iaXRzICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVy
aWMoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAg
ICBib29sIGRpZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0lu
dDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmln
SW50MzI7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9i
aXRzICYgSW50MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSB7IHJldHVybiBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2
IEBAIHB1YmxpYzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyBy
ZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3Vs
dHMoKS5kaWRPYnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9
CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVC
aWdJbnQzMigpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJ
bnQzMigpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBi
b29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1
bHRzKCkuZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZl
ZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9E
b3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChP
YnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5v
bk51bWVyaWMoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAg
dm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRS
ZXN1bHRzOjpIZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsg
c2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZl
ZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cp
OyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZl
ZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8
IE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVn
WmVyb0RvdWJsZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQo
KSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAg
ICAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2Jz
ZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAg
IG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVt
ZXJpYzsKQEAgLTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJs
ZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25O
dW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVz
dWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBK
U1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVn
aXN0ZXJzKTsKIAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNl
dERvdWJsZSgpIGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKIAotICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQg
ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3Vs
ZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVt
aXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBl
bWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0Owog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC0xNzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0
aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CiBjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1Ymxp
YyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVt
Qml0c05lZWRlZDsKIAotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBP
YnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZp
ZWxkLiIpOworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4
LCAiU2hvdWxkIGZpdCBpbiB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2Jz
ZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigw
YjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xh
c3MgQmluYXJ5QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFBy
b2ZpbGVCYXNlPiB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxo
c09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0g
c2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50
MzJfdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRoZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3Rh
dGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNf
YXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywg
IlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzcGVjaWFsRmFzdFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVk
VHlwZUJpdE1hc2spKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNp
YWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGMuLjQ4
Yjc4NzBlY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTMyNyw2ICszMjcsNyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAg
OmlzX3VuZGVmaW5lZF9vcl9udWxsLAogICAgICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlz
X251bWJlciwKKyAgICAgICAgOmlzX2JpZ19pbnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAg
ICAgIDppc19vYmplY3Rfb3JfbnVsbCwKICAgICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE3NCw2ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwo
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJ
c1VuZGVmaW5lZE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5k
KQogICAgIFVTRVMoT3BJc051bWJlciwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9w
ZXJhbmQpCiAgICAgVVNFUyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVj
dE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBA
IC00MjMsOSArNDI0LDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1
bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElk
ZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAg
IERFRlMoT3BJc1VuZGVmaW5lZCwgZHN0KQotICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwg
ZHN0KQorICAgIERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jv
b2xlYW4sIGRzdCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJ
bnQsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RP
ck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYTFhZDM3NjY5YWYuLjY2
MDNkZWE2NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCmluZGV4IDMyZjU4OGRiZmY2Li4yMDc1ZGE3MDU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBA
QCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUs
CiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAg
ICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsCisgICAgRGF0
YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRhRm9ybWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZvcm1hdEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8
IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAorICAgIERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0
YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0ludDMyLAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5h
dGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMgYW5kIE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAg
ICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIsIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44MzBmNmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpl
bWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0
Cit2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2Ug
Tm9uZToKQEAgLTY3LDEyICs2NywxMiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUu
dW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZl
VGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVS
ZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlB
cml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVn
aXN0ZXJzKTsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0
KGppdCwgcmVncywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUluZGV4LmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJh
bmRzLmgiCisjaW5jbHVkZSAiVGFnUmVnaXN0ZXJzTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtODMsNyArODQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRS
ZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhl
IHRlbXBvcmFyeSByZWdpc3RlciBpcyBvbmx5IG5lZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9y
IHRlc3RpbmcgQmlnSW50MzIpLgorICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVU
YWdSZWdpc3RlcnMpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAppbmRleCAxMDUzYmE1MmI1NC4uNzcxYzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSAr
MjM5LDYgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNCaWdJbnQpCi0gICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBpZiAodmFsdWUgPT0gU3BlY0ludDMyT25seSkKQEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBk
dW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAg
IAorCisgICAgaWYgKCh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IFNwZWNCaWdJbnQpCisgICAgICAg
IHN0ck91dC5wcmludCgiQmlnSW50Iik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2Ugewor
ICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50MzIpCisgICAgICAgICAgICBzdHJPdXQucHJp
bnQoIkJpZ0ludDMyIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7
CisKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0hlYXBCaWdJbnQpCisgICAgICAgICAgICBzdHJP
dXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1
cmVOYU4pCiAgICAgICAgIHN0ck91dC5wcmludCgiRG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBA
IC00MzEsNyArNDQyLDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZv
KGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsK
ICAgICAKICAgICBpZiAoY2xhc3NJbmZvID09IEpTQmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJl
dHVybiBTcGVjQmlnSW50OworICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBp
ZiAoY2xhc3NJbmZvID09IEpTRmluYWxPYmplY3Q6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNw
ZWNGaW5hbE9iamVjdDsKQEAgLTQ5OSw4ICs1MTAsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxh
dGlvbkZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBT
cGVjU3RyaW5nOwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJv
bFR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpID09IEJpZ0ludFR5cGUpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50
OworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBl
KQorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gRGVyaXZlZEFycmF5VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNE
ZXJpdmVkQXJyYXk7CiAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpKTsKQEAgLTUzNiw2ICs1NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVj
dWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNB
bnlJbnRBc0RvdWJsZTsKICAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9
CisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQz
MjsKICAgICBpZiAodmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZy
b21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01
OTUsOCArNjA4LDggQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpT
VHlwZShKU1R5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBT
eW1ib2xUeXBlOgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5
cGU6Ci0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6
CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIEFycmF5VHlwZToKICAg
ICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBjYXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02
MzIsNiArNjQ1LDEwIEBAIFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlF
cXVpdmFsZW50U3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAm
IFNwZWNTdHJpbmcpCiAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKKworICAgIGlmICh0eXBl
ICYgU3BlY0JpZ0ludCkKKyAgICAgICAgdHlwZSB8PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJu
IHR5cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKaW5kZXggNWRiMThjNjQ4MmQuLmRmMGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwx
NCBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8CiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAv
LyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBi
b29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRU
eXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0g
MXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBCaWdJbnQgICAgICAgICAgICAgICAgICAgICAg
ICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9j
YXRlZCBvbiB0aGUgaGVhcAorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmln
SW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgc21hbGwgQmlnSW50IHRoYXQgaXMgaW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBTcGVjQmlnSW50MzIgfCBTcGVjSGVhcEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1
bGwgPDwgNDM7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNj
IHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9uLU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5
cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMg
fCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwg
U3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2JqZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNX
ZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmplY3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVj
RGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVyIHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBC
aXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9u
Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwg
U3BlY0NlbGxPdGhlciB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4K
LXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7
IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkg
YW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3Bl
Y1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3Bl
Y0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJ
bXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRv
cCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3Bl
Y0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMgdG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBh
IGJ5dGVjb2RlIGxvY2FsLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVs
bFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1
bGxOdW1iZXI7IC8vIEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBw
bHVzIGV4b3RpYyBlbmNvZGluZ3Mgb2YgbnVtYmVycy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBp
bmxpbmUgYm9vbCBpc1N5bWJvbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjU3ltYm9sOwogfQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMy
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09
IFNwZWNCaWdJbnQzMjsKK30KKworaW5saW5lIGJvb2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmln
SW50OworfQorCiBpbmxpbmUgYm9vbCBpc0JpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50OworICAgIHJldHVybiAh
IXZhbHVlICYmICh2YWx1ZSAmIFNwZWNCaWdJbnQpID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9v
bCBpc0FycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGEwMWQ0N2Q3ZGMwLi5jY2Q2ZDc5NTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE2
NzUsNyArMTY3NSwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcElt
cGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJpZ0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQi
KSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxX
aXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEJpZ0ludFR5cGUpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBPcElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwg
b3AubV92YWx1ZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVt
aXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBIZWFwQmlnSW50VHlwZSk7CisjZW5kaWYKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2
YWx1ZSA9PSAib2JqZWN0IikgewpAQCAtMjg4Myw3ICsyODg3LDcgQEAgSlNWYWx1ZSBCeXRlY29k
ZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
ciwgdWludDgKICAgICByZXR1cm4gbV9iaWdJbnRNYXAuZW5zdXJlKEJpZ0ludE1hcEVudHJ5KGlk
ZW50aWZpZXIuaW1wbCgpLCByYWRpeCwgc2lnbiksIFsmXSB7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKCkpOwogICAgICAgICBhdXRvIHBhcnNlSW50U2lnbiA9
IHNpZ24gPyBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpTaWduZWQgOiBKU0JpZ0ludDo6UGFyc2VJ
bnRTaWduOjpVbnNpZ25lZDsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludEluTWFwID0gSlNCaWdJ
bnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBK
U0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsK
KyAgICAgICAgSlNWYWx1ZSBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRy
LCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VN
b2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CiAgICAgICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIGFkZENvbnN0YW50VmFsdWUoYmlnSW50SW5NYXApOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODUuLjBhMDAzYjhmNmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CkBAIC0xMDg5LDcgKzEwODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1c2luZyBO
dW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIElkZW50
aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJ
ZGVudGlmaWVyUmVwSGFzaD47Ci0gICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBI
YXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0ludCo+OworICAgICAgICB1c2luZyBJZGVudGlm
aWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNWYWx1ZT47CiAgICAgICAg
IHVzaW5nIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNldCA9IEhhc2hTZXQ8UmVmPFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcj4+OwogICAgICAgICB1c2luZyBUZW1wbGF0ZURlc2NyaXB0b3JNYXAg
PSBIYXNoTWFwPHVpbnQ2NF90LCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciosIFdURjo6SW50
SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDc3MWQ5MmU4MjM5Li4wMTI2MTVjYTYyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJOdW1i
ZXJDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlQ2FjaGUuaCIKQEAgLTIxNSw3ICsyMTQsNyBAQCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9U
aGlzQW5JZGVudGl0eShWTSYgdm0sIGJvb2wgaXNTdHJpY3RNb2RlLCBBYnN0cmFjdFZhbHVlJgog
ICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5v
ZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
IHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmlu
Z1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJ
bnRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBl
KCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlw
ZSgpID09IEhlYXBCaWdJbnRUeXBlKTsKICAgICAgICAgICAgIGlmICghaXNTdHJpY3RNb2RlKQog
ICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5jZSBl
aXRoZXI6CkBAIC01MDMsNyArNTAyLDEyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBT
cGVjQmlnSW50MzIpOworICAgICAgICAgICAgQVNTRVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAg
IH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAg
ICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTUzMyw3ICs1MzcsMTMgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50QmluYXJ5Qml0d2lz
ZU9wKG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBi
aW5hcnlVc2VLaW5kIG1lYW5zIHRoYXQgd2UgY2Fubm90IHNwZWNpYWxpemUgdG8gKGZvciBleGFt
cGxlKSBhIEhlYXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJh
bmQuCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsK
KyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisgICAgICAg
ICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OwpAQCAtNzIzLDExICs3MzMsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNh
c2UgVmFsdWVTdWI6CiAgICAgY2FzZSBWYWx1ZUFkZDogewotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAgICAgICBpZiAobm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3Bl
Y0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAg
ICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAg
ICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5IG5lZWQgU3BlY1N0cmluZyBoZXJlIGZvciBW
YWx1ZVN1Yj8gSXQgc2VlbXMgbGlrZSB3ZSBvbmx5IG5lZWQgaXQgZm9yIFZhbHVlQWRkLgogICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY1N0cmluZyB8IFNwZWNCeXRlY29kZU51
bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg3LDYg
KzkwMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIFZhbHVlTmVnYXRlOiB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBtdWNoIHNt
YXJ0ZXIgdGhpbmdzIGZvciBCaWdJbnRzLCBzZWUgVmFsdWVBZGQvVmFsdWVTdWIuCiAgICAgICAg
IGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgYnJlYWs7CkBAIC05NTksNyArOTczLDEx
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgog
ICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIHR5cGVPZkRvdWJsZUluY09y
RGVjKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6Cisg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmln
SW50MzJVc2U6CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtOTc1LDcgKzk5Myw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEpTVmFsdWUgY2hpbGRZID0gZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkWCAmJiBjaGlsZFkg
JiYgY2hpbGRYLmlzTnVtYmVyKCkgJiYgY2hpbGRZLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAg
IC8vIFdlIG5lZWQgdG8gY2FsbCBgZGlkRm9sZENsb2JiZXJXb3JsZGAgaGVyZSBiZWNhdXNlIHRo
aXMgcGF0aCBpcyBvbmx5IHBvc3NpYmxlCi0gICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtp
bmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQmlnSW50VXNlLCBjaGlsZHJlbiB3aWxs
IGJlCisgICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4g
dGhlIGNhc2Ugb2YgQW55QmlnSW50VXNlIG9yIGZyaWVuZHMsIGNoaWxkcmVuIHdpbGwgYmUKICAg
ICAgICAgICAgIC8vIGNsZWFyZWQgYnkgYEFic3RyYWN0SW50ZXJwcmV0ZXI6OmV4ZWN1dGVFZmZl
Y3RzYC4KICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgIC8v
IE91ciBib3hpbmcgc2NoZW1lIGhlcmUgbWF0Y2hlcyB3aGF0IHdlIGRvIGluIG9wZXJhdGlvblZh
bHVlUG93LgpAQCAtOTgzLDcgKzEwMDEsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hl
YXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55
QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAg
ICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtOTkzLDcgKzEwMTMsMTAgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAKICAgICBjYXNlIFZhbHVlTXVsOiB7Ci0gICAgICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhN
RTogd2h5IGlzIHRoaXMgY29kZSBub3Qgc2hhcmVkIHdpdGggVmFsdWVTdWI/CisgICAgICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNl
dFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVj
QmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAg
LTEwNTcsNyArMTA4MCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmICho
YW5kbGVDb25zdGFudERpdk9wKG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVG
b3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEzODEs
NiArMTQwNiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBJc1VuZGVmaW5l
ZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNh
c2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVj
dDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtMTQwOSw2ICsxNDM1LDkgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNOdW1iZXIo
KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc0JpZ0ludDoK
KyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUo
KS5pc0JpZ0ludCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoY2hpbGQudmFsdWUoKSkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE1NjMsNyArMTU5MiwyMiBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1f
dHlwZSAmIH5TcGVjQmlnSW50KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVjQmlnSW50KSkgeworICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50
V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gRklYTUU6IGlmIHRoZSBTcGVjdWxhdGVkVHlwZSBpbmZvcm1zIHVzIHRo
YXQgd2Ugd29uJ3QgaGF2ZSBhIEJpZ0ludDMyIChvciB0aGF0IHdlIHdvbid0IGhhdmUgYSBIZWFw
QmlnSW50KSwgdGhlbiB3ZSBjYW4gdHJhbnNmb3JtIHRoaXMgbm9kZSBpbnRvIGEgSXNDZWxsV2l0
aFR5cGUoSGVhcEJpZ0ludFR5cGUpIChvciBhIGh5cG90aGV0aWNhbCBJc0JpZ0ludDMyIG5vZGUp
LgogCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAg
ICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwpAQCAtMTkzNywx
MyArMTk4MSwxNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBu
b3QgbGF0ZXIgKGFmdGVyIHRoZSB0eXBlLWJhc2VkIHJlcGxhY2VtZW50IGJ5IGZhbHNlKS4KKyAg
ICAgICAgLy8gU2FhbSBzZWVtcyB0byBhZ3JlZSB0aGF0IHRoZSB0d28gY2hlY2tzIGNvdWxkIGJl
IHN3aXRjaGVkLCBJJ2xsIHRyeSB0aGF0IGluIGEgc2VwYXJhdGUgcGF0Y2gKICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlND
LgotICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVl
IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgp
ICYmICF2YWx1ZS5pc1N0cmluZygpOworICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmln
SW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZh
bHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGlz
Tm9uU3RyaW5nQ2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KHJp
Z2h0KSkgeworICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQo
bGVmdCkgfHwgaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAg
ICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAg
ICAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk1OCwxOSArMjAwNCwyNCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkgPT0gbm9kZS0+Y2hpbGQyKCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQm9vbGVhblVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSW50MzJVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDUyUmVwVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmlu
Z0lkZW50VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1i
b2xVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVz
ZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50
eXBlZFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgTWlzY1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
U3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKLSAg
ICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNl
KSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBT
dHJpbmdVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IGNhc2Ugbm90
IGludm9sdmluZyBOYU4gd2hlcmUgeCA9PT0geCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4g
dHJ1ZT8KKyAgICAgICAgICAgIC8vIElmIG5vdCBJIG1pZ2h0IHNsaWdodGx5IHNpbXBsaWZ5IHRo
YXQgY2hlY2suCisgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5V
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKQor
ICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKKyAgICAg
ICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQorICAgICAgICAg
ICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCisgICAgICAgICAgICAg
ICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpCisgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBO
b3RTdHJpbmdWYXJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAg
ICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKQorICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAg
ICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAg
ICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDlkZDRiOWFhNDhjLi4xZDAwNzQxNTUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTU2NjUsNiArNTY2NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfbnVtYmVyKTsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfaXNfYmlnX2ludDogeworICAgICAgICAgICAgQVNT
RVJUKFVTRV9CSUdJTlQzMik7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzQmlnSW50PigpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChJc0JpZ0ludCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2lzX2JpZ19pbnQpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhf
dHlwZTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm1fb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBhNmMuLjAzZTg5YjI2ZTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xNDksNiArMTQ5LDcg
QEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZF9vcl9u
dWxsOgogICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjoKICAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAg
ICBjYXNlIG9wX2lzX2JpZ19pbnQ6CiAgICAgY2FzZSBvcF9pc19vYmplY3Q6CiAgICAgY2FzZSBv
cF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA2MmJiMTI1OGQ1MC4u
ZDI2ODFkYmIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTc1LDYgKzE3NSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBJ
c1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVy
OgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2Fz
ZSBJc09iamVjdDoKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CkBAIC0yNjAsNyArMjYxLDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBW
YWx1ZUJpdE5vdDoKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJ
bnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkZWYo
UHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjgw
LDcgKzY4MSw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAg
ICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKICAg
ICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6CkBAIC03MDIsNyArNzA1LDggQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICBjYXNlIFZhbHVlUG93OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6CiAg
ICAgY2FzZSBWYWx1ZUJpdFJTaGlmdDoKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnRVc2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUtYXJn
dW1lbnQgaXNCaW5hcnlVc2VLaW5kIHdvdWxkIHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXppbmcg
KGZvciBleGFtcGxlKSBmb3IgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQz
MiByaWdodC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFs
dWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4
IDkxMWRkOWIxZTc3Li5hYjIyNTQxNzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMg
Y29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KICAgICAgICAgICAgICAg
ICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5p
c0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFs
dWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICAgICAg
ICAgIH07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxs
Q29uc3RhbnQoY2hpbGQxQ29uc3RhbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggOTJjMDM4ZjA1OTAuLjgxMDJiYTA0MzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiREZH
Q2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkBAIC0xNDcsNiArMTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46
CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVy
SXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDJjMzc2
ODAzYzRjLi41ZmRiMThmNDRhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAyLDE0ICsyMDIsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnNldFJlc3VsdChOb2RlUmVzdWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0
aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxl
IG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUg
aW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNh
c2UuCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBW
YWx1ZVN1Yik7CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQs
IG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuaGVhcEJpZ0ludENvbnN0
YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxk
MihFZGdlKG5vZGVDb25zdGFudE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRz
IGFyZSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2Rl
Q29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBT
cGVjQmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJl
ZXplKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
ICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5v
dy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCBy
ZXByZXNlbnRhdGlvbiBmb3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwg
KHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRv
IGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdodCBv
cHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIGlu
IHRoYXQgY2FzZS4KICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1
ZUFkZCA6IFZhbHVlU3ViKTsKLSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0NvbnN0
YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0
YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25z
dGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVl
OjpKU0JpZ0ludDMyLCAxKSkpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRD
aGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUgY3Vy
cmVudGx5IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJl
CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhl
cmUKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNSwxMiAr
MjU1LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGls
ZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAg
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgp
LCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxk
Mik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0UoQklH
SU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxk
MS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxk
Mik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PFVudHlwZWRVc2U+KGNoaWxkMik7CkBAIC0yNjgsOCArMjk2LDIxIEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxMyw3ICszNTQsMTcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkp
IHsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRF
ZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5k
RWRnZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3Bl
cmFuZEVkZ2UpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5v
ZGUoKS0+c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8VW50eXBlZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBA
IC00NTgsOSArNTA5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxk
MS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxk
Mik7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGls
ZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KGNoaWxkMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgp
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxk
Mi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxk
MSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CisjZW5k
aWYKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVk
VXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQy
KTsKQEAgLTU0Niw4ICs2MDUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQz
MihsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTU4OCwxMiArNjYwLDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAg
ICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAgaWYg
KE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRD
aGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihs
ZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmlnaHRD
aGlsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5U
MzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGls
ZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
PihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obGVm
dENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRDaGls
ZCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxlZnRD
aGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8VW50eXBlZFVzZT4obGVmdENoaWxkKTsKQEAgLTY1NywxMiArNzM3LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVu
dHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1NDQsNiArMjYzMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFu
OgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAg
ICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAg
IGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMjg4NSw3ICsyOTc0LDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkp
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTU4LDcgKzMwNTYsMTYgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBp
cyBCaWdJbnQsIHdlIGF0dGVtcHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNp
bmNlIGl0IGNhbiBvbmx5IHJldHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zNDUyLDEzICszNTU5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNl
OgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToK
LSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAg
ICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkK
ICAgICAgICAgICAgICAgICB8fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlv
bigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxl
LT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBB
bnlCaWdJbnRVc2UgPworICAgICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBh
bGwgb2YgdGhlIFVzZUtpbmRzIHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NzIs
MTIgKzQwODEsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
KyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
eworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
QmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewot
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxB
bnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5k
RGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lk
ZW50KCkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDFjY2E4YjJh
YzQxLi43NzBkOWQ1N2VmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBhYWMzYTYzN2EwOS4uNTYxNGQ1ZDYzNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjU3NSw2ICsyNTc1LDE4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24oKSk7CiAgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlQmlnSW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZUJpZ0ludCgpCiAgICAgewpAQCAtMjc3NSw3ICsyNzg3LDE5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAm
JiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3Ay
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgp
ICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRp
YyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAm
JiBvcDItPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzgzNTI4ZWE1NDUuLjBkZmEwMmRkZDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zOTYsNiArMzk2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzVW5kZWZpbmVkT3JOdWxs
LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKICAgICBtYWNybyhJc051bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICAv
KiBJc0JpZ0ludCBpcyBvbmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIuIE90aGVyd2lzZSB3ZSBl
bWl0IElzQ2VsbFdpdGhUeXBlICovXAorICAgIG1hY3JvKElzQmlnSW50LCBOb2RlUmVzdWx0Qm9v
bGVhbikgXAogICAgIG1hY3JvKE51bWJlcklzSW50ZWdlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwK
ICAgICBtYWNybyhJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09i
amVjdE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCmluZGV4IDIzZWJlMGQ3YmM3Li5iMjIxMTliOWQ5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zODMsMTAgKzM4MywxMyBAQCB2
b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0
IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3Vy
ZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSBudW1iZXJUYWdSZWdp
c3RlciwKICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0
LgogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4
aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1
ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICAvLyBX
ZSBhbHNvIHVzZSB0aGUgbm90Q2VsbE1hc2tSZWdpc3RlciBhcyB0aGUgc2NyYXRjaCByZWdpc3Rl
ciwgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZmluZCBh
IGxlc3MgZ3Jvc3Mgd2F5IG9mIGRvaW5nIHRoaXMsIG1heWJlIHRocm91Z2ggZGVsYXlpbmcgdGhl
c2Ugb3BlcmF0aW9ucyB1bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgc3BhcmUgcmVnaXN0ZXJz
IGFyb3VuZD8KKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9q
c1ZhbHVlU291cmNlLmdwcigpKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSksIEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RD
ZWxsTWFzayksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2Vsc2UgLy8gbm90IFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRy
ZXNzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVz
ZSBpdC4KQEAgLTM5OCw3ICs0MDEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxs
SGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1f
anNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJv
ZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBwcm9m
aWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7
CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9hZCk7CkBAIC00
MDcsMTAgKzQxMCwxMCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYg
aml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAg
aml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBz
Y3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFn
LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAg
ICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1Zh
bHVlU291cmNlLnJlZ3MoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFs
dWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCksIEludmFsaWRHUFJSZWcpOwogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oCmluZGV4IDllOWJjZWE0ODFjLi5lMGU4NzIxZWVhOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwOGNlNTQzNWQzZi4uNTM4NzhiZTA1MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDcg
Kzg3LDYgQEAKICNpbmNsdWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIyMiw1NiAr
MjIxLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICBiYXNlVmFsdWUucHV0SW5saW5l
KGdsb2JhbE9iamVjdCwgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBOdW1iZXJPcGVyYXRpb24+Ci1zdGF0aWMg
QUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBOdW1iZXJPcGVyYXRp
b24mJiBudW1iZXJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpOwotCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3Ao
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihu
dW1iZXJPcChXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8ZG91YmxlPihy
aWdodE51bWVyaWMpKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24s
IHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgYml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwotCi0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IG9wMi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKQotICAgICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYmlnSW50T3AoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSkpOwotCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnQzMk9w
KFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHRO
dW1lcmljKSkpKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFy
c2VJbnRSZXN1bHQoZG91YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0
PGludD4oaW5wdXQpOwpAQCAtNDcxLDcxICs0MjAsMzQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOwot
ICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9w
MSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlciBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1JlbWFpbmRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIGRvdWJsZSB2
YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgKyAxKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0luYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0KLSAgICBh
dXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpkZWMo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQot
ICAgIGRvdWJsZSB2YWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4ob3BlcmFuZE51bWVyaWMpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUgLSAxKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0RlYyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3ApKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVCaXROb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRO
b3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpOwogCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBA
IC01NDQsMTUgKzQ1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBi
aWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVm
dCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAg
IGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMy
X3QgewotICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4g
Yml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MikKQEAgLTU2MSwxNSArNDY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
YXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9Owot
Ci0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
aW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJl
dHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCkBAIC01NzgsMTUgKzQ3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAg
fTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQp
IC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCBeIHJpZ2h0OwotICAgIH07Ci0KLSAg
ICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpCkBAIC01OTUsMTUgKzQ4Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMy
X3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA8PCAocmlnaHQgJiAw
eDFmKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iX3Mp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02MTIsMTUgKzQ5Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNC
aWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAo
aW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJu
IGxlZnQgPj4gKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVk
IHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNSU2hpZnQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpA
QCAtNjU4LDE1ICs1MzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBs
ZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBh
dXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7
Ci0gICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5h
cnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwg
bnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNp
b24gb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEaXYoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NzUsMTUgKzUzOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBb
XSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3As
IG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9u
ZW50aWF0aW9uIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNQ
b3coZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cml0aEFicyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxKQpAQCAtMTQ4MCw3ICsxMzM2LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChnbG9iYWxPYmplY3QsIGlu
cHV0KSk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CkBAIC0xNDkyLDcgKzEzNDgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQs
IHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRO
b3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMTUwMyw3ICsxMzU5LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTE1MTUsNyArMTM3MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
dWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0
dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9w
ZXJhbmQpOwogfQogICAgIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MjcsNyArMTM4Myw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBs
ZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MzksNyArMTM5NSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xv
YmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NTEs
NyArMTQwNyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50
OjpleHBvbmVudGlhdGUoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE1NjMsNyArMTQxOSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlm
dEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTc1LDcgKzE0
MzEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6bGVm
dFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNTg3LDcgKzE0NDMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRk
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVy
biBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7
CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTk5LDcgKzE0NTUsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQwogICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE2MTEs
NyArMTQ2Nyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiAgICAgcmV0dXJuIEpTQmlnSW50
OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0K
IAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKQEAgLTE2MjksNyArMTQ4NSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGds
b2JhbE9iamVjdCwgb3AxLCBvcDIpOworICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZv
ckNlbGxzKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgYXJnMSwgRW5jb2RlZEpTVmFsdWUgYXJnMikKQEAgLTE2NzQsMTAgKzE1MzAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtZXJpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIHZhcmlhbnQgPSBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4odmFyaWFudCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoV1RGOjpnZXQ8SlNCaWdJbnQqPih2YXJpYW50KSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHZhcmlhbnQpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKaW5kZXggMGM4NzNkYmU1ZmUuLjUzMmM2MmE3ZDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4MSwxOCArMTgxLDE4IEBAIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBSZWdFeHBPYmplY3QqLCBKCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0KEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxs
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTW9kSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkJpdE9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dExTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qLCBTdHJ1Y3R1cmUqLCBK
U1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKFZNKiwgU3RydWN0dXJlKiwgdWlu
dDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBtaW5DYXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CmluZGV4IDhmMTkyNjA4MDU2Li5lOWExODVmMmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTUzMiw3ICs1MzIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTAwNCw2ICsxMDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNh
c2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVtYmVy
SXNJbnRlZ2VyOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICBjYXNlIElzT2JqZWN0
T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCBkNmU3YzllMzA4NS4uNmRhNmJjMWMzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC03OSw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JPdGhlclVzZToKICAgICAg
ICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNl
IEFueUJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBjYXNl
IEJpZ0ludDMyVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6
CkBAIC0yNjMsNiArMjY1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIElz
VW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6
CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNl
IElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC02NzcsMTAgKzY4MCwxMCBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVmFsdWVEaXY6CiAgICAgY2FzZSBW
YWx1ZU1vZDoKICAgICBjYXNlIFZhbHVlUG93OgotICAgICAgICByZXR1cm4gbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSk7CisgICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKTsKIAogICAgIGNhc2UgVmFsdWVC
aXROb3Q6Ci0gICAgICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50
VXNlOworICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2U7CiAKICAgICBjYXNlIExhc3ROb2Rl
VHlwZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2FhNGJhYjQx
MGUuLmJjMjRiMjc1OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MDYsNiArMTcwNiwxMCBAQCBib29sIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYQogCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQog
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwg
Y29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgJiYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkpCisgICAg
ICAgICAgICBjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBj
b25kaXRpb24pOworI2VuZGlmCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgZWxzZSBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQ
ZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CkBAIC0zNTMz
LDI0ICszNTM3LDQ3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdChO
b2RlKiBub2RlKQogewogICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogCi0gICAg
aWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChjaGlsZDEudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CisKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxpZXMgb24gZGV0YWls
cyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxsIGhhdmUgdG8gYmUg
dXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KEpT
VmFsdWU6OkJpZ0ludDMyVGFnID09IDB4MTIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFs
dWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAwMTIpOworICAgICAgICBjb25zdGV4
cHIgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZmZmZmZmZmMDAwMDsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydCghKEpTVmFsdWU6OkJpZ0ludDMyTWFzayAmIG1hc2tGb3JCaWdJ
bnQzMkJpdHMpKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQobWFza0ZvckJpZ0lu
dDMyQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnhvcjY0KG9wZXJhbmQuZ3ByKCks
IHJlc3VsdEdQUik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBt
aXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGNoaWxkMS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cGVyYW5kKHRoaXMsIGNoaWxkMSk7CiAgICAgICAgIEdQUlJlZyBvcGVyYW5kR1BSID0gb3BlcmFu
ZC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoY2hpbGQxLCBvcGVyYW5kR1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE5vdEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEpOworICAg
IEFTU0VSVChjaGlsZDEudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgY2hpbGQxLnVzZUtpbmQo
KSA9PSBBbnlCaWdJbnRVc2UpOworICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hp
bGQxLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBjaGls
ZDEpOyAvLyBSZXF1aXJlZCBmb3IgdGhlIEFueUJpZ0ludFVzZSBjYXNlCiAgICAgSlNWYWx1ZVJl
Z3Mgb3BlcmFuZFJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lz
dGVycygpOwpAQCAtMzU3OCwxNCArMzYwNSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQml0d2lzZU5vdChOb2RlKiBub2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0
R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc25pcHBldFNsb3dQYXRoRnVuY3Rpb24+Ci12
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKIHsK
ICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENo
aWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlIHx8IGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IHJp
Z2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkg
PT0gQW55QmlnSW50VXNlKTsKKwogICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5u
b2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxl
ZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9
IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmln
aHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzYzMCwxMSArMzY2MSwxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlQo
IWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAg
ICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0LmVtcGxhY2UodGhp
cywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGls
ZCk7IC8vIFJlcXVpcmVkIGZvciBBbnlCaWdJbnRVc2UKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0
LT5qc1ZhbHVlUmVncygpOwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkp
IHsKLSAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmln
aHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7IC8vIFJlcXVpcmVkIGZvciBBbnlC
aWdJbnRVc2UKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
fQogCkBAIC0zNjcwLDUyICszNzAzLDg0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlm
IChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQubW92ZShs
ZWZ0LmdwcigpLCByZXN1bHRHUFIpOworCiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAg
Y2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0QW5k
R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0gICAgICAgICAgICBlbWl0VW50eXBlZEJp
dE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOwotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6IGJp
dEFuZCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgZW5jb2Rpbmcgb2YgQmlnSW50MzIKKyAg
ICAgICAgICAgIG1faml0LmFuZDY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGVtaXRVbnR5
cGVkQml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveC9ib3g6
IGJpdE9yIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgor
ICAgICAgICAgICAgbV9qaXQub3I2NChyaWdodC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgorICAgICAgICAgICAgLy8gQml0
WG9yIHJlbW92ZXMgdGhlIHRhZywgc28gd2UgbXVzdCBhZGQgaXQgYmFjayBhZnRlciBkb2luZyB0
aGUgb3BlcmF0aW9uCisgICAgICAgICAgICBtX2ppdC54b3I2NChyaWdodC5ncHIoKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQor
CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAKLSAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGxl
ZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwor
ICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIgLyBIZWFwQmlnSW50
CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Ug
JiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0g
ICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2Ug
VmFsdWVCaXRBbmQ6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFuZEhl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0WG9y
OgorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdEFuZEdlbmVyYXRvciwg
b3BlcmF0aW9uVmFsdWVCaXRBbmQ+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBW
YWx1ZUJpdFhvcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcDxK
SVRCaXRYb3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0WG9yPihub2RlKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25CaXRPckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRP
ckFueUJpZ0ludEJpdE9wPEpJVEJpdE9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdE9yPihu
b2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
LSAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKQEAgLTM3NTUsNyArMzgyMCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlT3AoTm9kZSogbm9kZSkKICAgICBzdHJp
Y3RJbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQog
ewogICAgIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiA9IG5vZGUt
Pm9wKCkgPT0gVmFsdWVCaXRSU2hpZnQKICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJTaGlm
dCA6IG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdDsKQEAgLTM3NjUsOSArMzgzMCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGls
ZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgaWYgKGlzS25vd25Ob3ROdW1i
ZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUo
KSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0
LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0Lmpz
VmFsdWVSZWdzKCk7CiAKQEAgLTM4NTksMjcgKzM5MjYsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlTFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQg
PSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7
CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8v
IEZJWE1FOiBzdXBwb3J0IEJpZ0ludDMyCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENo
aWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQ
Uik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobGVmdENo
aWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwotICAgIGVtaXRVbnR5cGVkQml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBv
cGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CisgICAgZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wPEpJVExlZnRTaGlmdEdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQ+KG5v
ZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKQEAgLTM4ODcsMjcgKzM5NTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7CisgICAgLy8gRklYTUU6
IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJ
bnRVc2UpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdo
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2Up
OwotICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgIGVtaXRVbnR5cGVk
T3JCaWdJbnRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCkBAIC0zOTE4LDcgKzM5ODUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU2hpZnRPcChOb2RlKiBub2RlKQogCiAgICAgaWYgKGxlZnRD
aGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wID09IEJpdFVSU2hpZnQpOwot
ICAgICAgICBlbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKKyAgICAgICAgZW1pdFVu
dHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMzk0OCwxOSArNDAxNSw2OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEo
KTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgU3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgU3Bl
Y3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworCisgICAgICAg
IC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lzdGVyLCBvciBjYW4g
d2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxzbywgbG9vayBpbnRv
IFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQgZ2VuZXJhdGVkIGNv
ZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQu
bW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMy
KHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCksIHRlbXBHUFIpOwor
ICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisgICAgICAgIC8vIEZJWE1F
OiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1i
bGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOworCisgICAgICAg
IC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJlY292
ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRvIGZy
ZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxk
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVm
dENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOworICAgICAgICBK
U1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Cisg
ICAgICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbgorICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1
cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyL0hlYXBCaWdJbnQKKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAg
IEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0g
cmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQ
Uik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkFkZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00MDA2LDQ0ICs0MTIzLDkz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQg
PSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50
eXBlZFVzZSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNo
R1BSUmVnID0gdHJ1ZTsKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSBmYWxzZTsK
LSNlbHNlCi0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKLSAgICAgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOwotI2VuZGlmCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAg
ICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJl
Z2lzdGVyLCBvciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTog
YWxzbywgbG9vayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2ll
bnQgZ2VuZXJhdGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Cisg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisK
KyAgICAgICAgbV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC51bmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3By
KCksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOwogCi0g
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRT
dWJJQyhhcml0aFByb2ZpbGUpOwotICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9w
ZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7Ci0gICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgc29tZSB3YXkg
dG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywg
cmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOwogCi0gICAgICAgIGNvbXBpbGVNYXRoSUMo
bm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgICAgIC8vIEZJWE1F
OiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlvblJlY292ZXJ5PworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7
CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5nIHRvIGZyZWUgdGVtcEdQ
Uj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIC8v
IEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAogCi0gICAg
QVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNl
S2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21waWxlVmFsdWVB
ZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3QgVmFsdWVTdWI/
CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpIHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChs
ZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGlsZCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgICAgICBK
U1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0gICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7
CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKIAotICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxl
ZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBy
aWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVm
dC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVn
ID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOworI2Vsc2UKKyAg
ICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1NjcmF0Y2hG
UFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2so
KS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlv
biA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMobm9kZSwgc3Vi
SUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNoaW5nRnVu
Y3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgcmV0dXJuOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBSZXBhdGNoaW5nRnVuY3Rpb24sIHR5cGVu
YW1lIE5vblJlcGF0Y2hpbmdGdW5jdGlvbj4KQEAgLTQ2MTMsNiArNDc3OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gSW4gYWxsIG90aGVy
IGNhc2VzIHRoZSBub2RlIHNob3VsZCBoYXZlIGJlZW4gdHJhbnNmb3JtZWQgaW50byBhbiBhZGQg
b3IgYSBzdWIgYnkgRml4dXBQaGFzZQorICAgIC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoaXMg
aXMgdHJ1ZSwgd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgc29tZSBwYXRoIGZvciBBbnlCaWdJbnQu
CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKIAog
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00NjI4LDYg
KzQ3OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9k
ZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCwgYXQgbGVhc3QgZm9yIEJpZ0ludDMy
LCBidXQgcHJvYmFibHkgYWxzbyBmb3IgSGVhcEJpZ0ludCBoZXJlLgogICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKQEAgLTQ4MDgsMjkgKzQ5NzYsNjMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAg
ICAgIC8vIEZJWE1FOiB0aGUgY29kZSBiZXR3ZWVuIGNvbXBpbGVWYWx1ZUFkZCwgY29tcGlsZVZh
bHVlU3ViIGFuZCBjb21waWxlVmFsdWVNdWwgZm9yIEJpZ0ludDMyIGlzIG5lYXJseSBpZGVudGlj
YWwsIHNvIHRyeSB0byBnZXQgcmlkIG9mIHRoZSBkdXBsaWNhdGlvbi4KKyAgICAgICAgU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBT
cGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCB0aGlzIGV4dHJhIHJlZ2lzdGVyLCBv
ciBjYW4gd2UgbXV0YXRlIGxlZnQvcmlnaHQgPworICAgICAgICAvLyBGSVhNRTogYWxzbywgbG9v
ayBpbnRvIFJldXNlIGFuZCBvdGhlciB0cmlja3MgZm9yIGEgbW9yZSBlZmZpY2llbnQgZ2VuZXJh
dGVkIGNvZGUuCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAg
bV9qaXQubW92ZShsZWZ0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJp
Z0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUocmlnaHQuZ3ByKCksIHRlbXBH
UFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXBHUFIpOworCisgICAgICAgIC8v
IEZJWE1FOiBhZGQgc29tZSB3YXkgdG8gZWxpbWluYXRlIHRoZSBvdmVyZmxvdyBjaGVjaworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaE11bDMyKE1hY3Jv
QXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSLCB0ZW1wR1BSLCByZXN1bHRHUFIpOworCisg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcGFzcyBhbiBpbmZvcm1hdGl2ZSBTcGVjdWxhdGlv
blJlY292ZXJ5PworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVn
cygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBJIGRvIGFueXRoaW5n
IHRvIGZyZWUgdGVtcEdQUj8KKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVh
cEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93
bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgp
KSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0
LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0Lmpz
VmFsdWVSZWdzKCk7CiAKQEAgLTUwMTAsMjkgKzUyMTIsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNl
S2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9y
IEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNl
IG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4KKworICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hp
bGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBp
ZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVy
KHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNl
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTA0Niw2ICs1MjUyLDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRV
c2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwogICAgIE9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NSwyOSArNTUwMywzMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0
Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hp
bGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgewor
ICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2Ug
Z28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZv
ciBNb2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQp
OwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBy
aWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hp
bGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkp
OwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVP
cGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBo
KCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIEpTVmFsdWVPcGVyYW5k
IG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNW
YWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUs
IHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3Mo
KTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKQEAgLTU4NTksMzAgKzYwNzEsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhN
RTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgZm9yIFBvdz8gSSBleHBlY3Qg
aXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0
KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0JpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENo
aWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
bGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdz
ID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMCw2ICs2MjQ1LDEyIEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29t
cGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjA1OCw2ICs2Mjc5LDkgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor
ICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUuCisgICAgLy8gTm90IGhhdmlu
ZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJlIHdpbGwgbm90IGJlIGZ1c2VkIHdpdGggdGhlIGJy
YW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7
CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpIHsKICAgICAg
ICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjEzNiw3
ICs2MzYwLDI0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBu
b2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotI2lmIFVTRShKU1ZBTFVF
NjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRl
dGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0g
VUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChi
cmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJC
cmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAg
ICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKElu
dDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRl
Y3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJ
TlRfTUFYKSB7CkBAIC02MTgzLDggKzY0MjQsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAg
Y29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShu
b2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTYyNzgsOCArNjUx
OSw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQog
ICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHkobm9kZSwgbm9kZS0+Y2hpbGQy
KCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOwor
CisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CiAgICAgcmV0dXJuIG5vblNwZWN1bGF0aXZl
U3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEwNTQxLDE4ICsxMDc4MiwxOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0ZVN5bWJv
bChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgREZHX1RZ
UEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2Vs
bENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoY2VsbCkpOworICAg
IERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+
U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJ
bnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRn
ZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVk
Z2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdl
KTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CisgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MpCkBAIC0x
MDcyMiw4ICsxMDk2MywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSos
IEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9s
KGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgc3Bl
Y3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBjYXNlIEJpZ0ludDMy
VXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3QoZWRnZSk7CkBAIC0x
MzA3MCwxNyArMTMzMTksMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJp
YyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50Lmpz
VmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOworICAgIC8vIEZJWE1FOiBhZGQgYSBm
YXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUgKGFuZCBmb3IgdHlwZU9mLCBhbmQgZm9yIGJvb2xp
Znkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVkIGluIHRoaXMgZmlsZSkuCiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRH
UFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzQmlnSW50ID0gbV9qaXQuanVtcCgp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFyZ3Vt
ZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hlYXBC
aWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVyKGFyZ3VtZW50UmVncywgc2Ny
YXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGluaygmbV9qaXQpOworICAgIGlzSGVhcEJpZ0ludC5s
aW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3Vs
dFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CkBAIC0xMzk2OSw5ICsxNDIxOSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwg
Tm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUp
CiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZl
cnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisgICAgLy8gRklYTUU6IFtFU05l
eHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBm
b3IgYmlnIGludHMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwpAQCAtMTM5ODMsOCArMTQyMzMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKICAgICBsZWZ0LnVzZSgpOwogICAgIHJpZ2h0LnVz
ZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKLSAg
ICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKKyAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAKICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2N2UxNTkyYy4uYTJjYmZhNDk2NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNDYsNiArMzQ2
LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0
ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYKICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVj
a0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPik7CkBAIC0xMTQ4LDYg
KzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSos
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlvbl9HSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFu
Y2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVw
SG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKQEAgLTExNzIsNyAr
MTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSopOwog
CiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwotICAgIHZvaWQgY29tcGls
ZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxp
dHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSos
IE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0
eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlwZWRFZGdlKTsKIApAQCAtMTIyMiw2
ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShO
b2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29t
cGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAg
IHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ29t
cGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwpAQCAtMTI5
NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQml0d2lzZU5vdChOb2Rl
Kik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJh
dGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAgICB2b2lkIGVtaXRVbnR5cGVkQml0T3AoTm9k
ZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0d2lz
ZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSop
OworICAgIHZvaWQgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFs
dWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNoaWZ0T3AoTm9kZSopOwpAQCAt
MTU3OSw2ICsxNTg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2Us
IEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcEFueUludChFZGdlKTsK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNw
ZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2Up
OworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxh
dGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYyOCw4ICsxNjQxLDggQEAgcHVibGljOgogICAg
IHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVj
dWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlU3ltYm9s
KEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UsIEdQUlJlZyBjZWxsKTsKLSAg
ICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJ
bnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZv
aWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2Us
IEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjA3LDYgKzI2MjAsNTYgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCisjaWYgVVNFKEJJR0lOVDMyKQor
Y2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAg
ICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJS
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAg
ICAgICAgICAgIGdwcigpOworICAgIH0KKworICAgIH5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcp
OworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisKKyAgICBF
ZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisK
KyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9k
ZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3By
T3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9
IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIoZWRnZSgpKTsKKyAgICAgICAgcmV0dXJuIG1f
Z3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQq
IG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhf
RVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVt
cFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291
cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdl
ID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCA4ZGFiM2QwNGJjMC4uNWUwMzY5NmM3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE4NSw3ICs0
MTg1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkgdXNlZCBpbiA2NC1iaXQgREZHIik7CiAgICAg
ICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgIERGR19D
UkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNF
X0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0cnVlIGluIDY0IGJpdCBtb2RlIik7CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI4
N2Y2ODcyMjc1Li4xMTY2OTNhNzA5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4LDcgKzEzOCw4IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1h
dEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogeworICAgIGNhc2UgRGF0
YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CiAgICAg
ICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwog
ICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1
ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQg
YXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7
CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNo
aWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAgR1BSUmVnIGFyZzJHUFIgPSBhcmcy
LmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcsNjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5v
ZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6
WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Ci0g
ICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5i
cmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMUdQUik7Ci0gICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51bWJlcihhcmcxR1BSKTsK
LSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
cmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQUik7Ci0gICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7Ci0g
ICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgYnJhbmNoNjQo
aW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcx
R1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7
Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nhc2UubGluaygmbV9qaXQpOworICAgICAgICAv
KiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICdpbnZlcnQnIHRvIGJlIGZhbHNlKToK
KyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
ICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAg
ICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBD
ZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIGdvdG8gbm90VGFrZW47
CisgICAgICAgICAqLworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENh
c2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0
aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZklu
dDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNW
YWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92
ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAvLyBJZiBpdCBpcyBu
b3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQg
c2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUw
LgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92
ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0
Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93
ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAg
IG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgICAg
ICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dl
c3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0
KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVy
OjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAg
ICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxpbmsoJm1faml0KTsKLSAgICAgICAgcmlnaHRE
b3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBzdXBwb3J0
IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJh
bmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgICAgIC8vIElm
IHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkgaGF2ZSB0byBnbyB0byBhIHNsb3cg
cGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9yIEhlYXBCaWdJbnQgPT09IEhlYXBC
aWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5n
IHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQK
KyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2Ft
ZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAgICAgLy8gICAgICBCb3RoIGFyZSAi
QWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5l
aXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1
aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAgICAgICAgLy8gICAgICBJZiBi
b3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0
IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElmIGF0IGxlYXN0IG9uZSBpcyBub3QgSW50MzIs
IHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAgICAgLy8gICAgICBBbmQgaWYgYXQg
bGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNvIGJlIDAs
IG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX2pp
dC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgbV9q
aXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgICAgIHNs
b3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKKworICAg
ICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CisKKyAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0
YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChub3RUYWtlbik7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2Rl
LCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGlzIGNvZGUgc2hvdWxk
IGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgIEpT
VmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEpTVmFsdWVSZWdzIGFyZzFSZWdz
ID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGFyZzJSZWdzID0gYXJnMi5q
c1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJS
ZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwpAQCAtNDI4LDMzICs0
NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0
cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIG1faml0Lm9yNjQoYXJnMVJlZ3Mu
Z3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOworICAgIC8qIEF0IGEgaGlnaCBsZXZl
bCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFsc2UpOgorICAgIElmIChsZWZ0IGlz
IERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
cmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8g
ZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNlczsKIAotICAgIEpJVENvbXBpbGVy
OjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotCi0g
ICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxUmVn
cyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMVJl
Z3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgIEpJVENv
bXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJZkludDMyKGFyZzJSZWdzKTsKLSAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihhcmcyUmVncywgSW52
YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotCi0gICAgbV9qaXQuY29t
cGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVh
bCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOwotCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAgIHR3b0NlbGxzQ2FzZS5s
aW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCkpKTsKKyAg
ICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3Vs
ZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51
bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRo
ZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9u
bHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
bW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgbV9qaXQuYWRk
NjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdwcigp
KTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsK
KyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpM
b3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQo
bmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGls
ZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJl
c3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8g
YSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJp
Z0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwg
d2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNl
bGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcp
CisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNoZXMsIHdlIGNhbiBkbyBhIHNpbmds
ZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdo
dCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAv
LyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgIC8vIDIuIFNpbmNlIHdl
IGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlz
IENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmlnaHQpIGlzIENlbGwpCisgICAgLy8g
ICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5k
IHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAgSWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJ
bnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgIC8vICAgICAgQW5kIGlmIGF0
IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhlcicgdGFnIHdpbGwgYWxzbyBiZSAw
LCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBtX2ppdC5h
bmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICBtX2ppdC5vcjY0
KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICBzbG93UGF0aENhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKSk7CiAKLSAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVydCksIHJlc3VsdEdQUik7CisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVn
cywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogCisgICAgbV9qaXQueG9y
NjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQUik7CisKICAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKIH0KIApAQCAtMTAwMyw2ICsxMDU4LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVkZ2UsIERhdGFGb3JtYXQmIHJldHVy
bkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUy
OgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJp
Z0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMjM0LDYgKzEyOTEsOCBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZv
cm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJl
bnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0x
MzExLDYgKzEzNzAsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKEVkZ2UgZWRnZSkKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2UgRGF0
YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAgICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEgZm9y
bWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMzE5LDYgKzEzODAsMTA5IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAg
IH0KIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNCaWdJbnQzMikpCisgICAgICAgIHJldHVybjsKKworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVBbnlCaWdJbnQoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0JpZ0ludCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CisgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChlZGdlLCB2YWx1ZVJlZ3MuZ3ByKCkpOworICAgIG5vdENlbGwubGluaygm
bV9qaXQpOworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKSkuZ3ByKCk7Cit9CisKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0g
dmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNCaWdJ
bnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgeworICAgICAgICBpZiAobWF5SGF2ZVR5
cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIHJldHVy
biBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisg
ICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXRO
b25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisgICAgICAgIGlmIChl
ZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdl
LT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpKSwgZ3ByKTsK
KyAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKworICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7
CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRKUyk7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdl
LCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVt
YmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAg
ICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFG
b3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CisgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAg
ICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAg
ICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOwor
ICAgICAgICBpZiAodHlwZSAmIH5TcGVjQmlnSW50MzIpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZO
dW1iZXIoZ3ByKSk7CisgICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IGFsbG9jYXRlKCk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIp
KTsKKyAgICAgICAgICAgIHVubG9jayh0ZW1wR1BSKTsKKyAgICAgICAgfQorICAgICAgICBpbmZv
LmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAg
ICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToK
KyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAg
ICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAg
ICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0
YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFw
aCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBkYXRhIGZvcm1hdCIpOworICAgICAgICByZXR1
cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0RXF1YWxpdHkoRWRnZSBvYmpl
Y3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU1LDYgKzE3MTksNTUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSogbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKworICAgIGlmIChjb25k
aXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwpIHsKKyAgICAgICAgLy8gTm8gbmVlZCB0byB1bmJveCB0aGUgb3BlcmFu
ZHMsIHNpbmNlIHRoZSB0YWcgYml0cyBhcmUgaWRlbnRpY2FsCisgICAgICAgIG1faml0LmNvbXBh
cmU2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBtX2pp
dC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJ
bnQzMihyZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMi5ncHIoKSwgdGVtcC5n
cHIoKSk7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcC5ncHIoKSk7CisgICAgICAg
IG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIHJlc3VsdC5ncHIoKSwgdGVtcC5ncHIoKSwgcmVz
dWx0LmdwcigpKTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwg
d2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSogbm9kZSwg
Tm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0
aW9uKQoreworICAgIC8vIE90aGVyIGNvbmRpdGlvbnMgd291bGQgcmVxdWlyZSB1bmJveGluZyB0
aGUgQmlnSW50MzIgdG8gZ2V0IGNvcnJlY3QgcmVzdWx0cyBvbiBuZWdhdGl2ZSBudW1iZXJzLgor
ICAgIEFTU0VSVChjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IGNvbmRpdGlv
biA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpOworCisgICAgQmFzaWNCbG9jayogdGFrZW4g
PSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxvY2sq
IG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKKwor
ICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJs
b2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2Vu
ICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCisg
ICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJVENv
bXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0gdGFr
ZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1wOwor
ICAgIH0KKworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgYnJhbmNoNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwg
dGFrZW4pOworICAgIGp1bXAobm90VGFrZW4pOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikK
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQog
ewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQw
ODYsNiArNDI5OSwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNCaWdJbnQ6IHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuZ3ByKCkpOwor
CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmFuZDY0KHZhbHVlLmdwcigpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1
bHQuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnRpbnVhdGlvbiA9IG1faml0Lmp1bXAo
KTsKKworICAgICAgICBpc0NlbGwubGluaygmbV9qaXQpOworICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5jb21wYXJlOChK
SVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJp
Z0ludFR5cGUpLCByZXN1bHQuZ3ByKCkpOworCisgICAgICAgIGNvbnRpbnVhdGlvbi5saW5rKCZt
X2ppdCk7CisgICAgICAgIGJsZXNzQm9vbGVhbihyZXN1bHQuZ3ByKCkpOworICAgICAgICBibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworI2Vsc2UKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDc1ZjNhMDZiMGZjLi42YTI1
NGNlN2MyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0xMjUsNyArMTI1LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgogICAgICAg
ICBjYXNlIFZhbHVlQml0WG9yOiB7Ci0gICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBtYXli
ZSBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvcGVyYW5kIGlzIGFsd2F5cyBIZWFwQmlnSW50
IGFuZCB0aGUgb3RoZXIgaXMgYWx3YXlzIEJpZ0ludDMyPworICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNzUsNyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIGlmIChtX25vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKaW5kZXgg
OGVmNzNiNmYyZTguLmFiNjMxYzljZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNDUsOCArMTQ1LDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBVc2VLaW5kIHVzZUtpbmQpCiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiU3ltYm9sIik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJpZ0lu
dFVzZToKLSAgICAgICAgb3V0LnByaW50KCJCaWdJbnQiKTsKKyAgICBjYXNlIEFueUJpZ0ludFVz
ZToKKyAgICAgICAgb3V0LnByaW50KCJBbnlCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJIZWFwQmlnSW50Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBvdXQucHJpbnQo
IkJpZ0ludDMyIik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToK
ICAgICAgICAgb3V0LnByaW50KCJTdHJpbmdPYmplY3QiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgKaW5kZXggOWMxM2M1YmNkMzUuLmY0ZjdiMzNiYjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2LDkgQEAgZW51bSBVc2VL
aW5kIHsKICAgICBLbm93blN0cmluZ1VzZSwKICAgICBLbm93blByaW1pdGl2ZVVzZSwgLy8gVGhp
cyBiaXphcnJlIHR5cGUgYXJpc2VzIGZvciBvcF9zdHJjYXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2Rl
IGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgb25seSBzZWUgcHJpbWl0aXZlcyAoaS5lLiBub3Qgb2Jq
ZWN0cykuCiAgICAgU3ltYm9sVXNlLAotICAgIEJpZ0ludFVzZSwKKyAgICBBbnlCaWdJbnRVc2Us
CisgICAgSGVhcEJpZ0ludFVzZSwKKyAgICBCaWdJbnQzMlVzZSwKICAgICBEYXRlT2JqZWN0VXNl
LAogICAgIE1hcE9iamVjdFVzZSwKICAgICBTZXRPYmplY3RVc2UsCkBAIC0xNTIsOCArMTU0LDEy
IEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkK
ICAgICAgICAgcmV0dXJuIFNwZWNIZWFwVG9wICYgflNwZWNPYmplY3Q7CiAgICAgY2FzZSBTeW1i
b2xVc2U6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50VXNlOgor
ICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBj
YXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKKyAgICBj
YXNlIEJpZ0ludDMyVXNlOgorICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDMyOwogICAgIGNhc2Ug
UHJvbWlzZU9iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNQcm9taXNlT2JqZWN0OwogICAg
IGNhc2UgRGF0ZU9iamVjdFVzZToKQEAgLTIxMiwyNCArMjE4LDYgQEAgaW5saW5lIGJvb2wgbWF5
SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCiAgICAgcmV0dXJuICFzaG91bGROb3RIYXZlVHlw
ZUNoZWNrKGtpbmQpOwogfQogCi1pbmxpbmUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGtpbmQp
Ci17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBJbnQzMlVzZToKLSAgICBjYXNlIEtu
b3duSW50MzJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgotICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgY2Fz
ZSBEb3VibGVSZXBSZWFsVXNlOgotICAgIGNhc2UgQW55SW50VXNlOgotICAgIGNhc2UgRG91Ymxl
UmVwQW55SW50VXNlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiBpbmxpbmUgYm9vbCBpc0RvdWJsZShVc2VLaW5k
IGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC0yNjEsNyArMjQ5LDcgQEAgaW5saW5l
IGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKICAgICBjYXNlIFN0cmluZ1VzZToKICAgICBjYXNl
IEtub3duU3RyaW5nVXNlOgogICAgIGNhc2UgU3ltYm9sVXNlOgotICAgIGNhc2UgQmlnSW50VXNl
OgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAg
ICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgIGNhc2UgRGF0ZU9iamVjdFVzZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBl
MWY1ODlmMjczNC4uYjI1ZTc5Zjg0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI2MSw2ICsyNjEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxs
OgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0Jp
Z0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAg
IGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC00ODQsNyArNDg1LDkgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT2Jq
ZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgICAgICAg
ICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgTWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU2V0T2JqZWN0VXNlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCmluZGV4IDViNDky
NWNmZmJjLi5jMGY0ZjJiMDY1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcApAQCAtNTgsNiArNTgsOSBAQCB2b2lkIENvbW1vblZhbHVlczo6aW5p
dGlhbGl6ZUNvbnN0YW50cyhCMzo6UHJvY2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxv
YwogICAgIGludFB0clRocmVlID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMyk7CiAgICAgaW50UHRyRWlnaHQgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA4KTsKICAgICBkb3VibGVaZXJvID0gYmxvY2stPmFw
cGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBiaWdJbnQzMlplcm8gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEpTVmFsdWU6OkJpZ0ludDMyVGFnKTsKKyNlbmRpZgogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21tb25WYWx1ZXMuaAppbmRleCBjMWQ2ZDVhNTUxZC4uMzFhMzkzMjkwNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaApAQCAtNTYsNyArNTYsMTAgQEAg
cHVibGljOgogICAgIExWYWx1ZSBpbnRQdHJUaHJlZSB7IG51bGxwdHIgfTsKICAgICBMVmFsdWUg
aW50UHRyRWlnaHQgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGRvdWJsZVplcm8geyBudWxscHRy
IH07Ci0gICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBiaWdJbnQzMlplcm8geyBu
dWxscHRyIH07CisjZW5kaWYKKwogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZCB7IDAgfTsK
ICAgICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAgfTsKICAgICBjb25zdCBMVmFsdWUgYnJh
bmNoV2VpZ2h0cyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCAzNWQ4Y2U2NjkxMy4uYjFiN2FlMzgyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzU2LDYg
KzEzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAg
Y29tcGlsZUlzTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0Jp
Z0ludDoKKyAgICAgICAgICAgIGNvbXBpbGVJc0JpZ0ludCgpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgY29tcGlsZU51bWJl
cklzSW50ZWdlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTM5LDExICsyMTQyLDI4IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihs
ZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJp
Z2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRl
QWRkKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxh
dGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKwor
ICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAg
ICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjE2MCwxMSArMjE4MCwyOCBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIo
bGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihy
aWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0
ZVN1Yih1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3Vs
YXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisK
KyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7Cisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJ
bnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJIZWFwQmlnSW50LCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxODEs
MTEgKzIyMTgsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMiht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1
bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVu
Ym94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBt
X291dC5zcGVjdWxhdGVNdWwodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAg
ICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwg
bV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQz
MihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyODksNyAr
MjM0MywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5j
MiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOwotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBJQyB5ZXQuCisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIo
KSk7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1
ZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9k
ZS0+Y2hpbGQyKCkpOwogCkBAIC0yNTU4LDExICsyNjI2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVEaXYoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25EaXZCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVm
dCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yNjM3LDE4ICsyNzA2LDIxIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21waWxlVmFsdWVNb2QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkg
ewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBCaWdJbnQzMiBmYXN0IHBhdGggaGVyZQorICAgICAg
ICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsK
IAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25Nb2RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uTW9kSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQp
OwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsK
LSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UsIG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZU1vZCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgfQpAQCAtMjgxMywxNyArMjg4NSwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGlsZVZhbHVlUG93KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgLy8gRklYTUU6IG1heWJlIGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBiYXNlID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uUG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCBleHBvbmVudCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGV4cG9uZW50
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
c3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlUG93LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICB9CkBAIC0zMjA0LDkgKzMyODAsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1
ZUJpdE5vdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0
Tm90QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKKworI2lmIFVT
RShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxp
ZXMgb24gZGV0YWlscyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxs
IGhhdmUgdG8gYmUgdXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMlRhZyA9PSAweDEyKTsKKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAx
Mik7CisgICAgICAgICAgICB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZm
ZmZmZmYwMDAwOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihvcGVy
YW5kLCBtX291dC5jb25zdEludDY0KG1hc2tGb3JCaWdJbnQzMkJpdHMpKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgb3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMjQsMTEgKzMzMTQsMjMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5i
b3gsIHNpbmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0NCwxMSArMzM0
NiwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAv
LyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkg
Yml0QW5kCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVmdCwgcmln
aHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjQsMTEgKzMz
NzgsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0TWlzc2luZ1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2luZ1RhZywg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjg0LDExICszNDEwLDI5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50MzJVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNtYXJ0ZXIg
aGVyZQorICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVzZSBhIHJp
Z2h0LXNoaWZ0IGJ5IGEgbmVnYXRpdmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3IgQmlnSW50
cy4KKyAgICAgICAgICAgIC8vIFNvIGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZsb3cuCisK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJpdFJTaGlm
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMzMDAsMjQg
KzM0NDQsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmFTaHIo
CiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1f
b3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigz
MSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0
IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9m
IHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0TFNoaWZ0
KCkKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAgIGxvd0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAg
IG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQz
MigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2Vm
dWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFz
dCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0
QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExT
aGlmdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzMzNCw3ICszNDc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICBzZXRJbnQzMihtX291dC5sU2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklY
TUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVk
ZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lk
IGNvbXBpbGVVSW50MzJUb051bWJlcigpCkBAIC03MzcxLDYgKzc1MTYsOSBAQCBwcml2YXRlOgog
ICAgICAgICAKICAgICAgICAgaWYgKGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkubV90
eXBlICYgKFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3ROdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2so
KTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNzM4MCwxMCArNzUyOCwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAv
LyBub3ROdW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1f
bm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RCaWdJbnQz
MikpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2VuZGlmCiAg
ICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsKIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBtX291dC5i
cmFuY2goaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1
cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAvLyBXZSBo
YXZlIHNldmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVtZXJpYyBz
dGlsbCBleGlzdHMuCkBAIC04NDQwLDcgKzg1OTIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODQ4Myw3ICs4NjM4LDk0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAg
Ly8gTm8gbmVlZCB0byB1bmJveCBzaW5jZSB0aGUgdGFnIGJpdHMgYXJlIHRoZSBzYW1lIG9uIGJv
dGggc2lkZXMKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5lcXVhbChsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc3RhcnQgd2l0
aCBpZiAobGVmdCA9PSByaWdodCksIGJlY2F1c2Ugd2UgbXVzdCBpbnNlcnQgdGhlIHJpZ2h0IGNo
ZWNrcyAoc2VlIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiBhYm92ZSkKKyAgICAgICAgICAgIC8v
IFRoZSBjb2RlIHRoYXQgd2UgZ2VuZXJhdGUgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nIHBzZXVk
by1jb2RlOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihsZWZ0
KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0soaXNI
ZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6
OmVxdWFsc1RvSW50MzIocmlnaHQsIHVuYm94ZWQobGVmdCkpOworICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQobGVmdCkpCisgICAgICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
aWYgKGlzQmlnSW50MzIocmlnaHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmln
SW50OjplcXVhbHNUb0ludDMyKGxlZnQsIHVuYm94ZWQocmlnaHQpKTsKKyAgICAgICAgICAgICBD
SEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0Jp
Z0ludDo6ZXF1YWxzKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgYm90aEFyZUJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG9ubHlMZWZ0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNOb3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0RXF1YWxzUmlnaHQgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzSGVhcEJpZ0ludCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQmlnSW50MzIg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc05vdEJp
Z0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c0JpZ0ludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUobGVm
dElzQmlnSW50MzIpLCB1bnN1cmUobGVmdElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAg
Ly8gRklYTUU6IHNldCB0aGUgb3JkZXIgb2YgdGhlIGJsb2NrcyB0byBtYXhpbWl6ZSBmYWxsdGhy
b3VnaAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzQmlnSW50MzIpOworICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIocmlnaHQsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDIoKSkpLCB1bnN1cmUoYm90aEFyZUJpZ0ludDMyKSwgdW5zdXJlKG9ubHlMZWZ0SXNCaWdJ
bnQzMikpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhib3RoQXJlQmlnSW50MzIpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlMZWZ0SXNC
aWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJD
ZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0g
dW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExl
ZnRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCByaWdodCwgdW5ib3hlZExlZnQpKSk7CisgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05v
dEJpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhl
ckNlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
ZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUobGVmdEVxdWFsc1JpZ2h0KSwgdW5zdXJlKGxlZnRJ
c0hlYXBCaWdJbnQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdEVxdWFsc1Jp
Z2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExlZnRFcXVhbHNSaWdodCA9
IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0hlYXBC
aWdJbnQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIocmlnaHQsIHByb3Zl
blR5cGUobV9ub2RlLT5jaGlsZDIoKSkpLCB1bnN1cmUocmlnaHRJc0JpZ0ludDMyKSwgdW5zdXJl
KHJpZ2h0SXNOb3RCaWdJbnQzMikpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdo
dElzQmlnSW50MzIpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94Qmln
SW50MzIocmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0UmlnaHRJc0Jp
Z0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCB1bmJveGVkUmlnaHQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNOb3RCaWdJ
bnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxs
KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0lu
dF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGlu
dHMKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI4OTUKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhIZWFwQmlnSW50
ID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJh
dGlvbkNvbXBhcmVTdHJpY3RFcSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0Qm90aEFyZUJpZ0ludDMyLCByZXN1bHRMZWZ0SXNCaWdJ
bnQzMiwgcmVzdWx0TGVmdEVxdWFsc1JpZ2h0LCByZXN1bHRSaWdodElzQmlnSW50MzIsIHJlc3Vs
dEJvdGhIZWFwQmlnSW50KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRp
ZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDUyUmVwVXNlKSkgewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQp
OwpAQCAtODU2NiwxMSArODgwOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50VXNlKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3Jl
YXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZl
cnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC04NjU2LDYgKzg4OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBz
bWFydGVyIGhlcmUsIHNlZSB0aGUgREZHU3BlY3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVk
VXNlKSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpKTsKICAgICAgICAgbm9uU3BlY3VsYXRpdmVDb21wYXJlKAogICAgICAgICAgICAgWyZdIChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7CkBAIC0xMDYxOCw3ICsxMDg2MSwzNiBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0
LCBwYXRjaHBvaW50UmVzdWx0KSk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXND
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2Vs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVu
c3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0JpZ0ludDMyKHZhbHVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRp
b24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlz
Q2VsbFdpdGhUeXBlKHZhbHVlLCBtX25vZGUtPnF1ZXJpZWRUeXBlKCksIG1fbm9kZS0+c3BlY3Vs
YXRlZFR5cGVGb3JRdWVyeSgpLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50
MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICB9CisjZWxzZSAvLyBpZiAhVVNF
KEJJR0lOVDMyKQorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggQUxXQVlTX0lOTElORSB2b2lk
IGNvbXBpbGVJc0JpZ0ludCgpCisgICAgeworICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGRlYWxp
bmcgd2l0aCBCaWdJbnQzMiwgd2Ugc2hvdWxkIGp1c3QgZW1pdCBJc0NlbGxXaXRoVHlwZShIZWFw
QmlnSW50KSBpbnN0ZWFkLgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUlzQ2VsbFdpdGhUeXBlKCkKICAgICB7CiAg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CkBA
IC0xNDM0Miw5ICsxNDYxNCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW1pdEJpbmFyeVNuaXBw
ZXQoSl9KSVRPcGVyYXRpb25fR0pKIHNsb3dQYXRoRnVuY3Rpb24pCiAgICAgewogICAgICAgICBO
b2RlKiBub2RlID0gbV9ub2RlOwotICAgICAgICAKLSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1
ZShub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwogCiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAg
U25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkucmVzdWx0VHlwZSgpKTsKQEAgLTE0NDEwLDggKzE0Njg0LDExIEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAKLSAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0lu
dFVzZSkpOworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
IHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBub2RlLT5jaGlsZDIoKSk7CiAKICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRUeXBlKCkpOwogICAgICAgICBT
bmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS5yZXN1bHRUeXBlKCkpOwpAQCAtMTUwMjMsNyArMTUzMDAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgY29udHJvbCBm
bG93IHN0cnVjdHVyZToKICAgICAgICAgICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAg
ICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisg
ICAgICAgICAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmln
SW50KQogICAgICAgICAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAg
ICAgICAgICAgIC8vICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vICAgICAgICAgZG8gZXZpbCB0
aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAtMTUwMzMsNiArMTUzMTAsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hJbnQzMih2YWx1
ZSkKICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgICAg
ICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAgICAgICAgIC8v
IH0gZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAgICAgICAgIC8vICAgICByZXN1
bHQgPSAodmFsdWUgIT0gQmlnSW50MzJUYWcpCiAgICAgICAgICAgICAvLyB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gICAgIHJlc3VsdCA9IHZhbHVlID09IGpzVHJ1ZQogICAgICAgICAgICAgLy8g
fQpAQCAtMTUwNDAsMTMgKzE1MzE5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBjZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RTdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIHN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgYmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RTdHJpbmdPckJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdERvdWJsZUNhc2UgPSBtX291dC5uZXdCbG9j
aygpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0ludDMy
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJ
bnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2s+IHJlc3VsdHM7CkBAIC0xNTA2MCwyMCArMTUz
NDMsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90U3RyaW5nQ2FzZSwgc3RyaW5nQ2FzZSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2go
Ci0gICAgICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3Bl
Y0NlbGwgLSBTcGVjU3RyaW5nKSksCi0gICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2Up
LCB1bnN1cmUobm90U3RyaW5nT3JCaWdJbnRDYXNlKSk7CisgICAgICAgICAgICAgICAgaXNIZWFw
QmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0gU3BlY1N0cmluZykp
LAorICAgICAgICAgICAgICAgIHVuc3VyZShoZWFwQmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJp
bmdOb3JIZWFwQmlnSW50Q2FzZSkpOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJp
bmdDYXNlLCBiaWdJbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nh
c2UsIGhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFu
Y2hvcihtX291dC5ub3RFcXVhbCh2YWx1ZSwgd2Vha1BvaW50ZXIoanNFbXB0eVN0cmluZyhtX2dy
YXBoLm1fdm0pKSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAot
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgbm90U3RyaW5nT3JCaWdJbnRD
YXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhlYXBCaWdJbnRDYXNlLCBub3RTdHJp
bmdOb3JIZWFwQmlnSW50Q2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgbm9uWmVyb0JpZ0ludCA9
IG1fb3V0Lm5vdFplcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2
ZSh2YWx1ZSwgbV9oZWFwcy5KU0JpZ0ludF9sZW5ndGgpKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcihub25aZXJvQmlnSW50KSk7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdFN0cmluZ09yQmlnSW50Q2FzZSwgbm90Q2VsbENhc2UpOworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UsIG5vdENlbGxDYXNlKTsKICAg
ICAgICAgICAgIExWYWx1ZSBpc1RydXRoeU9iamVjdDsKICAgICAgICAgICAgIGlmIChtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKQogICAgICAgICAgICAgICAg
IGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQuYm9vbGVhblRydWU7CkBAIC0xNTExNiw4ICsxNTM5OSwy
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuYm94RG91YmxlKHZhbHVlKSwgbV9vdXQu
Y29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KGRvdWJsZUlzVHJ1dGh5KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3REb3Vi
bGVDYXNlLCBiaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgIGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiB+U3BlY0NlbGwp
LAorICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnQzMkNhc2UpLCB1bnN1cmUobm90QmlnSW50
MzJDYXNlKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludDMyQ2FzZSwgbm90
QmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAgIExWYWx1ZSBiaWdJbnQzMk5vdFplcm8gPSBtX291
dC5ub3RFcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykp
OworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGJpZ0ludDMyTm90WmVy
bykpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAg
CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2UsIGNvbnRpbnVhdGlv
bik7CisjZWxzZQogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91YmxlQ2FzZSwgY29u
dGludWF0aW9uKTsKKyNlbmRpZgogICAgICAgICAgICAgTFZhbHVlIG1pc2NJc1RydXRoeSA9IG1f
b3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3IobWlzY0lzVHJ1dGh5KSk7CkBAIC0xNTcyMiwxMyArMTYwMTksMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIHN0cmluZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIGhlYXBiaWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAg
ICAgIC8vICAgICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKICAg
ICAgICAgLy8gICAgIH0KICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBudW1iZXIpIHsKICAgICAg
ICAgLy8gICAgIHJldHVybiBudW1iZXIKKyAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBiaWdpbnQz
MikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyB9IGVsc2UgaWYg
KGlzIG51bGwpIHsKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QKICAgICAgICAgLy8gfSBl
bHNlIGlmIChpcyBib29sZWFuKSB7CkBAIC0xNTc1Niw2ICsxNjA1NSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgbnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdE51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyNlbmRpZgogICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGJvb2xlYW5DYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgdW5kZWZpbmVkQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC0xNTgwOCw3ICsxNjExMCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90U3RyaW5nQ2FzZSwgYmlnSW50Q2FzZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgK
LSAgICAgICAgICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2Vs
bCAtIFNwZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICBpc0hlYXBCaWdJbnQo
dmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNT
dHJpbmcpKSwKICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKHN5bWJvbENh
c2UpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBzeW1ib2xDYXNlKTsK
QEAgLTE1ODI0LDggKzE2MTI2LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhudW1iZXJDYXNlLCBub3ROdW1iZXJDYXNlKTsKICAgICAgICAgZnVuY3RvcihU
eXBlb2ZUeXBlOjpOdW1iZXIpOwotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwgbm90QmlnSW50MzJDYXNlKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgflNw
ZWNDZWxsKSwgdW5zdXJlKGJpZ0ludENhc2UpLCB1bnN1cmUobm90QmlnSW50MzJDYXNlKSk7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzJDYXNlLCBub3ROdWxsQ2FzZSk7Cisj
ZWxzZQogICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3ROdWxsQ2FzZSk7
CisjZW5kaWYKICAgICAgICAgTFZhbHVlIGlzTnVsbDsKICAgICAgICAgaWYgKHByb3ZlblR5cGUo
Y2hpbGQpICYgU3BlY090aGVyKQogICAgICAgICAgICAgaXNOdWxsID0gbV9vdXQuZXF1YWwodmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSk7CkBAIC0xNjUyMywxNSAr
MTY4MzIsMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBMVmFsdWUgbG93QmlnSW50KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIExWYWx1ZSBsb3dIZWFwQmlnSW50
KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2Up
OworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpOwogCiAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBsb3dDZWxsKGVkZ2UsIG1vZGUpOwotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCByZXN1
bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBMVmFsdWUgbG93QmlnSW50MzIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKworICAgICAgICBMb3dlcmVkTm9kZVZh
bHVlIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZhbHVlLnZh
bHVlKCk7CisgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUocmVzdWx0KSwg
ZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05vdEJpZ0ludDMyKHJlc3VsdCkpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXlIYXZlVHlwZUNoZWNr
KGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7Cisg
ICAgICAgIHJldHVybiBtX291dC5iaWdJbnQzMlplcm87CisgICAgfQorI2VuZGlmCisKICAgICBM
VmFsdWUgbG93Tm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUg
bW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51
c2VLaW5kKCkgPT0gT2JqZWN0VXNlKTsKQEAgLTE2NzE3LDcgKzE3MDQ0LDcyIEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIElu
dDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBMVmFsdWUgaXNCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3Zl
blZhbHVlKHR5cGUsIFNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwor
ICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNW
YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAg
TFZhbHVlIGlzTm90QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlLCB+U3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47
CisgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmJpdEFu
ZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzaykpLAorICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0K
KyAgICBMVmFsdWUgdW5ib3hCaWdJbnQzMihMVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX291dC5jYXN0VG9JbnQzMihtX291dC5sU2hyKGpzVmFsdWUsIG1fb3V0LmNvbnN0
SW50NjQoMTYpKSk7CisgICAgfQorICAgIExWYWx1ZSBib3hCaWdJbnQzMihMVmFsdWUgaW50MzJW
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5iaXRPcigKKyAgICAgICAgICAgIG1f
b3V0LnNobChtX291dC56ZXJvRXh0KGludDMyVmFsdWUsIEIzOjpJbnQ2NCksIG1fb3V0LmNvbnN0
SW50NjQoMTYpKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50
MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIGlzTm90QW55QmlnSW50KExWYWx1ZSBqc1ZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICAvLyBpZiAoaXNCaWdJbnQzMikKKyAgICAg
ICAgLy8gICByZXR1cm4gZmFsc2UKKyAgICAgICAgLy8gaWYgKCFpc0NlbGwpCisgICAgICAgIC8v
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIC8vIHJldHVybiAhaXNIZWFwQmlnSW50CisgICAgICAg
IExCYXNpY0Jsb2NrIGlzQmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgaXNOb3RCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQu
YnJhbmNoKGlzQmlnSW50MzIoanNWYWx1ZSwgdHlwZSksIHVuc3VyZShpc0JpZ0ludDMyQ2FzZSks
IHVuc3VyZShpc05vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlz
QmlnSW50MzJDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuRmFsc2UgPSBtX291
dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzTm90QmlnSW50MzJDYXNlKTsKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChqc1ZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENh
c2UpLCB1bnN1cmUoaXNOb3RDZWxsQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlz
Tm90Q2VsbENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5UcnVlID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UpOworICAgICAgICBWYWx1
ZUZyb21CbG9jayByZXR1cm5Jc05vdEhlYXBCaWdJbnQgPSBtX291dC5hbmNob3IoaXNOb3RIZWFw
QmlnSW50KGpzVmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbik7CisgICAgICAgIHJldHVybiBtX291
dC5waGkoSW50MzIsIHJldHVybkZhbHNlLCByZXR1cm5UcnVlLCByZXR1cm5Jc05vdEhlYXBCaWdJ
bnQpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICBMVmFsdWUgaXNDZWxs
T3JNaXNjKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwg
U3BlY0NlbGxDaGVjayB8IFNwZWNNaXNjKSkKQEAgLTE3MDI5LDggKzE3NDIxLDE2IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZUJvb2xl
YW4oZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6Ci0g
ICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlQmlnSW50MzIoZWRn
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAg
ICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOb3RTdHJp
bmdWYXIoZWRnZSk7CkBAIC0xNzIxNiwxOCArMTc2MTYsMzggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zeW1ib2xTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9
CiAKLSAgICBMVmFsdWUgaXNOb3RCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRo
ZXJDZWxsKExWYWx1ZSB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQog
ICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBT
cGVjQ2VsbCwgflNwZWNCaWdJbnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSwgflNwZWNIZWFwQmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92
ZW47CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGVmYXVsdFRvRmFsc2UgPSBtX291dC5hbmNob3IobV9v
dXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgdHlw
ZSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOworCisgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGlu
dWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuRm9yQ2VsbCA9IG1fb3V0LmFu
Y2hvcihpc0hlYXBCaWdJbnQodmFsdWUsIHR5cGUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKEludDMyLCBkZWZhdWx0VG9G
YWxzZSwgcmV0dXJuRm9yQ2VsbCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAg
IHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCiAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuYmlnSW50U3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgfQogCi0gICAgTFZhbHVlIGlzQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzSGVhcEJpZ0ludChMVmFsdWUgY2VsbCwg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0JpZ0ludCkp
CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0Nl
bGwsIFNwZWNIZWFwQmlnSW50KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAg
IHJldHVybiBtX291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCkBAIC0xNzY4NSwxNiArMTgxMDUsMzUgQEAgcHJpdmF0
ZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0K
IAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAg
dm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCisgICAgewor
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNIZWFw
QmlnSW50LCBpc05vdEhlYXBCaWdJbnQoY2VsbCkpOworICAgIH0KKyAgICB2b2lkIHNwZWN1bGF0
ZUhlYXBCaWdJbnQoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNW
YWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjQmlnSW50LCBpc05vdEJpZ0ludChjZWxsKSk7Cisg
ICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQorICAgIHZvaWQgc3BlY3VsYXRl
SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQoZWRnZSwgbG93Q2VsbChlZGdlKSk7CisgICAgICAgIExWYWx1ZSB2YWx1
ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
RlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQs
IGlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCh2YWx1ZSkpOwogICAgIH0KIAorI2lm
IFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVl
KSwgZWRnZSwgU3BlY0JpZ0ludDMyLCBpc05vdEJpZ0ludDMyKHZhbHVlKSk7CisgICAgfQorCisg
ICAgdm9pZCBzcGVjdWxhdGVBbnlCaWdJbnQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmln
SW50LCBpc05vdEFueUJpZ0ludCh2YWx1ZSkpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBz
cGVjdWxhdGVOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewogICAg
ICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNPYmplY3Qs
IGlzTm90T2JqZWN0KGNlbGwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAyMTcxNWQzZGQyMi4uOWJiYTc0MzliY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAgICAg
IGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBK
U1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0
b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUklu
Zm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFsaXpl
IGFsbCBvYmplY3RzLiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmlu
ZGV4IGFiM2U5YzYyOWFkLi4yNTg5ZTJjZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNzID0g
MDsKICAgICAgICAgdW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9kZS5j
ZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAgaWYg
KCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsK
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUo
dm0pOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkpCiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5v
ZGVGbGFnczo6SW50ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNs
dWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcAppbmRleCA2Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNj
cmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1ZjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBoZWFwT2JqZWN0SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAgaWYg
KGNlbGwtPmlzQmlnSW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRy
eUdldFN0cmluZyh2bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNIZWFw
QmlnSW50KCkpIHsKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmlu
Zyh2bSwgYXNIZWFwQmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IDUxODhjMDIzOWRmLi5jOWZmOTZhODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
dW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGFyZ3VtZW50cywgdWludDMyX3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdU
eXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICBjYXNlIEJpZ0ludFR5cGU6CisgICAgY2Fz
ZSBIZWFwQmlnSW50VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmpl
Y3QsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGViODA4MmU5Yjdi
Li40OGVhYTQwM2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQog
ewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJl
OgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBz
dHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVl
LT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5n
cyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmUKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVl
KQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJ
bnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAg
Ly8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8g
fQpAQCAtNzA2LDcgKzcwOCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZh
bHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAKICAgICBhdXRv
IG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBi
cmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBi
cmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50
ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNo
SWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBA
IC03MjksNyArNzMxLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVU
b0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICBjb21wYXJlUHRy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgcmVzdWx0LCBy
ZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRo
aXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIGxvYWQzMihBZGRyZXNzKHZh
bHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHQpOwog
ICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwpAQCAtNzUyLDYgKzc1
NCwxNSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihW
TSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7
CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0
byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVl
LmdwcigpLCByZXN1bHQpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgdXJz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgY29tcGFyZTMyKGludmVydCA/
IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAg
IGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY29tcGFyZTY0
KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVUcnVlKSwgcmVzdWx0KTsKICNlbHNlCkBAIC03NjcsNyArNzc4LDcgQEAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0m
IHZtLCBKU1ZhbHVlUmVncyB2YWwKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcg
Y29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
IC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAg
ICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8v
ICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAt
Nzc3LDYgKzc4OCw4IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJl
cikgewogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZh
bHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAgLTc4Niw3ICs3OTksNyBAQCBBc3NlbWJseUhlbHBl
cnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFs
dWVSZWdzIHZhbAogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsK
ICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsK
LSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsK
KyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewog
ICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ICE9IEludmFsaWRHUFJSZWcpOwpAQCAtODE3LDcgKzgzMCw3IEBAIEFzc2VtYmx5SGVscGVyczo6
SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsCiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKGpzRW1wdHlTdHJpbmcodm0p
KSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMp
OworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNo
VGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIo
KSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKIApAQCAtODQyLDYgKzg1NSwxNSBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIH0K
IAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRv
IGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUu
Z3ByKCksIHNjcmF0Y2gpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIHVy
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBzY3JhdGNoKTsKKyAgICB0cnV0aHkuYXBwZW5kKGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgc2NyYXRjaCkpOworICAgIGRvbmUu
YXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdHJ1dGh5LmFwcGVuZChi
cmFuY2g2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGU5NWY4ZmUzNWRjLi5l
ZTY2ZTA1YmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTI5LDcgKzkyOSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hJ
Zk5vdEJvb2xlYW4ocmVncy50YWdHUFIoKSwgdGVtcEdQUik7CiAjZW5kaWYKICAgICB9Ci0gICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyKEdQUlJlZyBn
cHIsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0
ZXJzKQorICAgIHsKKyAgICAgICAgSnVtcCBudW1iZXIgPSBicmFuY2hJZk51bWJlcihncHIsIG1v
ZGUpOworICAgICAgICBKdW1wIGJpZ0ludDMyID0gYnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVt
YmVyKGdwciwgdGVtcEdQUik7CisgICAgICAgIG51bWJlci5saW5rKHRoaXMpOworICAgICAgICBy
ZXR1cm4gYmlnSW50MzI7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyS25vd25O
b3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICBBU1NF
UlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIp
OworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1w
R1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJp
Z0ludDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisg
ICAgeworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJl
Z3MuZ3ByKCksIHRlbXBHUFIpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJL
bm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAg
IEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVt
cEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyks
IHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIg
dGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJh
bmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNo
OCgKQEAgLTk1MSwxMyArOTgxLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBi
cmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1F
OiByZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBp
bnB1dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2VsbEdQ
UikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVt
cCBicmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RU
eXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9
CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJh
bmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkJp
Z0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0lu
dFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBi
cmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShj
ZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0lu
dChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBC
aWdJbnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikg
eyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1
bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZO
b3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTM1Niw2ICsxMzg3
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9
CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lk
IHVuYm94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIHVyc2hpZnQ2NCh0cnVz
dGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgIH0KKworICAgIHZvaWQgYm94
QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGxzaGlmdDY0KHRydXN0ZWRJbW0z
MkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgICAgIG9yNjQoVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkJpZ0ludDMyVGFnKSwgZ3ByKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCkBAIC0xNzI4LDcgKzE3NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICAg
ICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8g
ICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2lu
dCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAg
IC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCkBAIC0xNzM5LDYgKzE3ODMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMg
Ym9vbGVhbikgewogICAgICAgICAvLyAgICAgcmV0dXJuIGJvb2xlYW4KKyAgICAgICAgLy8gfSBl
bHNlIGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAg
ICAgICAvLyB9IGVsc2UgewogICAgICAgICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAg
ICAvLyB9CkBAIC0xNzcwLDEwICsxODE2LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBub3RTdHJp
bmcubGluayh0aGlzKTsKIAotICAgICAgICBKdW1wIG5vdEJpZ0ludCA9IGJyYW5jaElmTm90Qmln
SW50KGNlbGxHUFIpOworICAgICAgICBKdW1wIG5vdEhlYXBCaWdJbnQgPSBicmFuY2hJZk5vdEhl
YXBCaWdJbnQoY2VsbEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBm
YWxzZSk7CiAKLSAgICAgICAgbm90QmlnSW50LmxpbmsodGhpcyk7CisgICAgICAgIG5vdEhlYXBC
aWdJbnQubGluayh0aGlzKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpTeW1ib2wsIGZh
bHNlKTsKICAgICAgICAgCiAgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKQEAgLTE3ODksNiAr
MTgzNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXAgbm90Qm9vbGVhbiA9IGJyYW5jaElmTm90
Qm9vbGVhbihyZWdzLCB0ZW1wR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCb29s
ZWFuLCBmYWxzZSk7CiAgICAgICAgIG5vdEJvb2xlYW4ubGluayh0aGlzKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgSnVtcCBub3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJL
bm93bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsKKyAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBl
OjpCaWdJbnQsIGZhbHNlKTsKKyAgICAgICAgbm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRp
ZgogICAgICAgICAKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpVbmRlZmluZWQsIHRydWUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOS4uZDVl
YTk5ZjMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM3MCw2ICszNzAsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9pc191bmRlZmluZWRfb3JfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2Jvb2xlYW4p
CiAgICAgICAgIERFRklORV9PUChvcF9pc19udW1iZXIpCisgICAgICAgIERFRklORV9PUChvcF9p
c19iaWdfaW50KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJ
TkVfT1Aob3BfaXNfY2VsbF93aXRoX3R5cGUpCiAgICAgICAgIERFRklORV9PUChvcF9qZXFfbnVs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxLi5kMDQzZmNlYjEwYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MjgsNiArNTI4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzc4NjczZTE4
YWMuLjY3YjAwYjBhMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYy5jcHAKQEAgLTQ3Niw2ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CisgICAgLy8g
RklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVn
YXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDRmFz
dDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogfQogCkBAIC00ODQsNiArNDg1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCiAgICAgSklUTmVnSUMqIG5lZ0lDID0gYml0d2lzZV9jYXN0PEpJVE5lZ0lDKj4obV9pbnN0
cnVjdGlvblRvTWF0aElDLmdldChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKKyAgICAvLyBGSVhNRTog
aXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNp
bmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVtaXRNYXRoSUNTbG93PE9wTmVn
YXRlPihuZWdJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUsIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRo
TmVnYXRlT3B0aW1pemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAppbmRleCBmYzk0Y2EzNzI0OS4uZGI1ZDU4MmM4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjgzLDYgKzI4MywzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19u
dW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIEpJVDo6
ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0lu
dD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZD
ZWxsKHJlZ1QwKTsKKworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFz
ayksIHJlZ1QxKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDApOworICAgIGNvbXBhcmU2NChFcXVh
bCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlZ1QwKTsKKyAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworICAgIEp1bXAgZG9u
ZSA9IGp1bXAoKTsKKworICAgIGlzQ2VsbC5saW5rKHRoaXMpOworICAgIGNvbXBhcmU4KEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzIHsgcmVnVDAgfSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QpOworfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKK05PX1JF
VFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sK
KyAgICAvLyBJZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxX
aXRoVHlwZSBpbnN0ZWFkIG9mIGlzQmlnSW50LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisjZW5kaWYKKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtNTcw
LDI4ICs2MDEsNTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMo
c3JjMSwgcmVnVDAsIHNyYzIsIHJlZ1QxKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgYm90
aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmluZ3MpLgorCisgICAgLyogQXQgYSBoaWdoIGxldmVs
IHdlIGRvIChhc3N1bWluZyAndHlwZScgdG8gYmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlz
IERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
cmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8g
ZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCisKKyAg
ICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3Vs
ZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51
bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRo
ZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9u
bHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7
CisgICAgbW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAg
ICBhZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVn
VDUpOworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChB
Ym92ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdU
MCwgcmVnVDEsIHJlZ1Q1KTsKKyAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywg
cmVnVDUpOworCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5n
cyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmln
SW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmlu
Z3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZkNlbGwocmVnVDIpKTsKLSAgICAKLSAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVy
IGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmlu
ZSwgYW5kIHRoZW4gdGVzdAotICAgIC8vIGlmIGl0J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0
T0sgPSBicmFuY2hJZkludDMyKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk51bWJl
cihyZWdUMCkpOwotICAgIGxlZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGJy
YW5jaElmSW50MzIocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJlZ1Qx
KSk7Ci0gICAgcmlnaHRPSy5saW5rKHRoaXMpOwogCi0gICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9w
U3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKLSAgICAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMSwg
cmVnVDAsIHJlZ1QwKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVn
VDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKLQotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICBkb25lLmxp
bmsodGhpcyk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0
RXEpCisgICAgICAgIHhvcjY0KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xl
YW4ocmVnVDUsIEpTVmFsdWVSZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIHJlZ1Q1KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYxNCwyNCArNjY4LDQ4IEBAIHZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMx
LCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCi0gICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNl
bGxzICh0byBjb3ZlciBzdHJpbmdzKS4KKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFz
c3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8
IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgIGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdo
dCBpcyBDZWxsKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBub3RUYWtlbjsKKyAg
ICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8
fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0
IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIv
YnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMg
YW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywg
bGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIg
YXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8g
TGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgbW92ZShyZWdU
MCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOworICAgIGFkZDY0KHJlZ1Q1LCBy
ZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBsc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsKKworICAgIEp1bXAgYXJlRXF1
YWwgPSBicmFuY2g2NChFcXVhbCwgcmVnVDAsIHJlZ1QxKTsKKyAgICBpZiAodHlwZSA9PSBDb21w
aWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQorICAgICAgICBhZGRKdW1wKGFyZUVxdWFsLCB0
YXJnZXQpOworCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5n
cyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTog
d2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmln
SW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmlu
Z3MKKyNlbHNlCisgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBz
dHJpbmdzKS4KICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CisjZW5kaWYKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZkNlbGwocmVnVDIpKTsKIAotICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMg
YSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBh
bmQgdGhlbiB0ZXN0Ci0gICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9
IGJyYW5jaElmSW50MzIocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVtYmVyKHJl
Z1QwKSk7Ci0gICAgbGVmdE9LLmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gYnJhbmNo
SWZJbnQzMihyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsK
LSAgICByaWdodE9LLmxpbmsodGhpcyk7Ci0KLSAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKQotICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KEVxdWFsLCByZWdU
MSwgcmVnVDApLCB0YXJnZXQpOwotICAgIGVsc2UKLSAgICAgICAgYWRkSnVtcChicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKKyAgICBpZiAodHlwZSA9PSBDb21waWxl
T3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkgeworICAgICAgICBhZGRKdW1wKGp1bXAoKSwgdGFy
Z2V0KTsKKyAgICAgICAgYXJlRXF1YWwubGluayh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNjg2LDcgKzc2NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHNyY1ZSZWcsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAg
aXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAxYzMwNzc2OWRh
YS4uNDg0MDMwMGIyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTI4OCw2ICsyODgsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFN0b3Jl
Qm9vbChkc3QsIHJlZ1QwKTsKIH0KIAorTk9fUkVUVVJOIHZvaWQgSklUOjplbWl0X29wX2lzX2Jp
Z19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIC8vIFdlIGVtaXQgaXNfY2VsbF93aXRo
X3R5cGUgaW5zdGVhZCwgc2luY2UgQmlnSW50MzIgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1iaXQg
cGxhdGZvcm1zLgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKQEAgLTg2Niw3ICs4NzIsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAgSnVtcCBpc05vdENlbGwgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90QmlnSW50
KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7
CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZGE4
MmYzMWUxYjguLjMxNDVjODAxODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTEzMTYsNiArMTMxNiwxOSBAQCBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jbwogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChnbG9iYWxPYmplY3QsIHNyYzEs
IHNyYzIpOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50KQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKGhlYXBCaWdJbnQtPmlzSGVh
cEJpZ0ludCgpKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KGhlYXBCaWdJ
bnQpLT5lcXVhbHNUb0ludDMyKHNtYWxsSW50KTsKK30KKyNlbmRpZgorCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3Qg
SlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CkBAIC0yODM5LDYgKzI4NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAg
IHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
ICphcml0aFByb2ZpbGUpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNh
bGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBh
IEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Bl
cmFuZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODUxLDggKzI4
NjUsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0g
b3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJp
bVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJ
bnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2
YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9
IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1
ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3Vi
bGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODYwLDYgKzI4ODIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJl
IGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3Bl
cmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4NzQsMTAgKzI4OTcsMjAgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQu
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewot
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmln
SW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlz
QmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMy
QXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7CisgICAg
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBwcmlt
VmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgor
ICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkp
OwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKLQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0yODg4LDYgKzI5
MjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRo
b3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJ
bnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpAQCAtMjkwOCw5ICsyOTQyLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZh
bHVlKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIo
KTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVlID0g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAo
cHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAg
ICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CkBAIC0yOTIyLDYgKzI5NjcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlv
blZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklU
TmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI5
NDEsOSArMjk4NywxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBw
cmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgCi0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmln
SW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgLy8gRklYTUU6IHdoeSBkb2VzIHRoaXMgZnVuY3Rpb24gcHJvZmlsZSB0aGUg
YXJndW1lbnQgYnV0IG5vdCB0aGUgcmVzdWx0PworICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQz
MigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSkpOworICAg
ICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0K
KyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hl
YXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA1
YzFmYzM3NjE2MC4uNDc2YjM2ZGQ0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0yMDQsNiArMjA0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWQK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogI2lm
IFVTRShKU1ZBTFVFNjQpCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogbGVmdCwgSlNDZWxsKiByaWdo
dCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVx
SGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGhlYXBCaWdJbnQsIGlu
dDMyX3Qgc21hbGxJbnQpIFdURl9JTlRFUk5BTDsKICNlbHNlCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGxlZnQs
IEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmluZGV4IDUyNDM1YTY2
MTIwLi4yYTJiYjk5Zjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTM2LDYgKzEzNiwxMiBAQAogI2RlZmluZSBP
RkZMSU5FX0FTTV9KU1ZBTFVFNjQgMAogI2VuZGlmCiAKKyNpZiBVU0UoQklHSU5UMzIpCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJ
R0lOVDMyIDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgT0ZGTElORV9B
U01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTEzNjQzOTAyYjYuLmNkMWMwMmE3ZDNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xOTYsNiArMTk2LDExIEBAIGlmIEpTVkFMVUU2NAogICAgIGNvbnN0IFZh
bHVlTnVsbCAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1ZU51bGwKICAgICBjb25zdCBU
YWdOdW1iZXIgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TnVtYmVyVGFnCiAgICAgY29uc3Qg
Tm90Q2VsbE1hc2sgICAgID0gY29uc3RleHByIEpTVmFsdWU6Ok5vdENlbGxNYXNrCisgICAgaWYg
QklHSU5UMzIKKyAgICAgICAgY29uc3QgVGFnQmlnSW50MzIgPSBjb25zdGV4cHIgSlNWYWx1ZTo6
QmlnSW50MzJUYWcKKyAgICAgICAgY29uc3QgTWFza0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFs
dWU6OkJpZ0ludDMyTWFzaworICAgIGVuZAorICAgIGNvbnN0IExvd2VzdE9mSGlnaEJpdHMgPSBj
b25zdGV4cHIgSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cwogZWxzZQogICAgIGNvbnN0IEludDMy
VGFnID0gY29uc3RleHByIEpTVmFsdWU6OkludDMyVGFnCiAgICAgY29uc3QgQm9vbGVhblRhZyA9
IGNvbnN0ZXhwciBKU1ZhbHVlOjpCb29sZWFuVGFnCkBAIC01MjEsNiArNTI2LDcgQEAgY29uc3Qg
SlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlvblR5cGUKIGNvbnN0IEFycmF5VHlw
ZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSBjb25zdGV4
cHIgRGVyaXZlZEFycmF5VHlwZQogY29uc3QgUHJveHlPYmplY3RUeXBlID0gY29uc3RleHByIFBy
b3h5T2JqZWN0VHlwZQorY29uc3QgSGVhcEJpZ0ludFR5cGUgPSBjb25zdGV4cHIgSGVhcEJpZ0lu
dFR5cGUKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJlZCBpbiBh
IHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgogIyBzd2l0
Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDYyNjUyYTY2MjM1Li4xNGViNWZmYWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTEz
MDMsNiArMTMwMywxMiBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1i
ZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiBlbmQpCiAKIAorIyBPbiAz
Mi1iaXQgcGxhdGZvcm1zIEJJR0lOVDMyIGlzIG5vdCBzdXBwb3J0ZWQsIHNvIHdlIGdlbmVyYXRl
IG9wX2lzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQgb2Ygb3BfaXNfYmlnX2ludAorbGxpbnRPcChv
cF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyh1bnVzZWQsIHVudXNlZCwgdW51c2VkKQor
ICAgIG5vdFN1cHBvcnRlZCgpCitlbmQpCisKKwogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2Vs
bF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDAsIHQzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzNDE2ODBhYmVlOC4uM2YwYjhh
NjZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODQ0LDI0ICs4NDQsNDggQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
dW5kZWZpbmVkX29yX251bGwsIE9wSXNVbmRlZmluZWRPck51bGwsIG1hY3JvIChzaXplLCBnZXQK
IGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1
YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgY3JlYXRlQm9vbGVhbikKICAgICBsbGludE9wV2l0aFJldHVybihvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICAg
ICAgZ2V0KG1fcmhzLCB0MCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDIsIHQwKQorCisgICAgICAgICMgQXQgYSBoaWdoIGxldmVsIHdlIGRvCisg
ICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAg
IyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7
CisgICAgICAgICMgaWYgKHJlc3VsdCkKKyAgICAgICAgIyAgICAgZ290byBkb25lOworICAgICAg
ICAjIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290
byBzbG93UGF0aDsKKyAgICAgICAgIyBkb25lOgorICAgICAgICAjIHJldHVybiByZXN1bHQ7CisK
KyAgICAgICAgIyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJp
Z2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhh
dCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFu
Y2hJZk51bWJlcgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBh
biBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBs
ZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJl
ciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAg
ICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICAgICAg
bW92ZSB0MCwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAgICAgbW92ZSBMb3dlc3RPZkhp
Z2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAgICBhZGRxIHQ1LCB0MworICAg
ICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgMSwgdDUKKyAgICAgICAgYnFhZXEgdDMs
IHQ1LCAuc2xvdworCisgICAgICAgIGNxZXEgdDAsIHQxLCB0NQorICAgICAgICBidHFueiB0NSwg
dDUsIC5kb25lICNpcyB0aGVyZSBhIGJldHRlciB3YXkgb2YgY2hlY2tpbmcgdDUgIT0gMCA/CisK
ICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICAjIFRoaXMg
YW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5vdCBmb3IgQmlnSW50MzIgKHNpbmNlIGl0IG1ha2Vz
IGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8gYmUgc3RyaWN0RXF1YWwgdG8gYSBub24tQ2VsbCkK
KyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwgbm90Q2VsbE1hc2ssIC5zbG93
Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAs
IG51bWJlclRhZywgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAgICBicWFlcSB0MSwgbnVtYmVy
VGFnLCAucmlnaHRPSwotICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5y
aWdodE9LOgotICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQotICAgICAgICBv
cnEgVmFsdWVGYWxzZSwgdDAKLSAgICAgICAgcmV0dXJuKHQwKQorCisgICAgLmRvbmU6CisgICAg
ICAgIGNyZWF0ZUJvb2xlYW4odDUpCisgICAgICAgIHJldHVybih0NSkKIAogICAgIC5zbG93Ogog
ICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCkBAIC04NzEsMzMg
Kzg5NSw1MyBAQCBlbmQKIAogCiBzdHJpY3RFcU9wKHN0cmljdGVxLCBPcFN0cmljdGVxLAotICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
KQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVlRmFsc2UsIG9wZXJhbmQgZW5kKQogCiAK
IHN0cmljdEVxT3AobnN0cmljdGVxLCBPcE5zdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQsIHJlc3VsdCkgY3FuZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9w
ZXJhbmQpIHhvcnEgVmFsdWVUcnVlLCBvcGVyYW5kIGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcXVh
bGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQor
bWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBqdW1w
SWZFcXVhbCwganVtcElmTm90RXF1YWwpCiAgICAgbGxpbnRPcFdpdGhKdW1wKG9wXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAg
ICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDMsIHQxKQorCisgICAgICAgICMgQXQgYSBoaWdoIGxldmVsIHdlIGRv
CisgICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAg
ICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyBpZiAobGVmdCA9PSByaWdodCkKKyAg
ICAgICAgIyAgICAgZ290byBqdW1wVGFyZ2V0OworICAgICAgICAjIGlmIChsZWZ0IGlzIENlbGwg
fHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAg
IyBnb3RvIG90aGVySnVtcFRhcmdldAorCisgICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1l
bnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJy
YW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3
ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sg
aXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0
IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAg
ICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRz
IG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUg
b3IgZXF1YWwgMTw8NTAuCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgIG1vdmUgdDEsIHQz
CisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAgICAgYWRkcSB0NSwgdDIK
KyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0MworICAgICAgICBsc2hpZnRx
IDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAgICAgICBicWVxIHQwLCB0
MSwgLmVxdWFsCisKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAg
ICAgICAjIFRoaXMgYW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5vdCBmb3IgQmlnSW50MzIgKHNp
bmNlIGl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8gYmUgc3RyaWN0RXF1YWwgdG8g
YSBub24tQ2VsbCkKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwgbm90Q2Vs
bE1hc2ssIC5zbG93Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sKLSAgICAg
ICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAgICBicWFl
cSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSwotICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAu
c2xvdwotICAgIC5yaWdodE9LOgotICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIC5q
dW1wVGFyZ2V0KQotICAgICAgICBkaXNwYXRjaCgpCiAKLSAgICAuanVtcFRhcmdldDoKLSAgICAg
ICAganVtcChtX3RhcmdldExhYmVsKQorICAgICAgICBqdW1wSWZOb3RFcXVhbChqdW1wLCBtX3Rh
cmdldExhYmVsLCBkaXNwYXRjaCkKKworICAgIC5lcXVhbDoKKyAgICAgICAganVtcElmRXF1YWwo
anVtcCwgbV90YXJnZXRMYWJlbCwgZGlzcGF0Y2gpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtOTA3LDMzICs5NTEs
MzYgQEAgZW5kCiAKIAogc3RyaWN0RXF1YWxpdHlKdW1wT3AoanN0cmljdGVxLCBPcEpzdHJpY3Rl
cSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCkKLQorICAgIG1hY3JvIChqdW1wLCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGp1bXAo
dGFyZ2V0TGFiZWwpIGVuZCwKKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNo
KSBkaXNwYXRjaCgpIGVuZCkKIAogc3RyaWN0RXF1YWxpdHlKdW1wT3Aoam5zdHJpY3RlcSwgT3BK
bnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBicW5lcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCkKKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNo
KSBkaXNwYXRjaCgpIGVuZCwKKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNo
KSBqdW1wKHRhcmdldExhYmVsKSBlbmQpCiAKIG1hY3JvIHByZU9wKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbikKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVv
cGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gdXBkYXRlQXJpdGhQcm9maWxlKHR5cGUpCi0g
ICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgICAgICAgICBvcmggdHlw
ZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQ
cm9maWxlOjptX2JpdHNbdDJdCiAgICAgICAgIGVuZAogCi0gICAgICAgIGdldChtX3NyY0RzdCwg
dDApCi0gICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDMKLSAgICAgICAgbWV0YWRhdGEodDEs
IHQyKQotICAgICAgICAjIE1ldGFkYXRhIGluIHQxLCBzcmNEc3QgaW4gdDMKLSAgICAgICAgYnFi
IHQzLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgICAgIGludGVnZXJPcGVyYXRpb24odDMsIC5zbG93
KQotICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MwotICAgICAgICBzdG9yZXEgdDMsIFtjZnIsIHQw
LCA4XQotICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQotICAgICAg
ICBkaXNwYXRjaCgpCisgICAgZ2V0KG1fc3JjRHN0LCB0MCkKKyAgICBsb2FkcSBbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbWV0YWRhdGEodDIsIHQzKQorICAgICMgc3JjRHN0IGluIHQxLCBtZXRhZGF0
YSBpbiB0MgorICAgICMgRklYTUU6IHRoZSBuZXh0IGxpbmUganVtcHMgdG8gdGhlIHNsb3cgcGF0
aCBmb3IgQmlnSW50MzIuIFdlIGNvdWxkIGluc3RlYWQgaGF2ZSBhIGRlZGljYXRlZCBwYXRoIGlu
IGhlcmUgZm9yIHRoZW0uCisgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93CisgICAgaW50ZWdl
ck9wZXJhdGlvbih0MSwgLnNsb3cpCisgICAgb3JxIG51bWJlclRhZywgdDEKKyAgICBzdG9yZXEg
dDEsIFtjZnIsIHQwLCA4XQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQp
CisgICAgZGlzcGF0Y2goKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKKwogZW5k
CiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF90b19udW1iZXIsIE9wVG9OdW1iZXIsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCkBAIC0xMjc5LDYgKzEzMjYsMjYgQEAgbGxpbnRP
cFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgIHJldHVybih0MSkKIGVuZCkKIAoraWYgQklHSU5UMzIKKyAg
ICBsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyhzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgICAgIGdldChtX29wZXJhbmQsIHQxKQorICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICAgICAgYnRxbnog
dDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICAgICAgY2JlcSBKU0NlbGw6Om1fdHlw
ZVt0MF0sIEhlYXBCaWdJbnRUeXBlLCB0MQorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKKyAg
ICAgICAgcmV0dXJuKHQxKQorICAgIC5ub3RDZWxsQ2FzZToKKyAgICAgICAgYW5kcSBNYXNrQmln
SW50MzIsIHQwCisgICAgICAgIGNxZXEgdDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgICAgICBvcnEg
VmFsdWVGYWxzZSwgdDAKKyAgICAgICAgcmV0dXJuKHQwKQorICAgIGVuZCkKK2Vsc2UKKyMgaWYg
QklHSU5UMzIgaXMgbm90IHN1cHBvcnRlZCB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhfdHlw
ZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKKyAgICBsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9w
SXNCaWdJbnQsIG1hY3JvKHVudXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgICAgIG5vdFN1cHBv
cnRlZCgpCisgICAgZW5kKQorZW5kCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0
aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggODRmZTM5OWNk
OGMuLjRiOTQ0NTA1ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmNwcApAQCAtODMsNiArODMsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmll
ckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAg
ICBpZiAocmFkaXggPT0gMTApCiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmlnSW50ID0g
SlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRp
eCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQ
YXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
CiAgICAgLy8gRklYTUU6IFdlIGFyZSBhbGxvY2F0aW5nIGEgSlNCaWdJbnQganVzdCB0byBiZSBh
YmxlIHRvIHVzZQogICAgIC8vIEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcgd2hlbiByYWRpeCBpcyBu
b3QgMTAuCiAgICAgLy8gVGhpcyBjcmVhdGVzIHNvbWUgR0MgcHJlc3N1cmUsIGJ1dCBzaW5jZSB0
aGVzZSBpZGVudGlmaWVycwpAQCAtOTAsMTEgKzk0LDE1IEBAIGNvbnN0IElkZW50aWZpZXImIElk
ZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3Qg
SWRlCiAgICAgLy8gaXQgd29udCBiZSBtdWNoIHByb2JsZW1hdGljLCBnaXZlbiBzdWNoIGNhc2Vz
IGFyZSB2ZXJ5IHJhcmUuCiAgICAgLy8gVGhlcmUgaXMgYSBsb3Qgb2Ygb3B0aW1pemF0aW9ucyB3
ZSBjYW4gYXBwbHkgaGVyZSB3aGVuIG5lY2Vzc2FyeS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjI3Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJz
ZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpF
cnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpV
bnNpZ25lZCk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX2lkZW50aWZp
ZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3Ry
aW5nKHZtLCBiaWdJbnQsIDEwKSkpOworICAgIEpTQmlnSW50KiBoZWFwQmlnSW50OworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgaGVhcEJp
Z0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkp
OworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBoZWFwQmlnSW50ID0gYmlnSW50LmFzSGVhcEJp
Z0ludCgpOworCisgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgaGVhcEJpZ0ludCwgMTApKSk7CiAgICAg
cmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMDdkOGU4YzgyMWMuLmVlOGZm
ZmM1NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5o
IgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3Bw
CmluZGV4IDc3ZDhjYWYyMzY4Li44ZWQxNGFhOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDE4ICs3NSw2IEBAIHZv
aWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90
eXBlKiBiaWdJbnRQcm90b3R5cGUpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBib29sIGlz
U2FmZUludGVnZXIoSlNWYWx1ZSBhcmd1bWVudCkKLXsKLSAgICBpZiAoYXJndW1lbnQuaXNJbnQz
MigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghYXJndW1lbnQuaXNEb3VibGUo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG91YmxlIG51bWJlciA9IGFyZ3VtZW50
LmFzRG91YmxlKCk7Ci0gICAgcmV0dXJuIHRydW5jKG51bWJlcikgPT0gbnVtYmVyICYmIHN0ZDo6
YWJzKG51bWJlcikgPD0gbWF4U2FmZUludGVnZXIoKTsKLX0KLQogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1l
bnQpCiB7CiAgICAgQVNTRVJUKGFyZ3VtZW50LmlzUHJpbWl0aXZlKCkpOwpAQCAtOTQsMjAgKzgy
LDI0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIAogICAgIGlmIChhcmd1bWVudC5pc0Jp
Z0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKLSAgICAK
KworICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOwor
I2VuZGlmCisgICAgfQorCisgICAgaWYgKGFyZ3VtZW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
cmV0dXJuIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgeworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IEFTU0VSVChhcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVy
KCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkKLSAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSkpOwotICAgIAotICAgIGlmIChhcmd1
bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1l
bnQuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24i
X3MpOwotICAgIAotICAgIEFTU0VSVChhcmd1bWVudC5pc1N0cmluZygpKTsKLSAgICAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKLSAgICB9KSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
YXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzEx
MSwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0g
dmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIo
KSkgewotICAgICAgICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cHJpbWl0aXZlLmFzSW50MzIoKSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKSB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0
aXZlLmFzSW50MzIoKSkpOworI2VuZGlmCisgICAgfQogCi0gICAgICAgIGlmIChwcmltaXRpdmUu
aXNVSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2
ZS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3Vi
bGUoKTsKKyAgICAgICAgaWYgKHRydW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51
bWJlcikgPiBtYXhTYWZlSW50ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5v
dCBhIHNhZmUgaW50ZWdlciJfcykpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5h
c0RvdWJsZSgpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpt
YWtlSGVhcEJpZ0ludE9yQmlnSW50MzIodm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2
ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3Vs
dCA9IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUw
MDQ1ZGFjOTYuLmU2MTk4MmI5M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludE9iamVjdC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoQmlnSW50T2JqZWN0KTsKIGNvbnN0IENsYXNzSW5mbyBCaWdJbnRP
YmplY3Q6OnNfaW5mbyA9IHsgIkJpZ0ludCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQmlnSW50T2JqZWN0KSB9OwogCiAKLUJpZ0ludE9iamVj
dCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0JpZ0ludCogYmlnSW50KQorQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmlnSW50KQog
ewogICAgIEJpZ0ludE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
QmlnSW50T2JqZWN0Pih2bS5oZWFwKSkgQmlnSW50T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJp
Z0ludE9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBi
aWdJbnQpOwpAQCAtNDksNyArNDksNyBAQCBCaWdJbnRPYmplY3Q6OkJpZ0ludE9iamVjdChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIEJpZ0ludE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0JpZ0ludCogYmlnSW50KQordm9pZCBCaWdJbnRPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCmluZGV4IDQ0ZmM3NmZi
ZGY5Li5hNjM1NGExNmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50T2JqZWN0LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENh
aW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpT
QmlnSW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNDEsMTEgKzQwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLmJpZ0ludE9i
amVjdFNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCopOworICAgIHN0YXRpYyBCaWdJbnRP
YmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCi0gICAgSlNCaWdJbnQqIGludGVybmFsVmFsdWUoKSBjb25zdCB7
IHJldHVybiBhc0JpZ0ludChKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7IH0KKyAg
ICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1dyYXBwZXJPYmplY3Q6
OmludGVybmFsVmFsdWUoKTsgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtNTcsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQmln
SW50Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
VmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEJpZ0ludE9iamVjdChWTSYsIFN0cnVjdHVy
ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFBy
b3RvdHlwZS5jcHAKaW5kZXggZDA1ODljZjQyYjIuLmRmZjBmMTY1N2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTgwLDEy
ICs4MCwyNCBAQCB2b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNC
aWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAvLyBGSVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmlj
aWVudCwgYnV0IHJlLWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBl
bm91Z2ggd29yayB0aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBp
ZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCB0aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBp
ZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0g
anNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3Qq
IGJpZ0ludE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1
ZS5hc0NlbGwoKSkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZh
bHVlKCk7CisKKyAgICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAg
ICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJ
bnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFw
QmlnSW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEy
MCw2ICsxMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhl
IHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5kcyBhbmQgc2ltaWxhciB0aGluZ3MuCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBlM2JlZDg4ZDgzYS4uNTg5Yzg5Nzg4YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNs
dWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDY5
LDEzICs0NjgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAg
ICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJl
cihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAgUkVUVVJOX1dJVEhf
UFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBA
IC00ODQsMTMgKzQ3OCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwogICAgIEpTVmFsdWUg
YXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlh
bnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGdsb2JhbE9iamVjdCwg
YXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0Owot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkp
Ci0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpz
TnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsKICAgICBSRVRVUk5f
V0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9
CiAKQEAgLTUwNyw3ICs0OTYsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9y
VW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICBVbmFy
eUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHBy
b2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkg
fHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgeworCisg
ICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZl
ZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0Lmlz
QmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5k
aWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0lu
dDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDMyT3ZlcmZsb3co
KTsKQEAgLTUyNywxMCArNTI0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9y
VW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHByb2Zp
bGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UKIHN0YXRpYyB2b2lk
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBK
U1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0NSw4ICs1MzksMjEgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigp
OwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAg
ICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAg
IGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFs
dWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHByaW1WYWx1ZS5p
c0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9X
SVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
clVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBA
IC01ODQsOCArNTkxLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFy
eUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAg
ICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxzZSAKICAgICAg
ICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwNywxMyArNjE4LDgg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50
PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsK
LSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQp
KQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwot
ICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1
bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY0OSw3
ICs2NTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9s
bG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUg
dG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2Fs
bCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50
MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRl
bXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJh
bWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcxLDI0ICs2NzcsOCBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpz
VmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFs
dWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQs
IGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhS
T1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0
PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3Vs
dCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03
MDAsMjYgKzY5MCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBi
eXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRl
Y29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29k
ZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJp
YyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYoZ2xvYmFsT2JqZWN0
LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51
bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9i
YWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAg
ICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0K
LSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJs
ZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsK
ICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMxLDI0
ICs3MDMsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWlu
ZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAg
Ci0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3Vi
bGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1i
ZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3BvdykKQEAgLTc1NywyNSArNzE0LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpT
VmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0
TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAg
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBv
cGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51
bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsK
KyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlm
dCkKQEAgLTc4NCwyMiArNzI1LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQp
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxl
ZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQg
PSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMg
PSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQg
c2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1i
ZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90Pihy
aWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlm
dCkKQEAgLTgwOCwyMiArNzM3LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQp
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxl
ZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQg
PSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMg
PSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJl
c3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVS
Tl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdU
Rjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg0OSw3OSArNzY2LDQ3IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRl
Y29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
b3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhi
eXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051
bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1
bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVj
b2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29k
ZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJp
dHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9u
LiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsK
IAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVt
ZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5
dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAg
ICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsK
KyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAg
IH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0
TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdF
VF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicg
b3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90
PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMzNDU0NDJmNTQuLjQ2YTliMTAxNTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21h
aWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlIGluaXRU
eXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSGVhcEJp
Z0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4OCwzNCArMTg4LDIxIEBAIEpTVmFsdWUgSlNC
aWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpOwogfQogCi1P
cHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpCi17
Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAobGVu
Z3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAgICAgIERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDAp
OwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJp
bmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCitKU1ZhbHVlIEpTQmlnSW50Ojpw
YXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9y
UGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJl
dHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwg
cGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0
ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdW
aWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50
U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFy
c2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQogewogICAgIGlmIChzLmlzOEJp
dCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0
ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRN
b2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1v
ZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CiB9CiAKLUpTQmln
SW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQogewogICAgIHJldHVybiBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsK
IH0KQEAgLTQ1NCwxNiArNDQxLDIzIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0luCiAKIEpTQmln
SW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFp
ciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUu
Z2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVBZGRP
bmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpVbnNpZ25lZCk7CisgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOwor
ICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0Jp
Z0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZh
aXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25l
LmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCAxKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoIXgt
PnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeCwg
eC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgs
IFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6YWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUz
Miw3ICs1MjYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSQogICAgIGlmICh4LT5zaWduKCkp
CiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAKLSAgICAvLyB4ICYgKC15KSA9PSB4ICYg
fih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpCiAgICAg
SlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgo
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgcmV0dXJu
IGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBAIC0xNjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcg
SlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgdW5zaWduZWQgcmFk
aXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJldmlzaXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8g
SlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5nOwogCiAgICAgQVNT
RVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwpAQCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9v
bCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1K
U0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBh
cnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9k
ZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAK
QEAgLTE4MTAsNyArMTgwNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAgICAgd2hpbGUg
KHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0pKQogICAgICAgICArK3A7CiAK
LSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJhY3RlcnMKKyAgICAvLyBDaGVjayBS
YWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAn
KSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAn
YicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEs
IGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ246OlVuc2lnbmVk
LCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwpAQCAtMTgyNCwyNCArMTgxOCwx
OCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogCiAgICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQ
YXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlmIChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlm
IChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgZWxzZSBpZiAoZGF0
YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRhdGFbcF0gPT0gJy0nKSB7CiAgICAgICAgICAg
ICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7CiAgICAgICAgICAgICArK3A7Ci0gICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3BdID09ICcrJykKKyAgICAgICAgICAgICsrcDsK
ICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2
bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwotCi0gICAgaWYg
KHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKLSAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNp
Z24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJy
b3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1K
U0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJ
bmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJz
ZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6
OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFk
aXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFy
c2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwogICAgIHVu
c2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1Miw3ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENo
YXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmIChl
cnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQogICAgICAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9y
KGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAK
ICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCkBAIC0xODY2LDQ0ICsxODU0LDg0IEBAIEpT
QmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CiAKLSAg
ICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAgPT0gbGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNl
bHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKLQotICAgIHVuc2lnbmVkIGxpbWl0
MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRh
ID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChyYWRp
eCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmpl
Y3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0
IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJv
dyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5
cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkr
KywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAgICAgICBpZiAoZGF0YVtpXSA+
PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAt
ICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0
YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyArIDEwOwotICAgICAgICBlbHNl
IGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRBKQotICAgICAgICAgICAgZGln
aXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0
PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworI2VuZGlmCiAgICAgfQogCi0g
ICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQgPyB0cnVlIDog
ZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmln
aHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IG51bWJl
ciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgK
KyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOworICAgIHN3aXRjaCAocmFkaXgp
IHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMy
ID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6CisgICAgICAgIGxlbmd0aExpbWl0
Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgICBs
ZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0cjsKIAotICAgIEFTU0VSVChn
bG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6
VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmlu
ZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAg
PyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8
aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGxpbWl0QSA9ICdBJyArIChzdGF0
aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgaW5pdGlhbExlbmd0
aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBsZW5ndGgpIHsKKyAgICAgICAgaW50MzJf
dCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBt
dWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsraSwgKytwKSB7CisgICAgICAgICAgICBk
aWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gcmFkaXg7CisgICAgICAg
ICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtwXSA8IGxpbWl0MCkKKyAgICAgICAgICAg
ICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtw
XSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBk
YXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdBJyAm
JiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAn
QScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChlcnJvclBh
cnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwgbXVsdGlwbGllci51bnNhZmVHZXQoKSk7
CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7CisgICAgICAgICAgICBpZiAocCA9PSBsZW5n
dGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCkK
KyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsK
KyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0
PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhl
YXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgaW5pdGlhbExl
bmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhh
dmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBh
biBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgaWYgKCFoZWFwUmVzdWx0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBoZWFwUmVzdWx0
LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOworICAgICAgICB9Cisg
ICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4o
bXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOworICAg
IH0KIAotICAgIHJldHVybiBudWxscHRyOworICAgIGhlYXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9
PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAgcmV0dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJp
bSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2ln
bmVkIG4pCkBAIC0xOTI3LDE4ICsxOTU1LDIwIEBAIGJvb2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVt
YmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAgQVNTRVJUKG51bVZhbHVlLmlzTnVtYmVyKCkp
OwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpIHsKLSAgICAgICAgaW50IHZhbHVl
ID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAgICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkg
PT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDAp
ID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1
ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVy
biBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50MzIoKSk7CiAgICAgCiAgICAgZG91YmxlIHZh
bHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAgICByZXR1cm4gY29tcGFyZVRvRG91YmxlKHRo
aXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKIH0KIAorYm9vbCBKU0JpZ0lu
dDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09
IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUp
KSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRv
RG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIHsKICAgICAvLyBUaGlzIGFsZ29yaXRobSBl
eHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJRUVFIDc1NApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0ZTYwOTlmNDcuLjhlMmMxNDhlNmNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw2ICs4MiwxNyBAQCBw
dWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQogCisgICAgc3RhdGljIEpTVmFsdWUgbWFrZUhlYXBCaWdJbnRPckJpZ0ludDMyKFZNJiB2bSwg
aW50NjRfdCB2YWx1ZSkKKyAgICB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAodmFs
dWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKTsK
KyNlbmRpZgorCisgICAgICAgIGF1dG8gcHRyID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoc3RhdGljX2Nhc3Q8SlNDZWxsKj4ocHRyKSk7
CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBFcnJvclBhcnNlTW9kZSB7CiAgICAgICAgIFRocm93
RXhjZXB0aW9ucywKICAgICAgICAgSWdub3JlRXhjZXB0aW9ucwpAQCAtOTAsMTMgKzEwMSwxMiBA
QCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUludE1vZGUgeyBEaXNhbGxvd0VtcHR5U3Ry
aW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51bSBjbGFzcyBQYXJzZUludFNpZ24geyBV
bnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9k
ZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNl
SW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpU
aHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChK
U0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJz
ZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQ
YXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0ds
b2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6
OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpTVmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3Ry
aW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRpeCk7CiAKLSAgICBPcHRpb25hbDx1aW50
OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwogICAgIAogICAgIGVudW0gY2xhc3MgQ29t
cGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOwog
ICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwogICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0
IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0
aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3Vs
dCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIzMywxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9y
UGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCos
IENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJz
ZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQ
YXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJ
bnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUludChK
U0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUlu
dFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2Rl
OjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRpYyBKU0JpZ0ludCogYWxsb2NhdGVGb3Io
SlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJhZGl4LCB1bnNpZ25lZCBjaGFyY291bnQp
OwogCkBAIC0yNTgsOSArMjY5LDkgQEAgcHJpdmF0ZToKICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwogfTsKIAotaW5saW5lIEpTQmlnSW50KiBh
c0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoSlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUuYXNDZWxsKCktPmlzQmlnSW50KCkpOwor
ICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpOwogICAgIHJldHVybiBq
c0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjQwMGVlOGJkYjIuLjM3MmFkZDJl
ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIz
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKKyNp
bmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0
dGVyLmgiCkBAIC03MSw2ICs3MiwxNCBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIEFTU0VSVCghaXNJbnQz
MigpICYmICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBh
c0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmln
SW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4w
OworICAgIH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsK
ICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBi
b3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTAsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6
OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAg
ICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJv
b2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJ
bnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7CisjZW5kaWYKIAogICAg
IEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMp
KTsKQEAgLTExOCw2ICsxMzEsMTQgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYg
KGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5G
cm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmln
SW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2Jq
ZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAgICAgICAvLyBGSVhNRTogdGhlcmUg
bXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGZpbmQgdG9UaGlzIGZvciBKU0JpZ0ludCwgYnV0IEkg
Y2FuJ3QgZXZlbiBmaW5kIHdoZXJlIGl0IGlzIGRlZmluZWQuCisgICAgICAgIHJldHVybiBoZWFw
QmlnSW50LT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3QpKS0+dG9UaGlzKGhlYXBCaWdJ
bnQsIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJU
KGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRo
aXMoKTsKIH0KQEAgLTEzMCw3ICsxNTEsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6
ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIGlmIChp
c0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBn
bG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwotICAgICAgICBpZiAoaXNCaWdJbnQoKSkK
KyAgICAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAg
ICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3ltYm9sUHJvdG90eXBlKCk7CkBAIC0xNDAsNiAr
MTYxLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pm51bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChpc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlwZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQ
cm90b3R5cGUoKTsKKyNlbmRpZgogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwog
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMjg2LDYgKzMxMSw4IEBAIHZvaWQgSlNW
YWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICAgICAgb3V0LnBy
aW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAo
c3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkK
ICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxT
dHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFw
QmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06
IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAg
ICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAg
ICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRlcmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0
KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAgLTMwNSw2ICszMzIsMTAgQEAgdm9pZCBKU1Zh
bHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgi
TnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgi
VW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIo
KSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0lu
dDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsK
IH0KQEAgLTM0Nyw2ICszNzgsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVs
c2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0
LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlm
CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM4NCwxOCAr
NDE5LDI1IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgcmV0dXJuRW1wCiAgICAgICAgIHJldHVybiB2bS5zbWFs
bFN0cmluZ3MubnVsbFN0cmluZygpOwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlmIChpc1N5bWJv
bCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5u
b3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7Ci0gICAgICAgIHJldHVybiBlcnJv
clZhbHVlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAg
ICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0gOSkKKyAgICAgICAgICAgIHJldHVybiB2bS5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGludGVnZXIgKyAnMCcpOworICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoaW50
ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCog
YmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byBkaWdpdCA9IGJpZ0lu
dC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnNt
YWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoKmRpZ2l0ICsgJzAnKTsKLSAgICAgICAg
SlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgYmlnSW50LT50
b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7CisjZW5kaWYKKyAgICBpZiAoaXNIZWFwQmlnSW50
KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzSGVhcEJpZ0ludCgpOworICAgICAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJhdGhlciBoYXZlIHR3byBjYXNlcyBoZXJlOiBvbmUtY2hh
cmFjdGVyIHN0cmluZyB2cyBqc05vblRyaXZpYWxTdHJpbmcgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4K
KyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IEpTU3RyaW5nOjpjcmVhdGUodm0sIGJp
Z0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkucmVsZWFzZUltcGwoKS5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZXJyb3JWYWx1ZSgp
KTsKICAgICAgICAgcmV0dXJuIHJldHVyblN0cmluZzsKICAgICB9CisgICAgaWYgKGlzU3ltYm9s
KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9zKTsKKyAgICAgICAgcmV0dXJuIGVycm9y
VmFsdWUoKTsKKyAgICB9CiAKICAgICBBU1NFUlQoaXNDZWxsKCkpOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJTdHJpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDBiY2FiNDBi
OGQ5Li5kZDQ2ZmFkMDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0
ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTE3Nyw2ICsxNzcsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBKU1RydWVUYWcgeyBKU1RydWUgfTsK
ICAgICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNlIH07CiAgICAgZW51bSBKU0NlbGxUYWcgeyBK
U0NlbGxUeXBlIH07CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVudW0gSlNCaWdJbnQzMlRhZyB7
IEpTQmlnSW50MzIgfTsKKyNlbmRpZgogICAgIGVudW0gRW5jb2RlQXNEb3VibGVUYWcgeyBFbmNv
ZGVBc0RvdWJsZSB9OwogCiAgICAgSlNWYWx1ZSgpOwpAQCAtMTg2LDYgKzE4OSw5IEBAIHB1Ymxp
YzoKICAgICBKU1ZhbHVlKEpTRmFsc2VUYWcpOwogICAgIEpTVmFsdWUoSlNDZWxsKiBwdHIpOwog
ICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBK
U1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpOworI2VuZGlmCiAKICAgICAvLyBOdW1iZXJz
CiAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsKQEAgLTIxOSw2ICsyMjUs
OSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jv
b2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25zdDsgLy8gbXVzdCBvbmx5
IGJlIGNhbGxlZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAgICBpbnQzMl90IGFzSW50
MzJGb3JBcml0aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21lcyBhbiBpbnQsIGJ1dCBv
dGhlcndpc2UgbGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzOCw2ICsyNDcsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAg
ICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsK
KyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7
CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIo
KSBjb25zdDsKQEAgLTI0Niw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0cyhW
TSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdl
dD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAgLy8gRXh0cmFjdGluZyB0aGUg
dmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBXVEY6OlN0cmluZyYp
IGNvbnN0OwogICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0
OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2NSw5ICsyNzYsMTAgQEAgcHVi
bGljOgogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0ZWQgdG8gYmUgc2lkZSBl
ZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8gYmVlbiBzZXQgaW4gdGhlIENh
bGxGcmFtZSBhbHJlYWR5LgogICAgIGRvdWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwotICAgIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHRvTnVtZXJpYyhKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQzMl90PiB0b0Jp
Z0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9OdW1l
cmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIo
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkgY29u
c3Q7CiAKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0IGNhbiBiZSBkb25lIHdpdGhv
dXQgc2lkZSBlZmZlY3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0
aXZlKCkgY29uc3Q7CkBAIC0zMTYsOCArMzI4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsK
ICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWwoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBzdHJp
Y3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7
Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFs
Rm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKTsKICAgICBz
dGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwog
CiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKQEAgLTQxNSwxMSArNDI2LDIwIEBAIHB1YmxpYzoK
ICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgICAg
ICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2lu
ZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQgZnJv
bSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRlcnMu
Ci0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZykgVW5kZWZp
bmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQgMyBtYXNrZWQgb3V0IChV
bmRlZmluZWRUYWcpLCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhlCiAgICAgICogICBzYW1l
IHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1aWNrbHkgZGV0ZWN0ZWQu
CiAgICAgICoKICAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2ZSB0aGUgYml0IHBhdHRl
cm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CiAgICAgICogaG9sZXMsIGFu
ZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVlKCkgaGFzIGFuIGludGVy
bmFsIHZhbHVlIG9mIDApLgorICAgICAqCisgICAgICogV2hlbiBVU0UoQklHSU5UMzIpLCB3ZSBo
YXZlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0aGF0IGFyZSBzbWFsbCAo
MzItYml0IGF0IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAq
IFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIHRoaW5n
czoKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgRG91YmxlIG9yIEludGVn
ZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2Vk
IHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNldCB0
byB0cnVlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8g
d2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBj
YW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2UgYml0IDIgaXMgc2V0IHRv
IGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5kZWZpbmVk
IGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAogICAgIC8vIFRoaXMgdmFs
dWUgaXMgMl40OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQg
dmFsdWUgd2lsbCBiZWdpbgpAQCAtNDI5LDExICs0NDksMTkgQEAgcHVibGljOgogICAgIC8vIElm
IGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNhdGVzIGFuIGludGVnZXIg
bnVtYmVyLAogICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0IHRoaXMgdmFsdWUgaXMg
YSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KICAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3Qg
TnVtYmVyVGFnID0gMHhmZmZlMDAwMDAwMDAwMDAwbGw7CisgICAgLy8gVGhlIGZvbGxvd2luZyBj
b25zdGFudCBpcyB1c2VkIGZvciBhIHRyaWNrIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJp
Y3RFcSwgdG8gZGV0ZWN0IGlmIGVpdGhlciBvZiB0aGUgYXJndW1lbnRzIGlzIGEgZG91YmxlCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IExvd2VzdE9mSGlnaEJpdHMgPSAxVUxMIDw8IDQ5
OworICAgIHN0YXRpY19hc3NlcnQoTG93ZXN0T2ZIaWdoQml0cyAmIE51bWJlclRhZyk7CisgICAg
c3RhdGljX2Fzc2VydCghKChMb3dlc3RPZkhpZ2hCaXRzPj4xKSAmIE51bWJlclRhZykpOwogCiAg
ICAgLy8gQWxsIG5vbi1udW1lcmljIChib29sLCBudWxsLCB1bmRlZmluZWQpIGltbWVkaWF0ZXMg
aGF2ZSBiaXQgMiBzZXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IE90aGVyVGFnICAg
ICAgID0gMHgyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCb29sVGFnICAgICAgICA9
IDB4NDsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVW5kZWZpbmVkVGFnICAgPSAweDg7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCaWdJbnQz
MlRhZyAgICA9IDB4MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IEJpZ0ludDMyTWFz
ayAgID0gTnVtYmVyVGFnIHwgQmlnSW50MzJUYWc7CisjZW5kaWYKICAgICAvLyBDb21iaW5lZCBp
bnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgogICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IGZhbHNl
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUgICAgICA9IE90aGVyVGFn
IHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uYmUwZjM5YzUyMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgotI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTMyOSw2ICszMjgsMTIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFz
Q2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0Jp
dHMucGF5bG9hZCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVh
cEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxKU0JpZ0ludCo+KHUuYXNCaXRzLnBheWxvYWQpOworfQorCiBB
TFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBk
KQogewogICAgIEFTU0VSVCghaXNJbXB1cmVOYU4oZCkpOwpAQCAtNTIyLDggKzUyNywyMiBAQCBB
TFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4g
dS5wdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFsdWU6OmFzSGVhcEJpZ0lu
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNCaWdJbnQqPih1LnB0cik7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNCaWdJbnQz
MlRhZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVtYmVyVGFnIHBhcnQgaXMg
Zm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBzaWduLWV4dGVuZGVkLgor
ICAgIHUuYXNJbnQ2NCA9ICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpIDw8IDE2KSAmIH5O
dW1iZXJUYWcpIHwgQmlnSW50MzJUYWc7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBp
bmxpbmUgaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUgbnVtYmVyKQogewogICAgIGlm
IChudW1iZXIgIT0gbnVtYmVyKQpAQCAtNjEwLDkgKzYyOSwzMSBAQCBpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc1N0cmluZygpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQmlnSW50KCk7Cisg
ICAgcmV0dXJuIGlzQmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0JpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgcmV0dXJuICh1LmFz
SW50NjQgJiBCaWdJbnQzMk1hc2spID09IEJpZ0ludDMyVGFnOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK2lubGluZSBpbnQzMl90IEpT
VmFsdWU6OmJpZ0ludDMyQXNJbnQzMigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQmlnSW50MzIo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCA+PiAxNik7Cit9
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJv
bCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N5bWJvbCgp
OwpAQCAtNjIwLDcgKzY2MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29u
c3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBjb25zdAogewotICAgIHJl
dHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3lt
Ym9sKCkgfHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJuICFpc0NlbGwoKSB8fCBh
c0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+
aXNIZWFwQmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVy
KCkgY29uc3QKQEAgLTc2MCw4ICs4MDEsMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJp
bWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnUKICAg
ICAgICAgdmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIEFT
U0VSVChpc1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQTmFOOworICAgIGlmIChpc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIG51bWJlciA9IFBOYU47CisgICAgICAgIHZhbHVlID0gKnRoaXM7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkp
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dl
ZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlzOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4MjUsNDUgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNW
YWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBy
ZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1BTFdBWVNfSU5MSU5F
IFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6
OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlm
IChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91Ymxl
KCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAg
ICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3Vi
bGUoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmln
SW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50
b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDAp
OwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJp
YW50PEpTQmlnSW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1
ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICBpZiAo
aXNJbnQzMigpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKICAgICBpZiAo
aXNEb3VibGUoKSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAg
ICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQ
cmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChwcmlt
VmFsdWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4g
cHJpbVZhbHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS50b0ludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgcmV0dXJu
IHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgcmV0dXJu
IGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTAzMiwzNyArMTA4Mywx
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGRv
IHsKLSAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Ci0KLSAgICAgICAgYm9v
bCBzMSA9IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwot
ICAgICAgICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyh2MikpKTsKLQot
ICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewotICAgICAgICAgICAgU3RyaW5nIHYy
U3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQq
IG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7Ci0g
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7Cisg
ICAgICAgICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3ZSBoYXZlIGEgbnVtYmVyIGl0IGlz
IHYyIG1ha2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNpbXBsZXIuCisgICAgICAgICAgICBz
dGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzMSAmJiB2Mi5pc0Jp
Z0ludCgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnZh
bHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0Jp
Z0ludChnbG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYxID0gSlNWYWx1ZShu
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgZGVh
bHMgd2l0aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMsIGFuZCBpcyBhIHNob3J0Y3V0IGZv
ciBhIGZldyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBoYXMgdG8gY29tZSBoZXJlIGFuZCBu
b3QgYmVmb3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRoYXQgTmFOID09IE5hTgorICAgICAg
ICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpZiAo
djEuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCkBAIC0xMDgwLDcgKzExMTEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1
ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwog
CiAgICAgICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNPYmpl
Y3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNs
eQogICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
ICAgICB2MSA9IHAxOwpAQCAtMTEwMiw1NiArMTEzMyw4NCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKUwogICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAoc3lt
MSB8fCBzeW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAgICAg
ICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3Vz
bHkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wg
czEgPSB2MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKKyAg
ICAgICAgaWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIpCisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwg
YXNTdHJpbmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAg
ICAgIC8vIFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRoZSBuZXh0IGNhc2UsIHNvIGxvc2lu
ZyB0aGUgaW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBudW1iZXIgaXMgZmluZQorICAgICAg
ICB9CiAgICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAgICAgICAgZG91YmxlIGQxID0gdjEu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3Vh
cmFudGVlZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5rcyB0byB0aGUgc3dhcCBhYm92ZSkK
KyAgICAgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5n
IHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICB2MiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdo
IHRvIHRoZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBCaWdJbnRzICh3aGljaCBpcyBvbmx5
IG1pc3NpbmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2UsIGhlbmNlIHRoZSBjaGVjayBhYm92
ZSkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHYxLmlzTnVt
YmVyKCkgfHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYx
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYyLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAg
ICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjEgPSBKU1ZhbHVl
KHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9O
dW1iZXIgY29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAgLy8gV2UganVzdCBuZWVkIG9uZSBt
b3JlIHN3YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25seSB2MiBpcyBhbGxvd2VkIHRvIGJl
IGEgbnVtYmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAgICAgICAgICBzdGQ6OnN3YXAodjEs
IHYyKTsKICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewotICAgICAgICAgICAg
aWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkg
PT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIEJpZ0ludC9OdW1iZXIg
Y29tcGFyaXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNC
aWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpl
cXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAgICAKLSAgICAgICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0Jp
Z0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAgICAgICBpZiAodjIuaXNCaWdJbnQo
KSAmJiB2MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1
YWxzVG9OdW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKHYxLmlzQmln
SW50MzIoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQzMigpOworICAgICAgICAg
ICAgaWYgKHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGRvdWJsZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYyLmFzRG91YmxlKCk7CisgICAgICAg
ICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIGlmICh2
Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFs
cyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigp
KTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvTnVt
YmVyKHYyKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwogfQogCiAvLyBFQ01BIDExLjkuMwot
QUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpCiB7Ci0gICAgQVNTRVJUKHYx
LmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJp
bmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICBpZiAodjEtPmlzU3RyaW5nKCkg
JiYgdjItPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGds
b2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5p
c0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSks
IGFzQmlnSW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi0+aXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHN0YXRpY19jYXN0PEpT
QmlnSW50Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYyKSk7CiAgICAgcmV0dXJuIHYx
ID09IHYyOwogfQogCkBAIC0xMTYzLDEwICsxMjIyLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6
OnN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0
dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAotICAgIGlmICghdjEuaXNDZWxs
KCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQz
MkFzSW50MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJbnQo
KSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJp
Z0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlz
Q2VsbCgpKQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3Qs
IHYxLmFzQ2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICByZXR1cm4gc3RyaWN0RXF1YWxTbG93
Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgcmV0dXJuIHYxID09IHYyOwog
fQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0
CkBAIC0xMTg0LDE1ICsxMjUwLDIzIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3Ry
aWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgp
KQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAgIAotICAgIGlmICh2MS5h
c0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkgewotICAgICAg
ICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJ
bXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIp
LT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcp
Ci0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0lu
dDMyQXNJbnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2Mi5pc0hlYXBCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNU
b0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0Nl
bGwoKSAmJiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5n
KCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmlu
Z0ltcGwqIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAg
ICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT50cnlHZXRW
YWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQorICAg
ICAgICAgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIHRy
aVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxz
KHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KICAgICAKICAg
ICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsxMjgwLDEwIEBAIGlubGlu
ZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IGlzTm90WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1
cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRy
aVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKSA/IFRy
dWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCmluZGV4IDJmZWEyYjViOGVkLi5hYmNlMzRjYWI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgQ29u
c3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYgY29uc3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKGNlbGwtPmlzU3RyaW5n
KCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKQorICAgIGlmIChjZWxs
LT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIGJvb2wg
SlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwg
Y2VsbC0+aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlz
U3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxs
KS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGlkZW50
aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTVmFsdWUg
SlNDZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmlu
Zyo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmpl
Y3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKIH0K
QEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLCBKUwogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVy
KGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+Z2V0UHJpbWl0aXZl
TnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkp
CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVt
YmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhp
cyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogfQpA
QCAtMTg1LDcgKzE4NSw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1N0cmluZyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIGlmIChpc1N5bWJv
bCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVh
cEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0
aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTE5Niw3
ICsxOTYsNyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwogICAgIGlmIChp
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0
aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBp
ZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Jp
Z0ludCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChpc1N5bWJv
bCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IDJiZWY0YTdkOGVjLi4wNmVkNGU3MDkyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAg
Ly8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgIGJv
b2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OwogICAg
IGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDFjOWQxMzI0OGE5Li44Nzk4YzVhOTc4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjA0
LDkgKzIwNCw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHJl
dHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNDZWxsOjppc0Jp
Z0ludCgpIGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzSGVhcEJpZ0ludCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0g
SGVhcEJpZ0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTeW1ib2woKSBjb25z
dApAQCAtMzQwLDcgKzM0MCw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xl
YW4oKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4o
KTsKICAgICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmplY3QpKS0+bWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIGlubGlu
ZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlz
KS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwotICAgIGlmIChp
c0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIFRy
dWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4
IDIyYzAxMjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6
dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7IC8vIGZhbHNlIGZvciBO
YU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9Cb29sZWFu
KGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOworI2VuZGlmCiAgICAgcmV0dXJu
IGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBhbGwgY29udmVydCB0byBm
YWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXgg
YjAyYjM0N2Q2YTUuLjgzYmRkOWUxMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxsVHlwZSkKICAgICBDQVNF
KFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENBU0UoQmlnSW50VHlwZSkK
KyAgICBDQVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoQ3VzdG9tR2V0dGVyU2V0dGVyVHlw
ZSkKICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5cGUpCiAgICAgQ0FTRShOYXRpdmVFeGVjdXRh
YmxlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggNDgzNmY5
MWIwYmIuLjc0ZjMxZmY4MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aApAQCAtMjYsOCArMjYsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIFRoZSBD
ZWxsVHlwZSB2YWx1ZSBtdXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBpcyBhIEpTQ2Vs
bC4KICAgICBDZWxsVHlwZSwKICAgICBTdHJpbmdUeXBlLAotICAgIEJpZ0ludFR5cGUsCi0gICAg
TGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gQmlnSW50VHlwZSwKKyAgICBIZWFwQmlnSW50
VHlwZSwKKyAgICBMYXN0TWF5YmVGYWxzeUNlbGxQcmltaXRpdmUgPSBIZWFwQmlnSW50VHlwZSwK
ICAgICBTeW1ib2xUeXBlLAogCiAgICAgR2V0dGVyU2V0dGVyVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAzY2Q3MTNkODRmMy4uODhlMzBmMjA5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBm
bGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBm
bGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNT
RVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQog
Ci0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsKICAgICB1aW50OF90IG1f
ZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApp
bmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCkBA
IC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJhZjA3Li43NmNjMjUwYjE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTEgKzM2LDYgQEAgYm9v
bCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxTbG93Q2FzZUlubGluZShnbG9i
YWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQot
ewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEs
IHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewogICAgIC8vIGV4
Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRWYWx1ZSgpCkBAIC03Mywy
MSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAxU3RyaW5nLCBhc1N0cmluZyhw
MikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9u
LiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVm
dE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpKTsKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJl
c3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdl
dCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VE
X1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorICAgIH07CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcml0aG1ldGljQmlu
YXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjphZGQsIGRvdWJsZU9wLCBiaWdJ
bnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9u
LiJfcykpOwogfQogCiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQpAQCAtMTI4LDcgKzEyNSw3IEBAIGJv
b2wganNJc09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0eXBlID0g
di5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9
PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJp
bmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEhlYXBCaWdJbnRUeXBlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAg
ICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoZ2xvYmFsT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAppbmRleCA0YmJlMjNjMDcyNS4uN2RkZDlkMDUyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMjM5LDYgKzIzOCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9t
UmVnaXN0ZXJBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZQogICAgIHJldHVy
biByb3BlQnVpbGRlci5yZWxlYXNlKCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQgY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHYxLCBKU1ZhbHVlIHByaW1WYWx1ZSkKK3sKKyAg
ICBBU1NFUlQocHJpbVZhbHVlLmlzUHJpbWl0aXZlKCkpOworICAgIEFTU0VSVCghcHJpbVZhbHVl
LmlzQmlnSW50KCkpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChwcmltVmFsdWUu
aXNTdHJpbmcoKSkgeworICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0
cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgICAgICBpZiAoIWJpZ0ludFZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmlu
ZWQ7CisKKyAgICAgICAgaWYgKGJpZ0ludFZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlKHYxLCBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQo
KSk7CisKKyAgICAgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50MzIoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAvLyBGSVhNRTogdXNlIHNvbWV0aGluZyBsZXNzIGhhY2t5LCBl
LmcuIHNvbWUga2luZCBvZiBKU0JpZ0ludDo6Y29tcGFyZVRvSW50MzIKKyAgICAgICAgcmV0dXJu
IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0YXRpY19jYXN0PGRvdWJsZT4oYmlnSW50
VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGRvdWJsZSBu
dW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmlu
ZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBudW1iZXJWYWx1
ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQsIEpTQmlnSW50OjpDb21wYXJpc29u
TW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJ
bnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKQEAgLTI1NSw1MCArMjgzLDQ3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmICh2
MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21w
YXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKSwg
Y29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
IEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAgICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmco
KSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmlu
Z1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6
OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRWYWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKLSAg
ICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYx
KSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBhcmlzb25Nb2RlKTsKLQotICAgICAgICBkb3Vi
bGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmln
SW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwg
bnVtYmVyVmFsdWUpLCBjb21wYXJpc29uTW9kZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
ICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChjb21w
YXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQorICAgICAg
ICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDwgdjIuYmlnSW50MzJBc0ludDMyKCk7
CisgICAgICAgIEFTU0VSVChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1v
ZGU6Okxlc3NUaGFuT3JFcXVhbCk7CisgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIo
KSA8PSB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKICAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZSBwcmlt
VmFsdWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNC
aWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVj
dCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisjZW5kaWYKKwor
ICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIEpTQmlnSW50KiB2Mkhl
YXBCaWdJbnQgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBoYXZlIHNvbWUgZmFzdC1pc2ggcGF0
aCBmb3IgYSBjb21wYXJpc29uIGJldHdlZW4gYSBzbWFsbCBhbmQgYSBsYXJnZSBiaWctaW50Cisg
ICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hl
YXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQz
MigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjEu
YmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkp
CisgICAgICAgIHYySGVhcEJpZ0ludCA9IHYyLmFzSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHYySGVhcEJpZ0lu
dCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5k
aWYKKworICAgIGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFwQmlnSW50KQorICAgICAgICByZXR1
cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBCaWdJbnQsIHYy
SGVhcEJpZ0ludCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQpIHsK
KyAgICAgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYyKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KEpTQmlnSW50Ojpjb21wYXJlKGJpZ0ludFZhbHVlLCBhc0JpZ0ludCh2MikpLCBjb21wYXJp
c29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25S
ZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5p
c0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6
Y29tcGFyZShhc0JpZ0ludChwcmltVmFsdWUpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9k
ZSk7Ci0gICAgCi0gICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCisg
ICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJbnQsIHYxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgLy8gSGVyZSB3ZSBjaGVjayBpbnZlcnRlZCBiZWNhdXNlIEJp
Z0ludCBpcyB0aGUgdjIKLSAgICBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29u
UmVzdWx0ID0gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MiksIG51bWJlclZh
bHVlKTsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2Rl
OjpMZXNzVGhhbikKICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOwotCiAgICAgcmV0dXJuIGNvbXBhcmlzb25S
ZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIHx8IGNvbXBh
cmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCkBA
IC0zNTcsNyArMzgyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8
IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcy
KSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0
LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3
LDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2Fz
Tm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsK
ICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAx
LCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAt
NDUyLDcxICs0NzcsMzQ5IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpz
QWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94ZWQsIGFu
ZCByZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBlbmFtZSBI
ZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJp
Z0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJ
bnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBC
aWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1Zh
bHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVtZXJpYy5p
c051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNO
dW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFzTnVt
YmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJ
bnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmljLmJpZ0lu
dDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJ
bnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBs
ZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAgICBpZiAo
cmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVm
dEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFw
QmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVh
cEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1l
cmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVh
cEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CisjZWxzZQor
ICAgICh2b2lkKSBiaWdJbnQzMk9wOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQo
KSAmJiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFw
QmlnSW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsK
K30KIAotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAt
IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBh
dXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1Zh
bHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3Jk
T3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdodDsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0
KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0Jp
bmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6c3ViLCBkb3VibGVPcCwgYmln
SW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFj
dGlvbi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNNdWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRv
dWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAg
ICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCAqPSByaWdodDsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNP
dmVyZmxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmln
aHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAg
fTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKworQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUg
bGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAvIHJp
Z2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50
MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
IXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAgICAg
IFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICBy
ZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6
ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUg
cmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Cisg
ICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNW
YWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4K
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0
aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91
YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91Ymxl
IHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07
CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUg
eworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0
IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAg
ICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9u
IGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAg
cmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6
OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5l
eHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIg
ZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1
ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xv
YmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0g
di50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJl
dHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcg
bmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBl
ciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1Zh
bHVlKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRlYyhn
bG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkpOwor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVt
ZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVt
ZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0Jp
Z0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBzaGlmdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBib29sIGlzTGVmdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51
bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGxlZnROdW1lcmlj
ID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByaWdodE51
bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwor
ICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkg
eworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAg
ICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOwor
ICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQz
MikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIo
cmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmlj
LmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlu
dDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAg
IGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAg
ICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0
OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQg
cmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEg
c2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUg
Yml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+
IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
YSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0
aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUg
dG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQg
ZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxl
ZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAg
ICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVh
cEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJp
Z0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0
TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAg
ICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBjYXNlIGZv
ciBsZWZ0IGlzIEhlYXBCaWdJbnQgYW5kIHJpZ2h0IGlzIEJpZ0ludDMyLCBpdCBzZWVtcyBmYWly
bHkgbGlrZWx5IHRvIG9jY3VyIGZyZXF1ZW50bHkuCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpT
QmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0g
cmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFw
QmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpCit7CisgICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxP
YmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RG
OjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFs
dWUgKiByaWdodFZhbHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJv
b2wgaXNMZWZ0ID0gZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYy
LCBpc0xlZnQpOwogfQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4K
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYm
IGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVG
cmVlQ2VsbHMoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9
IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCks
IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
bGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkp
OworICAgIC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQs
IGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVz
ZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBz
bWFsbCBiaWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8g
QnV0IGl0IGlzIHF1aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2Ug
YSBzaWduIGJpdCB3aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRp
b24uCisjZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHRO
dW1lcmljLmlzQmlnSW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBK
U0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVm
dE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9
IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmln
aHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KTsKKyNlbHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJp
Yy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQp
KTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJh
ZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50
MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAg
ICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVu
dGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBh
bmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpT
VmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2Miwg
SlNCaWdJbnQ6OmJpdHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5l
IGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNW
YWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAg
YXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJf
dCB7CisgICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1F
OiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhl
ICJvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9u
IHRoZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1p
bmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGln
bmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAg
ICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29k
ZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRv
IGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsK
KyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1
cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhv
ciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRo
ZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhl
IGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4i
X3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJuIEFT
U0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNkZWZp
bmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKworaW5s
aW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlND
ZWxsKj4oU0NSSUJCTEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBi
YXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVk
IHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAgICAg
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShi
aXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4
IDVmYTcwMTNjYjdmLi5mMTZjMDJhNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjc5LDcgKzI3OSw3IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0g
U3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBl
KCk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50
VHlwZSkKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50
VHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAK
ICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2OWU1MmVhNjY3Yy4uODUyMjI4
OWIxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTUwMSw3ICs1MDEs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAgIHNl
bnRpbmVsTWFwQnVja2V0KCk7CiAgICAgICAgIHNlbnRpbmVsU2V0QnVja2V0KCk7CiAgICAgfQot
ICAgIGJpZ0ludENvbnN0YW50T25lLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20oKnRo
aXMsIDEpKTsKKyAgICBoZWFwQmlnSW50Q29uc3RhbnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSgqdGhpcywgMSkpOwogCiAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVu
dEF0b21TdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDllOThkNTNjNTNhLi40MDFkYTZmZjg2MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03MzEsNyArNzMxLDcgQEAgcHVibGlj
OgogICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9hdG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAotICAgIFN0cm9uZzxKU0JpZ0lu
dD4gYmlnSW50Q29uc3RhbnRPbmU7CisgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29u
c3RhbnRPbmU7CiAKICAgICBTdHJ1Y3R1cmUqIHNldEl0ZXJhdG9yU3RydWN0dXJlKCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggMTliMTkx
YTZkNmIuLjUwN2Y0MjQyZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCkBAIC0yMTg3LDcgKzIxODcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbAog
ICAgIHVpbnQ4X3QqIHZtU3RhY2tFbmQgPSB2bVN0YWNrU3RhcnQgLSBvcmlnaW5hbE1heFBlclRo
cmVhZFN0YWNrVXNhZ2U7CiAgICAgcHRyZGlmZl90IHNpemVEaWZmID0gdm1TdGFja0VuZCAtIGVu
ZDsKICAgICBSRUxFQVNFX0FTU0VSVChzaXplRGlmZiA+PSAwKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChzaXplRGlmZiA8IFVJTlRfTUFYKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oc2l6ZURpZmYpIDwgVUlOVF9NQVgpOwogCiAgICAgT3B0aW9uczo6bWF4UGVyVGhy
ZWFkU3RhY2tVc2FnZSgpID0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlICsgc2l6ZURp
ZmY7CiAgICAgaGVscGVyLnVwZGF0ZVZNU3RhY2tMaW1pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTNhMTAwZjU2MTMu
LmIyOWNkNmUzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTA2ICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxpbmVk
IHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMyIikK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVT
RShCSUdJTlQzMikgZmxhZy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIw
LTA0LTA2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCAxR0Igb2YgZXhlY3V0YWJsZSBtZW1vcnkgb24gYXJtNjQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmlu
ZGV4IDNmODNmNjZjMGYyLi5lNGI1NzRkZmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzks
NiArMTM5LDEwIEBACiAjZW5kaWYKICNlbmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAm
JiAhZGVmaW5lZChVU0VfSlNWQUxVRTMyXzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNk
ZWZpbmUgVVNFX0JJR0lOVDMyIDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3Vs
ZCBiZSBtb3JlIHNwZWNpZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSog
Ki8KIC8qIFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAq
LwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2
XzY0KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395917</attachid>
            <date>2020-04-08 23:34:01 -0700</date>
            <delta_ts>2020-04-15 15:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>403552</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NjIwZDYzNjNiYTMuLjZlMTkwMGUyZDkzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wNC0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIE11bHRpRGVsZXRlQnlPZmZzZXQgc2hvdWxkIHRlbGwgY29ycmVjdCByZXN1
bHQgQWJzdHJhY3RWYWx1ZSBpbiBBSQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1kaXZpc2lvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXgg
NDAxODkwYWQ2MzEuLjNlNTEwYjlkODk3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWRpdmlzaW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMK
QEAgLTEsNCArMSw1IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAorLy9AIHJ1bkJpZ0ludEVuYWJs
ZWROb0pJVAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgUm9iaW4gVGVtcGxldG9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0QgbGljZW5z
ZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgpAQCAtMTQsNyArMTUsNyBAQCBhc3NlcnQuc2Ft
ZVZhbHVlID0gZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogfQogCiBmdW5j
dGlvbiB0ZXN0RGl2KHgsIHksIHopIHsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKHggLyB5LCB6LCB4
ICsgIiAvICIgKyB5ICsgIiA9ICIgKyB6KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHggLyB5LCB6
LCB4ICsgIiAvICIgKyB5ICsgIiA9ICIgKyAoeC95KSArICIgYnV0IHNob3VsZCBiZSAiICsgeik7
CiB9CiAKIHRlc3REaXYoMHhGRURDQkE5ODc2NTQzMjEwbiwgMHhGRURDQkE5ODc2NTQzMjEwbiwg
MHgxbik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3Jh
cHBlZC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVk
LXZhbHVlLmpzCmluZGV4IGM2OWRiZGEzM2QzLi5mODEyYjFjYmE0MSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMKQEAgLTMsNyAr
Myw3IEBACiBhc3NlcnQgPSB7CiAgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoaW5wdXQsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CiAgICAgICAgIGlmIChpbnB1dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IobWVzc2FnZSArICIgaW5wdXQ6ICIgKyBpbnB1dCArICIgIT0gZXhwZWN0ZWQ6ICIgKyBleHBl
Y3RlZCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
b2dpY2FsLW5vdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMKaW5k
ZXggYWYyOGE3MmIxYzMuLmQwMmU1NTJmOWM3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxvZ2ljYWwtbm90LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbG9naWNh
bC1ub3QuanMKQEAgLTEsOCArMSw4IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAogCi1mdW5jdGlv
biBhc3NlcnQoYSwgZSkgeworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG4pIHsKICAgICBpZiAoYSAh
PT0gZSkgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCEiKTsKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJCYWQgbG9naWNhbCBuZWdhdGlvbiBmb3IgIiArIG4pOwogICAgIH0KIH0KIApA
QCAtMTIsOSArMTIsOSBAQCBmdW5jdGlvbiBsb2dpY2FsTm90KGEpIHsKIG5vSW5saW5lKGxvZ2lj
YWxOb3QpOwogCiBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoMTBuKSwgZmFsc2UpOwotICAgIGFzc2VydChsb2dpY2FsTm90KDFuKSwgZmFs
c2UpOwotICAgIGFzc2VydChsb2dpY2FsTm90KDBuKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0KGxvZ2lj
YWxOb3QoLTFuKSwgZmFsc2UpOworICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlLCAx
MG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KDFuKSwgZmFsc2UsIDFuKTsKKyAgICBhc3NlcnQo
bG9naWNhbE5vdCgwbiksIHRydWUsIDBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgtMW4pLCBm
YWxzZSwgLTFuKTsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qt
aml0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzCmluZGV4IDgxYzVkYTdj
NWJjLi44NTk1NDBjODUzMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qt
aml0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwpAQCAtMjUsOSAr
MjUsOSBAQCBub0lubGluZShiaWdJbnRNb2RGb2xkaW5nKTsKIAogZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKSB7CiAgICAgbGV0IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwLCAzMCk7Ci0g
ICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAsICItKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9
ICIgKyByKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHIsIC0xMCwgIltOdW1iZXJdIC0oIiArIDEw
ICsgIiAlICIgKyAzMCArICIpID0gIiArIHIpOwogfQogCiBsZXQgciA9IGJpZ0ludE1vZEZvbGRp
bmcoMTBuLCAzMG4pOwotYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTBuLCAiLSgiICsgMTBuICsgIiAl
ICIgKyAzMG4gKyAiKSA9ICIgKyByKTsKK2Fzc2VydC5zYW1lVmFsdWUociwgLTEwbiwgIltCaWdJ
bnRdIC0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7CiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbXVsdGlwbGljYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LW11bHRpcGxpY2F0aW9uLmpzCmluZGV4IDNlY2Q2MzZkN2Y4Li43Y2U1YWNmZmNm
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxpY2F0aW9uLmpzCkBAIC0xLDE4ICsx
LDE4IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAorLy9AIHJ1bkJpZ0ludEVuYWJsZWROb0pJVAog
CiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgUm9iaW4gVGVtcGxldG9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0QgbGljZW5zZSBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogCi1hc3NlcnQgPSB7Ci0gICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Ci0gICAgaWYgKGlucHV0ICE9PSBleHBlY3Rl
ZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOwotICAgIH0KLX07CitmdW5jdGlv
biB0ZXN0T25lTXVsKHgsIHksIHopIHsKKyAgICBsZXQgcmVzdWx0ID0geCAqIHk7CisgICAgaWYg
KHJlc3VsdCAhPT0geikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb21wdXRpbmcgIiArIHgg
KyAiICogIiArIHkgKyAiIHJlc3VsdGVkIGluICIgKyByZXN1bHQgKyAiIGluc3RlYWQgb2YgdGhl
IGV4cGVjdGVkICIgKyB6KTsKK30KIAogZnVuY3Rpb24gdGVzdE11bCh4LCB5LCB6KSB7Ci0gICAg
YXNzZXJ0LnNhbWVWYWx1ZSh4ICogeSwgeiwgeCArICIgKiAiICsgeSArICIgPSAiICsgeik7Ci0g
ICAgYXNzZXJ0LnNhbWVWYWx1ZSh5ICogeCwgeiwgeSArICIgKiAiICsgeCArICIgPSAiICsgeik7
CisgICAgdGVzdE9uZU11bCh4LCB5LCB6KTsKKyAgICB0ZXN0T25lTXVsKHksIHgsIHopOwogfQog
CiB0ZXN0TXVsKDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkRC
QUMwOTdDOERDNUFDQ0RFRUM2Q0Q3QTQ0QTQxMDBuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2VuZXJhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtcmlnaHQtc2hpZnQtZ2VuZXJhbC5qcwppbmRleCA0ZTU4Y2E2MDc0MC4uY2IyZjY5NTA1NzUg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2VuZXJhbC5q
cworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKQEAg
LTIsMTAzICsyLDYyIEBACiAKIC8vIENvcHlyaWdodCAoQykgMjAxNyBKb3NoIFdvbGZlLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0QgbGlj
ZW5zZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8gTW9kaWZpZWQgYnkgQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlLgogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiB0ZXN0Umln
aHRTaGlmdChsZWZ0LCByaWdodCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIHJlc3VsdCA9IGxlZnQg
Pj4gcmlnaHQ7CisgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiIiArIGxlZnQgKyAiLCAiICsgcmlnaHQgKyAiIHJlc3VsdGVkIGluICIgKyByZXN1
bHQgKyAiIGJ1dCBleHBlY3RlZCAiICsgZXhwZWN0ZWQpOwogfQogCi1hc3NlcnQuc2FtZVZhbHVl
ID0gZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChpbnB1dCAh
PT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMCA7ICsraSkgeworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAwbiwgMG4p
OworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgLTFuLCAwYjEwMTBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgwYjEwMW4sIC0ybiwgMGIxMDEwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAx
biwgLTNuLCAwYjEwMTAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgMW4sIDBiMTBu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDJuLCAxbik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoMGIxMDFuLCAzbiwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAtMTI4biwgMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgy
NDZuLCAwbiwgMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjduLCAweDEy
MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
MHgyNDZuLCAtMTI4biwgMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIDEyOG4sIDBuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biwgLTY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAw
MDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwgLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzgwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDE2biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4sIDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgNjRuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI3biwg
MHgyNDY4YWNuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biwgMTI4biwgMHgxMjM0NTZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgMHg5MWEyYm4p
OworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTFuLCAtMHhhbik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoLTVuLCAtMm4sIC0weDE0bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAtM24sIC0weDI4
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAxbiwgLTNuKTsKKyAgICB0ZXN0UmlnaHRTaGlm
dCgtNW4sIDJuLCAtMm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgM24sIC0xbik7CisgICAg
dGVzdFJpZ2h0U2hpZnQoLTFuLCAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAwbiwgLTFuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMW4sIDEyOG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MjQ2biwgMG4s
IC0weDI0Nm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIC0xMjduLCAtMHgxMjMwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0
Nm4sIC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIC0xMjluLCAtMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDEyOG4sIC0xbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0xNm4sIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMG4sIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzVuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMzbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmJu
KTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDEyN24sIC0weDI0NjhhZG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI4biwgLTB4MTIzNDU3bik7Cisg
ICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuLCAxMjluLCAtMHg5MWEyY24pOwogfQotCi1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDBuLCAw
biwgIjBuID4+IDBuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTFuLCAw
YjEwMTBuLCAiMGIxMDFuID4+IC0xbiA9PT0gMGIxMDEwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgw
YjEwMW4gPj4gLTJuLCAwYjEwMTAwbiwgIjBiMTAxbiA+PiAtMm4gPT09IDBiMTAxMDBuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKDBiMTAxbiA+PiAtM24sIDBiMTAxMDAwbiwgIjBiMTAxbiA+PiAtM24g
PT09IDBiMTAxMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gMW4sIDBiMTBuLCAi
MGIxMDFuID4+IDFuID09PSAwYjEwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gMm4s
IDFuLCAiMGIxMDFuID4+IDJuID09PSAxbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
M24sIDBuLCAiMGIxMDFuID4+IDNuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAt
MTI4biwgMG4sICIwbiA+PiAtMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4g
MTI4biwgMG4sICIwbiA+PiAxMjhuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gMG4sIDB4MjQ2biwgIjB4MjQ2biA+PiAwbiA9PT0gMHgyNDZuIik7Ci1hc3NlcnQuc2FtZVZh
bHVlKDB4MjQ2biA+PiAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MG4sICIweDI0Nm4gPj4gLTEyN24gPT09IDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAtMTI4biwgMHgyNDYwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICIweDI0Nm4gPj4gLTEyOG4gPT09IDB4MjQ2MDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2
biA+PiAtMTI5biwgMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICIweDI0
Nm4gPj4gLTEyOW4gPT09IDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7
Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAxMjhuLCAwbiwgIjB4MjQ2biA+PiAxMjhuID09
PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4gPj4gLTY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4gPj4gLTY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuLAotICAiMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiA9PT0gMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgK
LSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biwgMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuLAotICAiMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAot
ICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAwbiwgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICIweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAwbiA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDE2biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gMzJuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4sCi0g
ICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09IDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gNjRuLCAweDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmFuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gNjRuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxMjduLCAweDI0NjhhY24sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjduID09PSAweDI0NjhhY24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4sIDB4MTIzNDU2
biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4g
PT09IDB4MTIzNDU2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biwgMHg5MWEyYm4sCi0gICIweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluID09PSAweDkxYTJibiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTFuLCAtMHhhbiwgIi01biA+PiAtMW4gPT09IC0weGFu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAtMm4sIC0weDE0biwgIi01biA+PiAtMm4gPT09
IC0weDE0biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTNuLCAtMHgyOG4sICItNW4gPj4g
LTNuID09PSAtMHgyOG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDFuLCAtM24sICItNW4g
Pj4gMW4gPT09IC0zbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gMm4sIC0ybiwgIi01biA+
PiAybiA9PT0gLTJuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAzbiwgLTFuLCAiLTVuID4+
IDNuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTFuID4+IC0xMjhuLCAtMHgxMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTFuID4+IC0xMjhuID09PSAtMHgxMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAw
biwgLTFuLCAiLTFuID4+IDBuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTFuID4+IDEy
OG4sIC0xbiwgIi0xbiA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2
biA+PiAwbiwgLTB4MjQ2biwgIi0weDI0Nm4gPj4gMG4gPT09IC0weDI0Nm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI3biA9PT0gLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyOG4sIC0w
eDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyOG4g
PT09IC0weDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgtMHgyNDZuID4+IC0xMjluLCAtMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjluID09PSAtMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAxMjhuLCAtMW4s
ICItMHgyNDZuID4+IDEyOG4gPT09IC0xbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4sCi0gICItMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0zMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
MDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IC0zMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAw
MDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAtMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAwbiA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1
biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4g
PT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzVuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
MzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzNuLAotICAiLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiA9PT0gLTB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMzbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYm4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gNjRuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JibiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyN24s
IC0weDI0NjhhZG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMTI3biA9PT0gLTB4MjQ2OGFkbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4sIC0weDEyMzQ1N24s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI4biA9
PT0gLTB4MTIzNDU3biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIC0weDkxYTJjbiwKLSAgIi0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluID09PSAtMHg5MWEyY24i
KTsKLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLXByb3Zlbi10
eXBlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLXByb3Zlbi10eXBlLmpzCmlu
ZGV4IGQyZjUzOTc5OGM1Li5kZTEyMmM5ZGZkNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC10eXBlLW9mLXByb3Zlbi10eXBlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5EZWZhdWx0
KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIpCiAKLWZ1bmN0
aW9uIGFzc2VydChhKSB7Ci0gICAgaWYgKCFhKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCBhc3NlcnRpb24iKTsKK2Z1bmN0aW9uIGFzc2VydChpbnB1dCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoaW5wdXQgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCByZXN1
bHQ6ICIgKyBpbnB1dCk7CiB9CiAKIGZ1bmN0aW9uIGZvbyhvKSB7CkBAIC0xMyw2ICsxMyw1IEBA
IGZ1bmN0aW9uIGZvbyhvKSB7CiBub0lubGluZShmb28pOwogCiBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKLSAgICBhc3NlcnQoZm9vKDNuKSA9PT0gIjMiKTsKKyAgICBhc3NlcnQo
Zm9vKDNuKSwgIjMiKTsKIH0KLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1u
dW1iZXItYW5kLW90aGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1udW1iZXItYW5kLW90
aGVyLmpzCmluZGV4IDg1NDZiZjM3ZWExLi44MjVlODVkNmI2MSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvY29tcGFyZS1udW1iZXItYW5kLW90aGVyLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwpAQCAtNTksMTcgKzU5LDE3IEBAIGZvciAobGV0
IG9wZXJhdG9yIG9mIG9wZXJhdG9ycykgewogICAgICAgICAgICAgbm9JbmxpbmUodGVzdE1vbm9t
b3JwaGljUmlnaHRDb25zdGFudCR7dGVzdENhc2VJbmRleH0pOwogCiAgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDUwMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25v
bW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pICE9ICR7bGxpbnRSZXN1
bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9
KCR7bGVmdH0sICR7cmlnaHR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9
LCAke3JpZ2h0fSkiOwotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNMZWZ0Q29u
c3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0fSkKKyAgICAg
ICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4
fSgke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAgICB0aHJv
dyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0oJHty
aWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljUmlnaHRDb25zdGFu
dCR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAgICAg
ICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7
bGVmdH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIkZh
aWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0p
IjsKICAgICAgICAgICAgICAgICBpZiAodGVzdFBvbHltb3JwaGljKCR7bGVmdH0sICR7cmlnaHR9
KSAhPT0gJHtsbGludFJlc3VsdH0pCi0gICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQg
cG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0pIjsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cg
IkZhaWxlZCBwb2x5bW9ycGhpY1ZlcnNpb24oJHtsZWZ0fSwgJHtvcGVyYXRvcn0sICR7cmlnaHR9
LCBleHBlY3RlZCByZXN1bHQ6ICR7bGxpbnRSZXN1bHR9KSI7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBgKTsKICAgICAgICAgICAgICsrdGVzdENhc2VJbmRleDsKICAgICAgICAgfQogICAg
IH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcwppbmRleCBhZjIyODNm
OGVlNC4uN2Y1Y2IxMDRlMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3Ry
aWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1z
dHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcwpAQCAtODMsNyArODMsOCBAQCBmdW5jdGlvbiB0
ZXN0QWxsVHlwZXNDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmlnaHQgPSAi
ICsKICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJlc3VsdCA9ICIgKwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
Y3RFcXVhbE91dHB1dCArCisgICAgICAgICAgICAgICAgICAgICAgICAiIChjYXNlOiAiICsgbGVm
dENhc2VJbmRleCArICIsICIgKyByaWdodENhc2VJbmRleCArICIpIjsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBsZXQgc3RyaWN0Tm90RXF1YWxPdXRwdXQgPSBvcGFxdWVT
dHJpY3ROb3RFcXVhbEFsbFR5cGVzKGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSwgcmlnaHRDYXNl
c1tyaWdodENhc2VJbmRleF0pOwpAQCAtOTMsNyArOTQsOCBAQCBmdW5jdGlvbiB0ZXN0QWxsVHlw
ZXNDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmlnaHQgPSAiICsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdICsKICAgICAgICAg
ICAgICAgICAgICAgICAgICIsIFJlc3VsdCA9ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaWN0RXF1YWxPdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RFcXVhbE91
dHB1dCArCisgICAgICAgICAgICAgICAgICAgICAgICAiIChjYXNlOiAiICsgbGVmdENhc2VJbmRl
eCArICIsICIgKyByaWdodENhc2VJbmRleCArICIpIjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJp
bmctc3RyaWN0LWVxdWFsaXR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3Qt
ZXF1YWxpdHkuanMKaW5kZXggMDQzYTc2MDdhNGYuLjhlOTZjZjQ0Mjg5IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcworKysgYi9KU1Rlc3Rz
L3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwpAQCAtMzAsNiArMzAsNiBAQCBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CiAgICAgdmFyIHJlc3VsdCA9IGZvbyhh
cnJheSwgYXJyYXkyW2luZGV4XSk7CiAgICAgdmFyIGV4cGVjdGVkID0gaW5kZXggPj0gYXJyYXku
bGVuZ3RoID8gbnVsbCA6IGluZGV4CiAgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCi0gICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVj
dGVkOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1j
aGVjay1pbi1zdHJpbmctY29tcGFyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0
aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCmluZGV4IDk2NWE3ZDczYjcxLi5kZDg1YTgz
ODdmYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hlY2st
aW4tc3RyaW5nLWNvbXBhcmUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRp
b24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKQEAgLTEsNiArMSw4IEBACiBjb25zdCBzMSA9
ICgtMSkudG9Mb2NhbGVTdHJpbmcoKS5wYWRFbmQoMioqMzEtMSwgJ2FhJyk7Citjb25zdCBzMiA9
ICgtMSkudG9Mb2NhbGVTdHJpbmcoKS5wYWRFbmQoMioqMzEtMSwgJ2FhJyk7CiB0cnkgewotICAg
IHMxID09IHMxOworICAgIC8vIEZvcmNlIGV2YWx1YXRpb24gb2YgUm9wZQorICAgIHMxID09IHMy
OwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggY2Q5Y2I4NWNjOTYuLmVkZTAxZjQ0YjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05ODYsNiArOTg2LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuaAogICAgIHJ1bnRpbWUvU2NvcGVPZmZzZXQuaAogICAgIHJ1bnRpbWUvU2NvcGVkQXJn
dW1lbnRzVGFibGUuaAorICAgIHJ1bnRpbWUvU2NyaWJibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAogICAgIHJ1
bnRpbWUvU2NyaXB0RmV0Y2hlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBkZGVjOWMw
MmY2Ny4uMWY2MzliYmQ4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
NyBAQAorMjAyMC0wNC0wNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgYW4gaW5saW5lZCByZXByZXNlbnRhdGlvbiBpbiBKU1ZhbHVlIG9m
IHNtYWxsIEJpZ0ludHMgKCJCaWdJbnQzMiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRvIG9wdGltaXplIHRoZSBw
ZXJmb3JtYW5jZSBvZiBCaWdJbnRzLCB3aGVuIHRoZXkgYXJlIHNtYWxsICgzMiBiaXQgb3IgbGVz
cykuCisgICAgICAgIEl0IHdvcmtzIGJ5IGlubGluaW5nIHRoZW0gaW50byBKU1ZhbHVlIG9uIDY0
LWJpdCBwbGF0Zm9ybXMsIGF2b2lkaW5nIHRoZSBhbGxvY2F0aW9uIG9mIGEgSlNCaWdJbnQuCisg
ICAgICAgIFRoZSBiaXQgcGF0dGVybiB3ZSB1c2UgaXMgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAg
ICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0
aGluZ3M6CisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBEb3VibGUgb3Ig
SW50ZWdlciB0aGFua3MgdG8gdGhlIHRvcCBiaXRzCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNv
bmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlz
IHNldCB0byB0cnVlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2lu
dGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAg
ICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIHRydWUvZmFsc2UgYmVjYXVzZSBiaXQgMiBp
cyBzZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwv
dW5kZWZpbmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKKworICAgICAgICBUaGlzIGVu
dGlyZSBjaGFuZ2UgaXMgZ2F0ZWQgYnkgVVNFKEJJR0lOVDMyKSwgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gZGlzYWJsZSBpZiBpdCB0dXJucyBvdXQgdG8gaGF2ZSBidWdzLgorICAgICAgICBJdCBzaG91
bGQgYWxzbyBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvIHZlcmlmeSBpZiBhIGdpdmVuIGJ1ZyBjb21l
cyBmcm9tIGl0IG9yIGZyb20gc29tZXRoaW5nIGVsc2UuCisKKyAgICAgICAgTm90ZSB0aGF0IGlu
IHRoaXMgcGF0Y2ggd2UgY3JlYXRlIHN1Y2ggc21hbGwgQmlnSW50cyB3aGVuIHBhcnNpbmcgQmln
SW50IGNvbnN0YW50cywgYW5kIG1vc3Qgb3BlcmF0aW9ucyAoZS5nLiBBZGQgb3IgQml0T3IpIHBy
b2R1Y2UgYSBCaWdJbnQzMiBpZiBib3RoIG9mIHRoZWlyIG9wZXJhbmRzIGFyZSBCaWdJbnQzMiwK
KyAgICAgICAgYnV0IHdlIGRvbid0IHByb2R1Y2UgYSBCaWdJbnQzMiBmcm9tIGZvciBleGFtcGxl
IHRoZSBzdWJzdHJhY3Rpb24vZGl2aXNpb24gb2YgdHdvIGxhcmdlIGhlYXAtYWxsb2NhdGVkIEpT
QmlnSW50cywgZXZlbiBpZiB0aGUgcmVzdWx0IGZpdHMgaW4gMzItYml0cy4KKyAgICAgICAgQXMg
YSByZXN1bHQsIHNtYWxsIEJpZ0ludHMgY2FuIG5vdyBlaXRoZXIgYmUgaGVhcC1hbGxvY2F0ZWQg
b3IgaW5saW5lZCBpbiB0aGUgSlNWYWx1ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVz
IGEgc2lnbmlmaWNhbnQgcmVmYWN0b3Igb2YgdmFyaW91cyBzbG93IHBhdGhzLCB3aGljaCBhcmUg
bm93IGdyb3VwZWQgdG9nZXRoZXIgaW4gT3BlcmF0aW9ucy5oCisgICAgICAgIEJlY2F1c2UgdGhp
cyBpbmNyZWFzZWQgdGhlIHNpemUgb2YgT3BlcmF0aW9ucy5oIHNpZ25pZmljYW50bHksIEkgc3Bs
aXQgdGhlIHBhcnRzIG9mIE9wZXJhdGlvbnMuaCB3aGljaCBhcmUgb25seSB1c2VkIGJ5IHRoZSBH
QyBpbnRvIFNjcmliYmxlLmgsIHRvIGF2b2lkIGJsb2F0aW5nIGNvbXBpbGUgdGltZXMuCisKKyAg
ICAgICAgSW4gdGhlIERGRyBhbmQgRlRMIHdlIG5vdyBoYXZlIDMgVXNlS2luZHMgZm9yIEJpZ0lu
dHM6IEhlYXBCaWdJbnRVc2UsIEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UuCisgICAgICAg
IFRoZSBsYXR0ZXIgaXMgdXNlZnVsIHdoZW4gd2Ugbm93IHRoYXQgd2UgYXJlIHJlY2VpdmluZyBC
aWdJbnRzLCBidXQgc3BlY3VsYXRpb24gaW5kaWNhdGVzIGEgbWl4IG9mIGhlYXAtYWxsb2NhdGVk
IGFuZCBzbWFsbCAoaW5saW5lZCkgYmlnLWludHMuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwg
YSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhdGNoIHNpZ25pZmljYW50bHkgcmVncmVz
c2VzIHRoZSBwZXJmb3JtYW5jZSBvZiBTdHJpY3RFcSAoYW5kIGl0cyB2YXJpYW50cyksIGFzIGl0
IGlzIG5vIGxvbmdlciB0cnVlIHRoYXQgYSBjZWxsIGFuZCBhIG5vbi1jZWxsIGNhbm5vdCBiZSBl
cXVhbC4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIHRoZSBjb2RlIHdhcyBqdW1waW5nIHRv
IGEgc2xvdyBwYXRoIGlmIGVpdGhlcjoKKyAgICAgICAgLSBhdCBsZWFzdCBvbmUgb3BlcmFuZCBp
cyBhIGRvdWJsZQorICAgICAgICAtIG9yIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzCisgICAgICAg
IE5vdywgaXQgYWxzbyBuZWVkcyB0byBqdW1wIHRvIHRoZSBzbG93IHBhdGggaWYgYXQgbGVhc3Qg
b25lIGlzIGEgY2VsbC4KKyAgICAgICAgVG8gcmVjb3ZlciB0aGlzIHBlcmZvcm1hbmNlIGNvc3Qs
IEkgc2lnbmlmaWNhbnRseSByZXdyb3RlIHRoaXMgY29kZSwgZnJvbQorICAgICAgICAgIGlmIChs
ZWZ0IGlzIENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgeworICAgICAgICAgICAgaWYgKGxlZnQgPT0g
cmlnaHQpCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZ290byBzbG93
UGF0aDsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCEgbGVmdCBpcyBJbnQzMikgeworICAg
ICAgICAgICAgaWYgKGxlZnQgaXMgTnVtYmVyKQorICAgICAgICAgICAgICBnb3RvIHNsb3dQYXRo
CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIHJpZ2h0IGlzIEludDMyKSB7CisgICAgICAg
ICAgICBpZiAocmlnaHQgaXMgTnVtYmVyKQorICAgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisg
ICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0CisgICAgICAgIFRvIHRo
ZSBmb2xsb3dpbmc6CisgICAgICAgICAgaWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERv
dWJsZSkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICBpZiAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBJIGJlbGlldmUgdGhpcyB0byBiZSBmYXN0ZXIgdGhh
biBqdXN0IHJlcGxhY2luZyAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGJ5IGFuIHx8
LCBiZWNhdXNlIEkgZm91bmQgYSBiaXQtdHJpY2sgdG8gY2hlY2sgKGxlZnQgaXMgRG91YmxlIHx8
IHJpZ2h0IGlzIERvdWJsZSkgd2hpY2ggc2hvdWxkIGhlbHAgcmVkdWNlIHRoZSBwcmVzc3VyZSBv
biB0aGUgYnJhbmNoIHByZWRpY3Rvci4KKyAgICAgICAgRWFybHkgSmV0U3RyZWFtMiB0ZXN0cyBh
cHBlYXIgdG8gY29uZmlybSB0aGF0IHRoaXMgcGF0Y2ggaXMgcm91Z2hseSBuZXV0cmFsIHdoaWxl
IGl0IHdhcyBhIDAuNSUgcmVncmVzc2lvbiBiZWZvcmUgSSB1c2VkIHRoaXMgdHJpY2ssIGJ1dCB0
aGUgbnVtYmVycyBhcmUgc3RpbGwgdG9vIG5vaXN5LCBJIHBsYW4gdG8gZG8gbW9yZSBtZWFzdXJl
bWVudHMgYmVmb3JlIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICBJIGRvbid0IHlldCBo
YXZlIHBlcmZvcm1hbmNlIG51bWJlcnMgZm9yIHRoaXMgcGF0Y2ggb24gYSBCaWdJbnQgYmVuY2ht
YXJrLCBJIHdpbGwgZ2V0IHN1Y2ggbnVtYmVycyBiZWZvcmUgdHJ5aW5nIHRvIGxhbmQgaXQsIGJ1
dCBJJ2QgbGlrZSBzb21lIHJldmlldyBpbiB0aGUgbWVhbnRpbWUuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVj
dGlvbkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXI6Om1lbW9yeU1vZFJN
KToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgorICAgICAgICAo
SlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludDMyIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVt
aXRTZXRIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OmVtaXRTZXRIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVOb25JbnQzMik6CisgICAg
ICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUJpZ0ludCk6CisgICAgICAgIChK
U0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlND
OjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OmRpZE9ic2VydmVCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpvYnNlcnZlUmVzdWx0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAg
ICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OnNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVZhbHVl
KToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKEpTQzo6
bGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQmlnSW50MzJT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKToKKyAg
ICAgICAgKEpTQzo6aXNCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRFcXVhbGl0eU9wSW1wbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvTnVtZXJpYyk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6b2JzZXJ2ZVVzZUtpbmRPbk5vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZhbHVlKToK
KyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAg
ICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJh
bmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0
Tm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFu
eUJpZ0ludEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlQml0d2lzZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5jT3JEZWMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVEaXYpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVNb2QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVQb3cpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGVCaWdJbnQzMk9wZXJhbmQ6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp+U3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OmVk
Z2UgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6
bm9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
OjpncHIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6dXNl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJy
YW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBkZmcv
REZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6aXNDZWxsKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OmluaXRp
YWxpemVDb25zdGFudHMpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuaDoKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0QW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0T3IpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRYb3IpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRSU2hpZnQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRSU2hpZnQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRMU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRM
U2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQml0
VVJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVU
b051bWVyaWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVJc0JpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmVtaXRCaW5hcnlTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6ZW1pdEJpbmFyeUJpdE9wU25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpidWlsZFR5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxv
d0hlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dC
aWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEJpZ0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hCaWdJbnQzMik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEJpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RBbnlCaWdJbnQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhl
ckNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBC
aWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0hlYXBCaWdJ
bnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVIZWFw
QmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRl
SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKiBmdGwvRlRMT1NS
RXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAg
ICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFNu
YXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aDoKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZlZhbHVlKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEJpZ0ludDMyS25vd25O
b3ROdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmSGVhcEJp
Z0ludCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RIZWFwQmln
SW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveEJpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6ZW1pdFR5cGVPZik6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVn
YXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RF
cSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3RvX251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBs
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50
aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6dG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpjYWxsQmln
SW50Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6QmlnSW50T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaWdJbnRP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
dG9UaGlzQmlnSW50VmFsdWUpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNUb1N0cmlu
Z0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpw
YXJzZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjppbmMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGVjKToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmJpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1Rv
TnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKEpTQzo6YXNIZWFwQmlnSW50KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0
b051bWJlclNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9PYmplY3RT
bG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjphc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0Jp
Z0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzSGVhcEJpZ0ludCBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpiaWdJbnQzMkFzSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojppc1ByaW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmdldFByaW1pdGl2
ZU51bWJlcik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtZXJpYyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpz
dHJpY3RFcXVhbEZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWwp
OgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxs
OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2ZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
dG9PYmplY3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzSGVh
cEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Cb29sZWFuIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvQm9vbGVhbiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZS5jcHA6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
anNBZGRTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAg
ICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJpZ0lu
dFRvT3RoZXJQcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpiaWdJbnRDb21wYXJlKToKKyAgICAg
ICAgKEpTQzo6anNMZXNzKToKKyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAoSlND
Ojphcml0aG1ldGljQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc1N1Yik6CisgICAgICAgIChK
U0M6OmpzTXVsKToKKyAgICAgICAgKEpTQzo6anNEaXYpOgorICAgICAgICAoSlNDOjpqc1JlbWFp
bmRlcik6CisgICAgICAgIChKU0M6OmpzUG93KToKKyAgICAgICAgKEpTQzo6anNJbmMpOgorICAg
ICAgICAoSlNDOjpqc0RlYyk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU5vdCk6CisgICAgICAg
IChKU0M6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNMU2hpZnQpOgorICAgICAgICAoSlNDOjpq
c1JTaGlmdCk6CisgICAgICAgIChKU0M6OmJpdHdpc2VCaW5hcnlPcCk6CisgICAgICAgIChKU0M6
OmpzQml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU9yKToKKyAgICAgICAgKEpT
Qzo6anNCaXR3aXNlWG9yKToKKyAgICAgICAgKiBydW50aW1lL1NjcmliYmxlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oLgorICAgICAg
ICAoSlNDOjpzY3JpYmJsZUZyZWVDZWxscyk6CisgICAgICAgIChKU0M6OmlzU2NyaWJibGVkVmFs
dWUpOgorICAgICAgICAoSlNDOjpzY3JpYmJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUlt
cGwpOgorCiAyMDIwLTA0LTA4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogdHJlYXQgY29tbWEgc3ViLWV4cHJlc3Np
b25zIGFzIHNlcGFyYXRlIHN0YXRlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggODNlNDg2Mjc0MDQuLjM3YTk2NWU5M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODY3LDYgKzg2Nyw3IEBACiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFw
SXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAq
LzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8q
IFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMzMTExQjhCMjM5NzI1
NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM5NUM3MDcy
MjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTMzQTkyMEJEMjNEQTJDNkQwMDBFQkFG
MCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAvKiBCM1ZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RkIxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87IH07CkBAIC0zNTE0LDYgKzM1MTUs
NyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1Nv
dXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VDb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZE
NSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NDkyMjRENzlF
RjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3Bw
OyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NEEyMjRENzlFRjAwQzhDMjI3IC8qIEIz
T3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM09w
dGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgcGF0aCA9IGIzL0IzT3B0aW1pemVB
c3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0VsaW1pbmF0ZURlYWRDb2RlLmNw
cDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzU2MSw2ICs3NTYzLDcgQEAKIAkJCQkwRkUwNTAyMDFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywKIAkJCQkwRkUwNTAyMTFBQTkwOTU2MDBE
MzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJCTBGRTA1MDIyMUFBOTA5NTYwMEQzM0Iz
MyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBT
Y3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYwMEFBMjlCQSAvKiBTY3JpcHRFeGVj
dXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5MDBBQTI5QkEgLyogU2NyaXB0RXhl
Y3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRj
aGVyLmggKi8sCkBAIC04OTI2LDYgKzg5MjksNyBAQAogCQkJCTBGRUM4NTkxMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTMxRjMzQTQx
NjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJl
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMyMDBEMjYxRjAwMzhFMkNGIC8qIEFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENCNUUxRkNFNEUzNzAwNEI1MzIzIC8q
IEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYzEwMDI0MDRlZjYuLjM1Nzg2ODNi
NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gSW1tZWRpYXRl
czoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRl
ZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0dGVkLgorICAgICAg
ICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFm
dGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAgICAgIC8vIFRoZSB3cml0ZXMgYXJlIHVu
Y2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRlcnMgYWJvdmUgd2lsbCBoYXZlIGVuc3Vy
ZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlhdGU4KGludCBpbW0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCmluZGV4IGZlYTY2NzQ1
YjYyLi5mMmMwNTg0ZDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVO
QUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJv
ZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwg
SlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQordm9pZCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7
Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1l
cmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKKyAgICBpZiAoIXNob3VsZEVtaXRTZXRE
b3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEhl
YXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKQEAgLTQ4LDkgKzQ4LDE4IEBAIHZv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVs
cGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3REb3VibGUubGluaygmaml0KTsKIAorI2lm
IFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90QmlnSW50MzIgPSBqaXQu
YnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgIGVt
aXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBwZW5kKGppdC5qdW1wKCkpOworICAgIG5v
dEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAgICh2b2lkKSB0ZW1wR1BSOworI2VuZGlm
CisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MsIG1vZGUp
KTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RCaWdJbnQocmVncy5wYXls
b2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGppdCk7CisgICAgbm9uTnVtZXJpYy5hcHBl
bmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOworICAgIGVt
aXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKICAg
ICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwxOSArOTcsMzkgQEAgdm9pZCBBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQp
IGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLWJvb2wgQXJpdGhQ
cm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdAorYm9vbCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludDMyKCkgY29uc3QK
K3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJl
c3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJp
dGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVk
UmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRz
OjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9pZCBBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3ZvaWQgQXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVscGVycyYg
aml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50KCkpCi0gICAgICAgIGVt
aXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQpOworICAgIGlm
IChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNl
dChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7CiB9CiAKKyNpZiBVU0UoQklHSU5U
MzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7
CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigpKQorICAgICAgICBlbWl0VW5jb25kaXRp
b25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOworfQorI2VuZGlmCisKIHRl
bXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVsZFR5
cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgsMTIgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkKICAgICAg
ICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAgICAgICAg
ICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2Jz
ZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50
Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFwQmlnSW50Iik7CisgICAgICAgICAgICBz
ZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2
ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQz
MiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IDZhZGQx
YTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIE5v
bk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8
IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAg
ICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBCaWdJbnQgICAgICAgPSAxIDw8IDUsCisg
ICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYsCiAgICAgfTsKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2OworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAgICBPYnNlcnZlZFJlc3VsdHMoKSA9IGRl
ZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1bHRzKHVpbnQ4X3QgYml0cykKICAgICAg
ICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMy
KCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25JbnQzMigpIHsg
cmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51
bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlRG91
YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91Ymxl
KTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSB7IHJldHVybiBtX2Jp
dHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3VibGU7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYgTm9uTnVtZXJpYzsgfQotICAgIGJvb2wg
ZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDsgfQorICAgIGJvb2wg
ZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAmIChIZWFwQmlnSW50IHwgQmlnSW50
MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAm
IEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigpIHsgcmV0dXJuIG1f
Yml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHsg
cmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQ1
Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50NTJPdmVyZmxvdzsgfQogCkBAIC0xMDks
MTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVOZWdaZXJvRG91Ymxl
KCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gb2Jz
ZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKTsgfQogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVC
aWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSBjb25zdCB7IHJldHVy
biBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVhcEJpZ0ludCgpOyB9CisgICAgYm9vbCBk
aWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBj
b25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygp
OyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9i
c2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCk7IH0KIAogICAgIHZvaWQg
c2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpO
b25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkg
eyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0
T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmlj
KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChPYnNlcnZlZFJlc3Vs
dHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSGVhcEJpZ0ludCgpIHsgc2V0Qml0
KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkQmln
SW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyKTsgfQogICAgIHZvaWQg
c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQz
Mk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93KTsgfQogCkBAIC0xMjcsOCArMTMzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkludDMy
T3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3Vs
dHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3VibGU7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVl
LmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkJp
Z0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgbV9i
aXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7Cisg
ICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50OwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3Vs
dHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwyMiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKICAgICAvLyBkb3VibGUu
IFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0
T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9k
ZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxI
ZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlID0g
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJP
dmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KICAgICBib29sIHNo
b3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5vbk51bWVyaWMKICAgICB2b2lkIGVtaXRT
ZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRW1pdFNl
dE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0
U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJp
Z0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBjb25zdDsK
KyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OworCisgICAg
Ym9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdDsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisjZW5kaWYKIAog
ICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRUeXBl
KSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5n
IFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OwogY2xhc3MgVW5hcnlBcml0aFByb2Zp
bGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJl
c3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlw
ZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRo
UHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJs
eWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0
ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmls
ZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0
ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBj
bGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmls
ZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3
MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8Qmlu
YXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBC
aW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRl
ZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0
IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJp
dGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0aGUgdW5kZXJseWluZyB0eXBlLiIp
OwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNl
cnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CiAg
ICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlw
ZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lhbEZhc3RQYXRoQml0KSA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+Y2xlYXJM
aHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0
IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDFmNTY2
OTRjZTcwLi4yZWMzNzg2ZjllMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMjksNiArMzI5LDcgQEAgb3BfZ3JvdXAgOlVuYXJ5T3As
CiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwKICAgICAgICAgOmlzX2Jvb2xlYW4sCiAg
ICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19iaWdfaW50LAogICAgICAgICA6aXNfb2Jq
ZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGwsCiAgICAgICAgIDppc19mdW5jdGlvbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDljNTRiNDNkZGMzLi5jNjA5NjVi
Y2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODAuLmVlYTVmYTRj
M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAg
ICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzQm9vbGVh
biwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIsIG9wZXJhbmQpCisgICAgVVNFUyhPcElz
QmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVjdCwgb3BlcmFuZCkKICAgICBVU0VT
KE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzQ2VsbFdpdGhUeXBlLCBv
cGVyYW5kKQpAQCAtNDIzLDkgKzQyNCwxMCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAg
IERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCiAgICAgREVGUyhPcElzRW1wdHks
IGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRzdCkKLSAgICBVU0VTKE9wSXNVbmRlZmlu
ZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkKICAgICBE
RUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhPcElzTnVtYmVyLCBkc3QpCisgICAgREVG
UyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0LCBkc3QpCiAgICAgREVGUyhP
cElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElzQ2VsbFdpdGhUeXBlLCBkc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGRjMGY0
NzAxMTVhLi4xNmYyOTgxZmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTYwLDcgKzYwLDYgQEAKICNpbmNsdWRlICJJc29DZWxsU2V0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgotI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1ODhkYmZmNi4uMjA3NWRhNzA1NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwx
MiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGF0YUZvcm1hdEJv
b2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0gNiwKICAgICBEYXRhRm9ybWF0U3RvcmFn
ZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAgICBEYXRhRm9ybWF0QmlnSW50MzIgPSA4
LAorICAgIERhdGFGb3JtYXRKUyA9IDE2LAogICAgIERhdGFGb3JtYXRKU0ludDMyID0gRGF0YUZv
cm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLAogICAgIERhdGFGb3JtYXRKU0RvdWJsZSA9IERhdGFG
b3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsCiAgICAgRGF0YUZvcm1hdEpTQ2VsbCA9IERhdGFG
b3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLAogICAgIERhdGFGb3JtYXRKU0Jvb2xlYW4gPSBEYXRh
Rm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwKLSAgICAKKyAgICBEYXRhRm9ybWF0SlNCaWdJ
bnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCaWdJbnQzMiwKKwogICAgIC8vIE1hcmtl
ciBkZWxpbWluYXRpbmcgb3JkaW5hcnkgZGF0YSBmb3JtYXRzIGFuZCBPU1Itb25seSBkYXRhIGZv
cm1hdHMuCiAgICAgRGF0YUZvcm1hdE9TUk1hcmtlciA9IDMyLCAKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODliOS4uODMwZjZkNjc1ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVy
YW5kKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyBy
ZWdzKSBjb25zdAordm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0
VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BS
LCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsK
ICAgICBjYXNlIE5vbmU6CkBAIC02NywxMiArNjcsMTIgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWcKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewot
ICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3Ms
IERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVt
aXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAg
IHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2Jz
ZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCmluZGV4IGU4YjY1ZWFkNDZlLi4z
YWJhMWEzMmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVJbmRleC5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNs
dWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlRhZ1JlZ2lzdGVyc01vZGUuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTgzLDcgKzg0LDggQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2tpbmQgIT0gTm9uZTsgfQogCi0gICAg
dm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MpIGNvbnN0Owor
ICAgIC8vIFRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgaXMgb25seSBuZWVkZWQgb24gNjQtYml0cyBi
dWlsZHMgKGZvciB0ZXN0aW5nIEJpZ0ludDMyKS4KKyAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShD
Q2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01v
ZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKSBjb25zdDsKICAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFs
dWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggMTA1M2JhNTJiNTQuLjc3MWM3OWI4NTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMzksMTEgKzIzOSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRT
dHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICAgICAgc3RyT3V0LnByaW50KCJT
eW1ib2wiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKLQotICAg
ICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50KQotICAgICAgICAgICAgc3RyT3V0LnByaW50KCJC
aWdJbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9
CiAgICAgCiAgICAgaWYgKHZhbHVlID09IFNwZWNJbnQzMk9ubHkpCkBAIC0yNzgsNyArMjczLDIz
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwog
ICAgIH0KLSAgICAKKworICAgIGlmICgodmFsdWUgJiBTcGVjQmlnSW50KSA9PSBTcGVjQmlnSW50
KQorICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0JpZ0ludDMyKQorICAgICAgICAgICAg
c3RyT3V0LnByaW50KCJCaWdJbnQzMiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1Rv
cCA9IGZhbHNlOworCisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNIZWFwQmlnSW50KQorICAgICAg
ICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGlzVG9wID0gZmFsc2U7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAodmFsdWUgJiBTcGVj
RG91YmxlSW1wdXJlTmFOKQogICAgICAgICBzdHJPdXQucHJpbnQoIkRvdWJsZUltcHVyZU5hTiIp
OwogICAgIApAQCAtNDMxLDcgKzQ0Miw3IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJv
bUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKICAgICAgICAgcmV0dXJuIFNw
ZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0JpZ0ludDo6aW5mbygpKQot
ICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50
OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgICAg
IHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC00OTksOCArNTEwLDggQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBpZiAoc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQotICAgICAgICByZXR1cm4g
U3BlY0JpZ0ludDsKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFw
QmlnSW50VHlwZSkKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGlmIChzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2ZWRBcnJheVR5cGUpCiAgICAgICAgIHJl
dHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DbGFzc0lu
Zm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01MzYsNiArNTQ3LDggQEAgU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIHJl
dHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3Vi
bGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBT
cGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3Bl
Y3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVh
bigpKQpAQCAtNTk1LDggKzYwOCw4IEBAIE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxh
dGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwog
ICAgIGNhc2UgU3ltYm9sVHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2Fz
ZSBCaWdJbnRUeXBlOgotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBjYXNlIEhlYXBC
aWdJbnRUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgY2FzZSBBcnJh
eVR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjQXJyYXk7CiAgICAgY2FzZSBEZXJpdmVkQXJyYXlU
eXBlOgpAQCAtNjMyLDYgKzY0NSwxMCBAQCBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRP
ZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlwZSB0eQogCiAgICAg
aWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0eXBlIHw9IFNwZWNTdHJpbmc7CisKKyAg
ICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAgIHR5cGUgfD0gU3BlY0JpZ0ludDsKKwog
ICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0ODJkLi5kZjBiOTFhNzM1OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05
OCwxMiArOTgsMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVh
biAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PAogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkg
ZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KLXN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludC4KLXN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCitz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwQmlnSW50ICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQgdGhh
dCBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0JpZ0ludDMyICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIHNtYWxsIEJpZ0ludCB0aGF0IGlzIGlubGluZSB0aGUgSlNWYWx1
ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY0JpZ0ludDMyIHwgU3BlY0hlYXBCaWdJbnQ7CitzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAg
ICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgogc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIg
fCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4K
IHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlv
biB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVk
QXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0
ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmpl
Y3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2Jq
ZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09i
amVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3Qg
cHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3Bl
Y1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0NlbGwuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8
IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVj
SW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgorc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY09i
amVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8IFNwZWNIZWFw
QmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
Q2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBT
cGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
Qnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1w
dHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9u
bHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRzIHRvIHdoYXQgY291bGQgYmUg
Zm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCeXRlY29kZVRv
cCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJdCBjYW4gYmUgYW55dGhpbmcgdGhhdCBieXRlY29kZSBj
b3VsZCBzZWUgcGx1cyBleG90aWMgZW5jb2RpbmdzIG9mIG51bWJlcnMuCiAKQEAgLTE4NSw5ICsx
ODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1N5bWJvbDsKIH0KIAoraW5saW5lIGJvb2wg
aXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVy
biB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisKK2lubGluZSBib29sIGlzSGVhcEJpZ0ludFNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBT
cGVjSGVhcEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wgaXNCaWdJbnRTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0JpZ0ludDsKKyAg
ICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjQmlnSW50KSA9PSB2YWx1ZTsKIH0KIAog
aW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCAxYTBmOTcxYjhkNi4uOGQzNTRlNDliNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC0xNzAzLDcgKzE3MDMsMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVx
dWFsaXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9
PSAiYmlnaW50IikgewogICAgICAgICAgICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAg
IE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBl
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0
aGlzLCBkc3QsIG9wLm1fdmFsdWUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgSGVhcEJpZ0ludFR5cGUpOworI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKQEAgLTI5MTEsNyArMjkxNSw3IEBAIEpTVmFs
dWUgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIsIHVpbnQ4CiAgICAgcmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRN
YXBFbnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJz
ZUludFNpZ24gPSBzaWduID8gSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJ
bnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1h
cCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygp
LCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNl
SW50U2lnbik7CisgICAgICAgIEpTVmFsdWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJ
bnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpF
cnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0lu
dEluTWFwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGVhY2FjNjI1OGJiLi45OTMwZGQ0MTg1MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtMTA5MCw3ICsxMDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1
c2luZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpT
U3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmln
SW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNp
bmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+
OwogICAgICAgICB1c2luZyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJl
ZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNj
cmlwdG9yTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iq
LCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVpbnQ2NF90Pj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAwYTRhMTFmOWI0MC4uMDAx
MTdjYjg0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVk
ZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5j
bHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCkBAIC0yMTUsNyArMjE0LDcgQEAgaW5saW5lIFRvVGhpc1Jl
c3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBFQ01BTW9kZSBlY21hTW9kZSwgQWJzdHJh
Y3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAg
dmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBl
SW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUo
KSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBl
KCkgPT0gQmlnSW50VHlwZSk7CisgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8
IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8
fCB0eXBlLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWVjbWFN
b2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7
CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3lt
Ym9scyBoZXJlIHNpbmNlIGVpdGhlcjoKQEAgLTUwMyw3ICs1MDIsMTIgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIHNldFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisgICAgICAgICAgICBBU1NFUlQoVVNFX0JJ
R0lOVDMyKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFw
QmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFu
eUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNTMzLDcg
KzUzNywxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAoaGFuZGxlQ29u
c3RhbnRCaW5hcnlCaXR3aXNlT3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8gRklY
TUU6IHRoaXMgdXNlIG9mIGJpbmFyeVVzZUtpbmQgbWVhbnMgdGhhdCB3ZSBjYW5ub3Qgc3BlY2lh
bGl6ZSB0byAoZm9yIGV4YW1wbGUpIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmln
SW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludDMyKTsKKyAgICAgICAgICAgIEFTU0VSVChVU0VfQklHSU5UMzIpOworICAgICAgICB9IGVs
c2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY2xvYmJlcldvcmxkKCk7CkBAIC03MjMsMTEgKzczMywxNCBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogCiAgICAgY2FzZSBWYWx1ZVN1YjoKICAgICBjYXNlIFZhbHVlQWRkOiB7Ci0gICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVu
dHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0gICAgICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2Rl
LCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICBjbG9i
YmVyV29ybGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCBTcGVj
U3RyaW5nIGhlcmUgZm9yIFZhbHVlU3ViPyBJdCBzZWVtcyBsaWtlIHdlIG9ubHkgbmVlZCBpdCBm
b3IgVmFsdWVBZGQuCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5n
IHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CkBAIC04ODcsNiArOTAwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgVmFsdWVOZWdhdGU6IHsKKyAgICAgICAgLy8gRklYTUU6IHdl
IGNvdWxkIGRvIG11Y2ggc21hcnRlciB0aGluZ3MgZm9yIEJpZ0ludHMsIHNlZSBWYWx1ZUFkZC9W
YWx1ZVN1Yi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICBicmVhazsK
QEAgLTk1OSw3ICs5NzMsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgY2Fz
ZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwg
dHlwZU9mRG91YmxlSW5jT3JEZWMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2Ug
SGVhcEJpZ0ludFVzZToKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFw
QmlnSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToK
KyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBA
IC05NzUsNyArOTkzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNWYWx1
ZSBjaGlsZFkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAgICBpZiAo
Y2hpbGRYICYmIGNoaWxkWSAmJiBjaGlsZFguaXNOdW1iZXIoKSAmJiBjaGlsZFkuaXNOdW1iZXIo
KSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIGBkaWRGb2xkQ2xvYmJlcldvcmxk
YCBoZXJlIGJlY2F1c2UgdGhpcyBwYXRoIGlzIG9ubHkgcG9zc2libGUKLSAgICAgICAgICAgIC8v
IHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBCaWdJbnRV
c2UsIGNoaWxkcmVuIHdpbGwgYmUKKyAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBp
cyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBBbnlCaWdJbnRVc2Ugb3IgZnJpZW5kcywgY2hp
bGRyZW4gd2lsbCBiZQogICAgICAgICAgICAgLy8gY2xlYXJlZCBieSBgQWJzdHJhY3RJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUVmZmVjdHNgLgogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgp
OwogICAgICAgICAgICAgLy8gT3VyIGJveGluZyBzY2hlbWUgaGVyZSBtYXRjaGVzIHdoYXQgd2Ug
ZG8gaW4gb3BlcmF0aW9uVmFsdWVQb3cuCkBAIC05ODMsNyArMTAwMSw5IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9y
Tm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTMsNyAr
MTAxMywxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2UgVmFs
dWVNdWw6IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2Up
CisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBWYWx1
ZVN1Yj8KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAg
ICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVG
b3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZCgpOwpAQCAtMTA1Nyw3ICsxMDgwLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkK
KyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBl
bHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZCgpOwpAQCAtMTM4MSw2ICsxNDA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2Ug
SXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoK
ICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC0xNDA5LDYg
KzE0MzUsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgY2FzZSBJc051
bWJlcjoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQu
dmFsdWUoKS5pc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9v
bGVhbihjaGlsZC52YWx1ZSgpLmlzQmlnSW50KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChj
aGlsZC52YWx1ZSgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2Myw3ICsxNTky
LDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAg
ICAgaWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNCaWdJbnQpKSB7CisgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICBjb25z
dGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNCaWdJbnQpKSB7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CisgICAgICAg
ICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogaWYgdGhlIFNwZWN1bGF0ZWRU
eXBlIGluZm9ybXMgdXMgdGhhdCB3ZSB3b24ndCBoYXZlIGEgQmlnSW50MzIgKG9yIHRoYXQgd2Ug
d29uJ3QgaGF2ZSBhIEhlYXBCaWdJbnQpLCB0aGVuIHdlIGNhbiB0cmFuc2Zvcm0gdGhpcyBub2Rl
IGludG8gYSBJc0NlbGxXaXRoVHlwZShIZWFwQmlnSW50VHlwZSkgKG9yIGEgaHlwb3RoZXRpY2Fs
IElzQmlnSW50MzIgbm9kZSkuCiAKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51
bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjSW50
MzJPbmx5KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0
cnVlKSk7CkBAIC0xOTM3LDEzICsxOTgxLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMg
Y2hlY2sgaGVyZSwgYW5kIG5vdCBsYXRlciAoYWZ0ZXIgdGhlIHR5cGUtYmFzZWQgcmVwbGFjZW1l
bnQgYnkgZmFsc2UpLgorICAgICAgICAvLyBTYWFtIHNlZW1zIHRvIGFncmVlIHRoYXQgdGhlIHR3
byBjaGVja3MgY291bGQgYmUgc3dpdGNoZWQsIEknbGwgdHJ5IHRoYXQgaW4gYSBzZXBhcmF0ZSBw
YXRjaAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVj
aW5nIEJpZ0ludCB0byBKU0MuCi0gICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nQ2VsbENvbnN0
YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUg
JiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRv
IGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUu
aXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICB9OwogCi0g
ICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25TdHJp
bmdDZWxsQ29uc3RhbnQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdPckJp
Z0ludENlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50
KHJpZ2h0KSkgewogICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRG
b2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2Rl
LCBTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTU4LDE5ICsyMDA0
LDI0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBub2RlLT5jaGlsZDIoKSkgewotICAgICAgICAgICAg
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAotICAgICAgICAgICAgICAg
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFyVXNlKSB8fAotICAg
ICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmlu
Z0lkZW50VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJp
bmdVc2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0
aGVyZSBhbnkgY2FzZSBub3QgaW52b2x2aW5nIE5hTiB3aGVyZSB4ID09PSB4IGlzIG5vdCBndWFy
YW50ZWVkIHRvIHJldHVybiB0cnVlPworICAgICAgICAgICAgLy8gSWYgbm90IEkgbWlnaHQgc2xp
Z2h0bHkgc2ltcGxpZnkgdGhhdCBjaGVjay4KKyAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQm9vbGVhblVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEludDUyUmVwVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmlu
Z0lkZW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1i
b2xVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVz
ZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50
eXBlZFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgTWlzY1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
U3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkKKyAgICAg
ICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNl
KQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBT
dHJpbmdVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmln
SW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRy
dWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZmI5Y2FkMWM1
MWMuLmRlYjYyOTgzNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNTY2Niw2ICs1NjY2LDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pc19udW1iZXIpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9pc19iaWdfaW50OiB7
CisgICAgICAgICAgICBBU1NFUlQoVVNFX0JJR0lOVDMyKTsKKyAgICAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7CisgICAgICAgICAg
ICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOworICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQmlnSW50LCB2YWx1ZSkpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfaXNfYmlnX2ludCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX2lzX2NlbGxfd2l0aF90eXBlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAgICAgTm9k
ZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Yy4uMDNlODliMjZl
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
QEAgLTE0OSw2ICsxNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3Bf
aXNfdW5kZWZpbmVkX29yX251bGw6CiAgICAgY2FzZSBvcF9pc19ib29sZWFuOgogICAgIGNhc2Ug
b3BfaXNfbnVtYmVyOgorICAgIGNhc2Ugb3BfaXNfYmlnX2ludDoKICAgICBjYXNlIG9wX2lzX29i
amVjdDoKICAgICBjYXNlIG9wX2lzX29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNfY2Vs
bF93aXRoX3R5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDYyYmIxMjU4ZDUwLi5kMjY4MWRiYjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzUsNiArMTc1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgog
ICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoK
QEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICByZXR1
cm47CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmln
SW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsK
ICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC02ODAsNyArNjgxLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNl
IEJpZ0ludDMyVXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2Ug
QW55QmlnSW50VXNlOgogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKQEAgLTcwMiw3ICs3MDUsOCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgVmFsdWVQb3c6CiAgICAgY2FzZSBW
YWx1ZUJpdExTaGlmdDoKICAgICBjYXNlIFZhbHVlQml0UlNoaWZ0OgotICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMg
dXNlIG9mIHNpbmdsZS1hcmd1bWVudCBpc0JpbmFyeVVzZUtpbmQgd291bGQgcHJldmVudCB1cyBm
cm9tIHNwZWNpYWxpemluZyAoZm9yIGV4YW1wbGUpIGZvciBhIEhlYXBCaWdJbnQgbGVmdC1vcGVy
YW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAg
ICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKaW5kZXggZmI0NTcwOWZlNTEuLmI1NTVhNDExOTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApA
QCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFJldmlzaXQgdGhpcyBjb25kaXRpb24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlND
LgogICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3Rh
bnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5p
c0JpZ0ludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVl
LmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsK
ICAgICAgICAgICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb25T
dHJpbmdPckJpZ0ludENlbGxDb25zdGFudChjaGlsZDFDb25zdGFudCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA5MmMwMzhmMDU5MC4uODEwMmJhMDQzM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNp
bmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0Nyw2ICsxNDYsNyBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAg
ICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6
CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNl
IElzT2JqZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggMWE0ZGVjZGEwYzIuLjgwNzMwODM4ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDIsMTQgKzIwMiwzNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQzMik7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVh
ciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCBy
ZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3
ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBp
bnN0ZWFkIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJ
bmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRP
bmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjSGVhcEJp
Z0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUodm0o
KS5oZWFwQmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgLy8gSGVhcEJpZ0ludHMgYXJlIGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0
SlMgaXMgZ29vZCBoZXJlCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAgICAg
ICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOworICAg
ICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBP
cEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsK
KyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3Rh
bnRPbmUpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBn
b29kIGVub3VnaCBmb3Igbm93LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciBo
YXZpbmcgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uIGZvciBzbWFsbCBCaWdJbnRzIGluc3RlYWQu
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVC
aWdJbnQoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBu
b3QgYXBwZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwg
YnV0IGl0IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IHdlIG1pZ2h0IG9wdGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlv
biBjYWxsIGluc3RlYWQgaW4gdGhhdCBjYXNlLgogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9w
KG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOwotICAgICAgICAgICAgICAgIG5vZGVD
b25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNw
ZWNCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXpl
KHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbm9kZUNv
bnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3Bl
Y0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6
ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDEpKSkpOwogICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFudE9uZSkpOwotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICAv
LyBCaWdJbnRzIGFyZSBjdXJyZW50bHkgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1
bHRKUyBpcyBnb29kIGhlcmUKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgb2YgTm9kZVJl
c3VsdEpTIGlzIGdvb2QgaGVyZQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICAgICAgICAg
IH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBBcml0aEFkZCA6IEFyaXRoU3Vi
KTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZs
b3cpOwpAQCAtMjM1LDEyICsyNTUsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGNo
aWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgRWRnZSYgY2hpbGQyID0gbm9kZS0+
Y2hpbGQyKCk7CiAKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmln
SW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVz
ZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQy
KTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
KyNlbmRpZgorCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZv
ckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTI2OCw4ICsyOTYsMjEg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBjYXNlIFZhbHVl
Qml0QW5kOiB7CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjZW5k
aWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzEzLDcgKzM1NCwxNyBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRT
cGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG9wZXJh
bmRFZGdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFu
ZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihvcGVyYW5kRWRnZSk7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkp
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2Up
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlC
aWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxI
ZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQml0T3BzKCkp
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihvcGVyYW5kRWRnZSk7CiAgICAg
ICAgICAgICBlbHNlIHsKQEAgLTQ1OCw5ICs1MDksMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGNoaWxkMS5ub2Rl
KCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVz
ZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihjaGlsZDIp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQoY2hp
bGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFu
eUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVz
ZT4oY2hpbGQyKTsKKyNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtNTQ2LDggKzYwNSwyMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hp
bGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludDMyKGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkg
eworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFu
eUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7
CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTg4LDEyICs2
NjAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwog
CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hp
bGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KGxlZnRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdz
KE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGxlZnRDaGlsZCk7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnRVc2U+KHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QW55QmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihyaWdodENoaWxkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5v
ZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgIH0K
KyNlbmRpZgogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZv
ckFyaXRobWV0aWMobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihsZWZ0Q2hpbGQpOwpAQCAtNjU3LDEyICs3
MzcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVmFsdWVQb3c6IHsK
KyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNo
aWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjU0NCw2ICsy
NjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAg
ICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAgICAgIGNhc2Ug
SXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgSXNPYmplY3RPck51bGw6CiAgICAgICAgIGNhc2UgSXNG
dW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CkBAIC0yODg1LDcg
KzI5NzQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI5NTgs
NyArMzA1NiwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIHByZWRpY3Rp
b24gb2YgdGhlIGNoaWxkIGlzIEJpZ0ludCwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0IFRvTnVtZXJp
YyB0byBJZGVudGl0eSwgc2luY2UgaXQgY2FuIG9ubHkgcmV0dXJuIGEgQmlnSW50IHdoZW4gZmVk
IGEgQmlnSW50LgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludCgpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQor
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5k
aWYKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTM0NTIsMTMgKzM1NTksMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgICAg
IGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBI
ZWFwQmlnSW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGlmIChhbHdheXNVbmJveFNp
bXBsZVByaW1pdGl2ZXMoKQogICAgICAgICAgICAgICAgIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZh
cmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNo
YW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogd2hhdCBzaG91bGQgd2UgZG8gYWJvdXQg
QmlnSW50MzJVc2UgYW5kIEFueUJpZ0ludFVzZSA/CisgICAgICAgIC8vIEFsc28gbW9yZSBicm9h
ZGx5LCB3aGF0IGFib3V0IGFsbCBvZiB0aGUgVXNlS2luZHMgd2hpY2ggYXJlIG5vdCBsaXN0ZWQg
aW4gdGhhdCBzd2l0Y2g/CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMzk3MiwxMiArNDA4MSwyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbm9k
ZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJp
Z0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3Ry
aWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGls
ZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVz
ZT4obm9kZS0+Y2hpbGQyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAKaW5kZXggMWNjYThiMmFjNDEuLjc3MGQ5ZDU3ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJERkdHcmFw
aC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlICJERkdOdWxsQWJzdHJhY3RTdGF0
ZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDBiODUwZjBjODA3
Li44YjU1YTM0NGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNjIy
LDYgKzI2MjIsMTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3ltYm9sU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
Ym9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpCisgICAgeworICAgICAgICByZXR1cm4gaXNC
aWdJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlz
SGVhcEJpZ0ludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJv
b2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50KCkKICAgICB7CkBAIC0yODIyLDcgKzI4MzQsMTkgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKTsKICAgICB9Ci0gICAgCisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoTm9k
ZSogb3AxLCBOb2RlKiBvcDIpCisgICAgeworICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQzMigpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKTsKKyAgICB9
CisjZW5kaWYKKworICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoTm9k
ZSogb3AxLCBOb2RlKiBvcDIpCisgICAgeworICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCk7Cisg
ICAgfQorCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoTm9kZSog
b3AxLCBOb2RlKiBvcDIpCiAgICAgewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxh
dGVGaW5hbE9iamVjdCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA3ODM1MjhlYTU0NS4uMGRm
YTAyZGRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM5
Niw2ICszOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
SXNVbmRlZmluZWRPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNCb29s
ZWFuLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzTnVtYmVyLCBOb2RlUmVzdWx0
Qm9vbGVhbikgXAorICAgIC8qIElzQmlnSW50IGlzIG9ubHkgdXNlZCB3aGVuIFVTRV9CSUdJTlQz
Mi4gT3RoZXJ3aXNlIHdlIGVtaXQgSXNDZWxsV2l0aFR5cGUgKi9cCisgICAgbWFjcm8oSXNCaWdJ
bnQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTnVtYmVySXNJbnRlZ2VyLCBOb2Rl
UmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikg
XAogICAgIG1hY3JvKElzT2JqZWN0T3JOdWxsLCBOb2RlUmVzdWx0Qm9vbGVhbikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggMjNlYmUwZDdiYzcuLmIyMjEx
OWI5ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTM4
MywxMCArMzgzLDEzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBq
aXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICAv
LyBXZSBjYW4ndCBiZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2Ug
dGhlIG51bWJlclRhZ1JlZ2lzdGVyLAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cg
aG93IHRvIHJlc3RvcmUgaXQuCiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAg
ICAgICAgICAgICAgIC8vIFdlIGFsc28gdXNlIHRoZSBub3RDZWxsTWFza1JlZ2lzdGVyIGFzIHRo
ZSBzY3JhdGNoIHJlZ2lzdGVyLCBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBmaW5kIGEgbGVzcyBncm9zcyB3YXkgb2YgZG9pbmcgdGhpcywgbWF5YmUgdGhy
b3VnaCBkZWxheWluZyB0aGVzZSBvcGVyYXRpb25zIHVudGlsIHdlIGFjdHVhbGx5IGhhdmUgc29t
ZSBzcGFyZSByZWdpc3RlcnMgYXJvdW5kPworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpLCBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNW
YWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291
cmNlLmdwcigpKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgRG9Ob3RIYXZlVGFnUmVn
aXN0ZXJzKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7
CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGlmIChleGl0Lm1fanNW
YWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAgICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdp
c3RlciBzbyB3ZSBjYW4gdXNlIGl0LgpAQCAtMzk4LDcgKzQwMSw3IEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhp
dCwgY29uc3QKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBzY3JhdGNoKHNjcmF0Y2hUYWcs
IHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQu
bG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpLCBzY3JhdGNoKTsKLSAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gpOworICAg
ICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCwgSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVz
dG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0
Y2hQYXlsb2FkKTsKQEAgLTQwNywxMCArNDEwLDEwIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QK
ICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1
ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
IHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0g
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSwgSW52YWxpZEdQ
UlJlZyk7CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVl
KGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKKyAgICAgICAgICAgICAgICBwcm9m
aWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3MoKSwgSW52
YWxpZEdQUlJlZyk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggOWU5YmNlYTQ4MWMuLmUw
ZTg3MjFlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGNjNTc4MDk3Yjc0
Li40NDBjOWI4MjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtODcsNyArODcsNiBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgotI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShERkdf
SklUKQpAQCAtMjIyLDU2ICsyMjEsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFdp
dGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbAogICAgIGJh
c2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIE51bWJlck9w
ZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJpbmFyeU9wKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50
T3AsIE51bWJlck9wZXJhdGlvbiYmIG51bWJlck9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
Ci17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0g
b3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3AyLnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdl
KTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9wKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgSW50MzJPcGVyYXRpb24+Ci1zdGF0aWMgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwgSW50MzJPcGVyYXRp
b24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3AyLnRvQmlnSW50T3JJbnQzMihn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpKSk7Ci0KLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKLSAg
ICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGludDMyT3AoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpLCBXVEY6Omdl
dDxpbnQzMl90PihyaWdodE51bWVyaWMpKSkpOwotfQotCiBzdGF0aWMgQUxXQVlTX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSBwYXJzZUludFJlc3VsdChkb3VibGUgaW5wdXQpCiB7CiAgICAgaW50IGFz
SW50ID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1dCk7CkBAIC00NzEsNzEgKzQyMCwzNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTW9kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+
IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRv
dWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBqc01v
ZChsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlvbi4i
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQot
ICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkp
OwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2YWx1ZSArIDEpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzSW5jKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVjKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmRO
dW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFu
ZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihvcGVy
YW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2YWx1ZSAt
IDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRGVjKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1
ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAKLSAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpCi0gICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpiaXR3aXNlTm90
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0K
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKH5XVEY6OmdldDxpbnQzMl90Pihv
cGVyYW5kTnVtZXJpYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU5v
dChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikKQEAgLTU0NCwxNSArNDU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJf
dCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0ICYgcmlnaHQ7Ci0gICAg
fTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2Rl
ZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZUFuZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTYxLDE1ICs0NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7
Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBp
bnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgfCByaWdodDsK
LSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU3OCwxNSArNDc0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50
KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVm
dCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0IF4gcmln
aHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24uIl9z
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZVhvcihnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRM
U2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU5NSwxNSArNDgzLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAt
PiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBs
ZWZ0IDw8IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFy
eU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBp
bnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hp
ZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0xTaGlmdChn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTYxMiwxNSAr
NDkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9
IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJ
bnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25l
ZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1
dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qg
ewotICAgICAgICByZXR1cm4gbGVmdCA+PiAocmlnaHQgJiAweDFmKTsKLSAgICB9OwotCi0gICAg
cmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1JTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpCkBAIC02NTgsMTUgKzUzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsKLSAgICB9Owot
Ci0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVyYXRpb24uIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0RpdihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY3
NSwxNSArNTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJ
bnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwg
SlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAg
YXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUg
ewotICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0aFBvdyhsZWZ0LCByaWdodCk7Ci0gICAgfTsK
LQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1BvdyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIGRvdWJsZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCkBAIC0xNDgwLDcgKzEzMzYsNyBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVnZXhwLT50ZXN0
KGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViSGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE0OTIsNyArMTM0OCw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSkKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTAzLDcgKzEzNTksNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3Qs
IG9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
K0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFwQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUxNSw3ICsxMzcxLDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5KGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAgICAgCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUyNyw3ICsxMzgzLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFpbmRl
cihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTUzOSw3ICsxMzk1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNC
aWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwog
fQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTU1MSw3ICsxNDA3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU2Myw3ICsxNDE5LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xv
YmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKQEAgLTE1NzUsNyArMTQzMSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0
dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRP
cGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1ODcsNyArMTQ0Myw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFu
ZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwg
SlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0SGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1OTksNyArMTQ1NSw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRS
aWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTYxMSw3ICsxNDY3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCBy
aWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9y
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYyOSw3ICsxNDg1LDcgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFs
U2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CisgICAgcmV0dXJuIEpTVmFs
dWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CiB9CiAKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBhcmcxLCBFbmNvZGVkSlNWYWx1ZSBhcmcyKQpAQCAt
MTY3NCwxMCArMTUzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8g
dmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPih2YXJpYW50KSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXVEY6OmdldDxKU0JpZ0ludCo+KHZhcmlhbnQp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4o
dmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwYzg3M2RiZTVmZS4uNTMyYzYyYTdkNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTgxLDE4
ICsxODEsMTggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmlu
ZyhKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEoKIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3QoSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9y
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5U
RVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ViSGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRB
bmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90SGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBXVEZfSU5URVJOQUw7CitKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9y
SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChW
TSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMoVk0q
LCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IG1pbkNhcGFjaXR5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDMuLmQ0ZTM2NGY0ZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtNTMyLDcgKzUzMiwxOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3ltYm9sKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50MzIpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNIZWFwQmlnSW50KTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDA0LDYgKzEwMTYsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgICAgICBjYXNlIElzQm9v
bGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoKICAg
ICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAg
ICAgIGNhc2UgSXNPYmplY3RPck51bGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IGQ2ZTdjOWUzMDg1Li42ZGE2YmMxYzM1NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTc5LDcgKzc5LDkg
QEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgY2FzZSBTdHJpbmdP
ck90aGVyVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRV
c2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRV
c2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNl
IE5vdFN0cmluZ1ZhclVzZToKQEAgLTI2Myw2ICsyNjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wg
aWdubwogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAg
ICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJ
bnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAg
LTY3NywxMCArNjgwLDEwIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBWYWx1
ZURpdjoKICAgICBjYXNlIFZhbHVlTW9kOgogICAgIGNhc2UgVmFsdWVQb3c6Ci0gICAgICAgIHJl
dHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKTsKKyAgICAgICAgcmV0dXJuIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpOwog
CiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBCaWdJbnRVc2U7CisgICAgICAgIHJldHVybiBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZTsKIAog
ICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCBkN2ViNmEwNTVkMy4uM2I1NWMwNjk0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTcwNiw2ICsxNzA2LDEwIEBA
IGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlKiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChu
b2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSAmJiAoY29uZGl0aW9u
ID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKG5v
ZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAg
ICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29u
ZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1MzcsNDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYgY2hpbGQxID0gbm9kZS0+
Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
IHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQx
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRyaWNr
IHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwgYW5k
IHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAgICAg
IHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7
CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAw
ZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50MzJN
YXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQueG9y
NjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTog
YWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAg
ICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIG9w
ZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChjaGls
ZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwgb3Bl
cmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90QmlnSW50
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRo
aXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8
fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3Bl
Y3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNlIGNh
c2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsK
IAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICszNjA1LDE4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xv
d1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9k
ZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRP
cChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwog
ICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChsZWZ0
Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9PSBB
bnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdo
dENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAgaWYgKGlzS25vd25Ob3RO
dW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5v
ZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwot
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hp
bGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0zNjMwLDExICszNjYxLDEz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAg
ICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQu
aXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAg
IGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhp
cywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAg
ICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogICAgIGlmICghcmlnaHRP
cGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hp
bGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsgLy8g
UmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNW
YWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDMsODQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVm
dENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNo
aWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBy
aWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hpbGQu
dXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3Bl
cmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3Bl
cmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAg
ICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisKICAgICAgICAgc3dpdGNo
IChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAgICAgICAgZW1pdFVudHlw
ZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0QW5kPihub2RlKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1ZUJpdFhvcjoKLSAgICAgICAg
ICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJp
dFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVk
IHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGlu
ZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQocmlnaHQuZ3ByKCksIHJlc3Vs
dEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAg
ICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVyYXRvciwgb3BlcmF0aW9uVmFs
dWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBu
ZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGVuY29k
aW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0KHJpZ2h0LmdwcigpLCByZXN1
bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Cisg
ICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBzbyB3ZSBtdXN0IGFkZCBpdCBi
YWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAgICAgIG1faml0LnhvcjY0KHJp
Z2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQub3I2NChUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNl
S2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2Up
OwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0R1BS
ID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJ
bnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENo
aWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0g
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIHN3aXRjaCAob3Ap
IHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVl
Qml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFs
dWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklU
Qml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9kZSk7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRP
ckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+
KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJh
dGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQpAQCAtMzc1
NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2Rl
KiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5v
ZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJp
dE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25fR0pKIHNuaXBwZXRTbG93UGF0
aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlmdAogICAgICAgICA/IG9wZXJh
dGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0OwpAQCAtMzc2NSw5
ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJp
dE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAg
ICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBp
ZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVy
KHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1OSwyNyArMzkyNiwyNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKiBub2RlKQogICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQg
PSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBs
ZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3Vs
YXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJp
Z0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJp
Z2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hp
ZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGls
ZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0
U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0
VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25W
YWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyArMzk1NCwyNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9k
ZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdwcigp
OwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVj
dWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50
KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0
Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0Qmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7
CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9kZSkKQEAgLTM5MTgsNyAr
Mzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUp
CiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hp
bGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3Ag
PT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUp
OworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDE1LDY5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGls
ZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIo
KTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hp
bGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRD
aGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEg
cmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1F
OiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmlj
aWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsK
KworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5n
cHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisK
KyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93
IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNo
QWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3Vs
dEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZl
IFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3cs
IEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkg
ZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihy
ZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0
KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNw
ZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRD
aGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygp
OworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwor
CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKKyAgICAgICAgLy8gRklYTUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVk
IGZ1bmN0aW9uCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1i
ZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2Vu
ZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVh
cEJpZ0ludFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBH
UFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQs
IHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkQmlnSW50LCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAg
LTQwMDYsNDQgKzQxMjMsOTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3Vi
KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAg
RWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRj
aEZQUlJlZyA9IGZhbHNlOwotI2Vsc2UKLSAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcg
PSB0cnVlOwotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7Ci0jZW5kaWYK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnQzMlVzZSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBu
ZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/Cisg
ICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBm
b3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50
MzIodGVtcEdQUik7CiAKLSAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1f
aml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJ
bmRleChieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29k
ZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7Ci0gICAgICAgIGF1dG8gcmVwYXRj
aGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKLSAgICAgICAgYXV0byBu
b25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKyAgICAgICAgLy8gRklY
TUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CiAKLSAgICAg
ICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1Nj
cmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9ybWF0aXZlIFNwZWN1bGF0
aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVS
ZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIEkgZG8gYW55dGhp
bmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJbnQzMihyZXN1bHRHUFIp
OworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9I
ZWFwQmlnSW50CiAKLSAgICBBU1NFUlQobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2Ug
JiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAvLyBGSVhNRTogd2h5
IGRvIGNvbXBpbGVWYWx1ZUFkZC9jb21waWxlVmFsdWVNdWwgdXNlIGlzS25vd25Ob3ROdW1iZXIg
YnV0IG5vdCBWYWx1ZVN1Yj8KKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJp
Z0ludFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQo
dGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3Bl
Y3VsYXRlQW55QmlnSW50KGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChy
aWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVS
ZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdz
KCk7CiAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
Ci0gICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwotICAgIEdQUlJlZyByaWdodEdQUiA9
IHJpZ2h0LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBKU1ZhbHVl
UmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAotICAg
IHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0lu
dChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMy
KQogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKLSAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworCisgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgYm9vbCBu
ZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0g
ZmFsc2U7CisjZWxzZQorICAgIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBi
b29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IHRydWU7CisjZW5kaWYKKworICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEpJVFN1YklDKiBzdWJJQyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOworICAgIGF1dG8g
cmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKKyAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworCisgICAgY29tcGls
ZU1hdGhJQyhub2RlLCBzdWJJQywgbmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJS
ZWcsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICByZXR1
cm47CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hp
bmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYxMyw2ICs0
Nzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUp
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkKIHsKICAg
ICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIG5vZGUgc2hvdWxkIGhhdmUgYmVlbiB0cmFuc2Zv
cm1lZCBpbnRvIGFuIGFkZCBvciBhIHN1YiBieSBGaXh1cFBoYXNlCisgICAgLy8gRklYTUU6IEkg
ZG9uJ3QgdGhpbmsgdGhpcyBpcyB0cnVlLCB3ZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBzb21lIHBh
dGggZm9yIEFueUJpZ0ludC4KICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpOwogCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKQEAgLTQ2MjgsNiArNDc5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bmNPckRlYyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVO
ZWdhdGUoTm9kZSogbm9kZSkKIHsKKyAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoLCBhdCBs
ZWFzdCBmb3IgQmlnSW50MzIsIGJ1dCBwcm9iYWJseSBhbHNvIGZvciBIZWFwQmlnSW50IGhlcmUu
CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxp
bmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwog
ICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwpAQCAtNDgw
OCwyOSArNDk3Niw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9k
ZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdl
JiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmln
SW50MzJVc2UpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBjb2RlIGJldHdlZW4gY29tcGlsZVZh
bHVlQWRkLCBjb21waWxlVmFsdWVTdWIgYW5kIGNvbXBpbGVWYWx1ZU11bCBmb3IgQmlnSW50MzIg
aXMgbmVhcmx5IGlkZW50aWNhbCwgc28gdHJ5IHRvIGdldCByaWQgb2YgdGhlIGR1cGxpY2F0aW9u
LgorICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMg
ZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8v
IEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3Jl
IGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAg
ICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShy
aWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQ
Uik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92
ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQu
YnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIs
IHJlc3VsdEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBwYXNzIGFuIGluZm9y
bWF0aXZlIFNwZWN1bGF0aW9uUmVjb3Zlcnk/CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKworICAgICAgICAvLyBGSVhNRTogc2hv
dWxkIEkgZG8gYW55dGhpbmcgdG8gZnJlZSB0ZW1wR1BSPworICAgICAgICBtX2ppdC5ib3hCaWdJ
bnQzMihyZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBt
aXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50CisjZW5kaWYKKworICAgIGlmIChsZWZ0Q2hpbGQudXNl
S2luZCgpID09IEhlYXBCaWdJbnRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJp
Z0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hp
bGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJl
ZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0
Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7
CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQu
bm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVP
cGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVy
KGxlZnRDaGlsZC5ub2RlKCkpIHx8IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkp
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTAxMCwyOSArNTIxMiwzMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9k
ZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2Ug
JiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFk
ZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBz
bG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93IHVnbHkgdGhlIGNvZGUgZm9yIERpdiBnZXRzLgorCisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcg
bGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdw
cigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRpdkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRp
dkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90
TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0
KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQpOworICAgIGlmIChpc0tub3duTm90TnVtYmVyKGxlZnRDaGlsZC5ub2RlKCkpIHx8
IGlzS25vd25Ob3ROdW1iZXIocmlnaHRDaGlsZC5ub2RlKCkpIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChBbnlCaWdJbnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkp
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC01MDQ2
LDYgKzUyNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSog
bm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VSVChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoVW50eXBlZFVzZSkpOworCiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxl
ZnQ7CiAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCkBAIC01Mjk1LDI5ICs1
NTAzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2RlKiBub2Rl
KQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50
MzIuIEN1cnJlbnRseSB3ZSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGgsIGJlY2F1c2Ugb2YgaG93
IHVnbHkgdGhlIGNvZGUgZm9yIE1vZCBnZXRzLgorCisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxl
ZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQo
dGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICAgICAgc3BlY3Vs
YXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChy
aWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENo
aWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCBy
aWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJpZ0ludCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERGR19BU1NFUlQobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGls
ZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlw
ZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5i
aW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7Cisg
ICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgcmlnaHRDaGlsZCwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAg
ICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9
IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIG9wMlJlZ3MgPSBvcDIuanNWYWx1
ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNTg1OSwzMCArNjA3MSwzMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9k
ZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVz
ZSkgeworICAgIC8vIEZJWE1FOiBkbyB3ZSB3YW50IGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBm
b3IgUG93PyBJIGV4cGVjdCBpdCB3b3VsZCBvdmVyZmxvdyBwcmV0dHkgb2Z0ZW4uCisgICAgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7
CiAKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgICAg
IHNwZWN1bGF0ZUJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisgICAgICAgIHNwZWN1bGF0
ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJp
Z0ludChyaWdodENoaWxkLCByaWdodEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUG93QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVh
cEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IFVudHlwZWRVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgREZHX0FTU0VSVChtX2pp
dC5ncmFwaCgpLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBCaWdJbnQzMlVzZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKIAotICAgIEpTVmFs
dWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNwZWN1
bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsK
ICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1Zh
bHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC02MDMwLDYgKzYy
NDUsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fz
c2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgY29tcGlsZUJpZ0ludDMyQ29tcGFyZShub2Rl
LCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNl
KSkgewogICAgICAgICBjb21waWxlSW50NTJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CkBAIC02
MDU4LDYgKzYyNzksOSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUs
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCisgICAgLy8gRklYTUU6IGFkZCBIZWFwQmlnSW50IGNhc2UgaGVyZS4K
KyAgICAvLyBOb3QgaGF2aW5nIGl0IG1lYW5zIHRoYXQgdGhlIGNvbXBhcmUgd2lsbCBub3QgYmUg
ZnVzZWQgd2l0aCB0aGUgYnJhbmNoIGZvciB0aGlzIGNhc2UuCisKICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBDb21wYXJlRXEpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29s
ZWFuVXNlKSkgewogICAgICAgICAgICAgY29tcGlsZUJvb2xlYW5Db21wYXJlKG5vZGUsIGNvbmRp
dGlvbik7CkBAIC02MTM2LDcgKzYzNjAsMjQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0jaWYgVVNFKEpTVkFMVUU2NCkgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNo
SW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5j
aEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9k
ZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxl
UGVlcEhvbGVCaWdJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVz
ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaElu
ZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUJpZ0ludDMy
Q29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmCisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaElu
ZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJ
bmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKQEAgLTYxODMsOCArNjQyNCw4IEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
VXNlKSkgewotICAgICAgICBjb21waWxlQmlnSW50RXF1YWxpdHkobm9kZSk7CisgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBjb21waWxlSGVh
cEJpZ0ludEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IApAQCAtNjI3OCw4ICs2NTE5LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlj
dEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVTdHJpbmdUb1VudHlwZWRFcXVhbGl0eShu
b2RlLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlKSk7CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlw
ZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKICAgICByZXR1
cm4gbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShub2RlKTsKIH0KIApAQCAtMTA1MzgsMTggKzEwNzc5
LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN5bWJvbChFZGdlIGVkZ2UpCiAg
ICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBHUFJSZWcgY2Vs
bCkKIHsKLSAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxs
KSwgZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEJp
Z0ludChjZWxsKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0hlYXBCaWdJbnQsIG1faml0LmJy
YW5jaElmTm90SGVhcEJpZ0ludChjZWxsKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVI
ZWFwQmlnSW50KEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNCaWdJbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cGVyYW5kKHRoaXMsIGVkZ2UpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBvcGVyYW5kLmdw
cigpKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgSlNWYWx1
ZVJlZ3MgcmVncykKQEAgLTEwNzE5LDggKzEwOTYwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAg
ICBzcGVjdWxhdGVTeW1ib2woZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmlnSW50
VXNlOgotICAgICAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVkZ2UpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRl
QW55QmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgSGVhcEJp
Z0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09i
amVjdChlZGdlKTsKQEAgLTEzMDY3LDE3ICsxMzMxNiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRS
ZWdzID0gYXJndW1lbnQuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IHRlbXAuZ3ByKCk7CisgICAg
Ly8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZSAoYW5kIGZvciB0eXBl
T2YsIGFuZCBmb3IgYm9vbGlmeSBvciB3aGF0ZXZlciBpdCBpcyBjYWxsZWQgaW4gdGhpcyBmaWxl
KS4KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGFyZ3VtZW50
UmVncyk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludChhcmd1
bWVudFJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNCaWdJ
bnQgPSBtX2ppdC5qdW1wKCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dEhlYXBCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGlzSGVhcEJpZ0ludCA9IG1faml0Lmp1bXAoKTsKIAogICAgIG5vdENlbGwubGlu
aygmbV9qaXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIo
YXJndW1lbnRSZWdzLCBzY3JhdGNoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKCZtX2ppdCk7Cisg
ICAgaXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFy
Z3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKQEAgLTEzOTY2LDkg
KzE0MjE2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJy
YW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgIG1fY3VycmVudE5vZGUgPSBi
cmFuY2hOb2RlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxp
dHkoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1
YWxpdHkoTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVh
dGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAg
ICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv
ZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMzk4MCw4ICsxNDIzMCw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIGxlZnQudXNl
KCk7CiAgICAgcmlnaHQudXNlKCk7CiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQx
KCksIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDIoKSwgcmlnaHRH
UFIpOworICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOwor
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsQ2FzZSA9IG1faml0LmJyYW5jaFB0cihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGJmYjE4NDgxNWIzLi5kYjE3YTcw
N2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM0Niw2ICszNDYsOSBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVE
b3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQ
UlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
R1BSUmVnIGZpbGxTcGVjdWxhdGVCaWdJbnQzMihFZGdlKTsKKyNlbmRpZgogICAgIEdlbmVyYXRl
ZE9wZXJhbmRUeXBlIGNoZWNrR2VuZXJhdGVkVHlwZUZvclRvSW50MzIoTm9kZSopOwogCiAgICAg
dm9pZCBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+KTsKQEAgLTExNDgsNiArMTE1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQZWVw
SG9sZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfSklUT3BlcmF0aW9uX0dKSik7CiAgICAg
dm9pZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwg
SklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlSW50NTJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVC
b29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2goTm9k
ZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24pOwogICAg
IHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5v
ZGUpOwpAQCAtMTE3Miw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1pc2NT
dHJpY3RFcShOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7
Ci0gICAgdm9pZCBjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29tcGls
ZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1i
b2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CiAgICAgdm9pZCBjb21waWxlU3lt
Ym9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVk
Z2UpOwogCkBAIC0xMjIyLDYgKzEyMjgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlv
bik7CiAgICAgdm9pZCBjb21waWxlSW50NTJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGls
ZUJpZ0ludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOworI2VuZGlmCiAgICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVTdHJpbmdDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CkBAIC0xMjk3LDExICsxMzA2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVCaXR3aXNlTm90KE5vZGUqKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5l
cmF0b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uPgotICAgIHZvaWQgZW1p
dFVudHlwZWRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0
T3AoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUJpdHdpc2VPcChOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlVmFsdWVCaXR3aXNlT3AoTm9kZSopOwogCi0gICAgdm9pZCBlbWl0VW50eXBlZFJpZ2h0
U2hpZnRCaXRPcChOb2RlKik7CisgICAgdm9pZCBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2hp
ZnRPcChOb2RlKik7CkBAIC0xNTcyLDYgKzE1ODEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3Bl
Y3VsYXRlSW50MzIoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlRG91Ymxl
UmVwQW55SW50KEVkZ2UpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVBbnlCaWdJbnQoRWRnZSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgIHZvaWQgc3Bl
Y3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlKTsK
ICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcFJlYWwoRWRnZSk7CkBAIC0xNjIxLDggKzE2MzQs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVTeW1ib2woRWRnZSk7Ci0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSwg
R1BSUmVnIGNlbGwpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UpOworICAgIHZvaWQg
c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlLCBHUFJSZWcgY2VsbCk7CisgICAgdm9pZCBzcGVjdWxh
dGVIZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1Zh
bHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3Bl
Y3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKQEAgLTI2MDAsNiAr
MjYxMyw1NiBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKyNp
ZiBVU0UoQklHSU5UMzIpCitjbGFzcyBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUJp
Z0ludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAg
OiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPcklu
dmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorCisgICAgflNwZWN1bGF0
ZUJpZ0ludDMyT3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQg
IT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQp
OworICAgIH0KKworICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9lZGdlOworICAgIH0KKworICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorCisgICAgR1BSUmVnIGdwcigpCisgICAgewor
ICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVCaWdJbnQzMihlZGdlKCkpOwor
ICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorCisgICAgdm9pZCB1c2UoKQor
ICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1f
Z3ByT3JJbnZhbGlkOworfTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICNkZWZpbmUgREZH
X1RZUEVfQ0hFQ0tfV0lUSF9FWElUX0tJTkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQ
YXNzZWRUaHJvdWdoLCBqdW1wVG9GYWlsKSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBf
ZHRjX3NvdXJjZSA9IChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgRWRnZSBfZHRjX2VkZ2UgPSAoZWRnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDg5Y2M5ZWYzZmUzLi44ODhiZDUwNmM5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC00MTg2LDcgKzQxODYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQ2hlY2tBcnJheU9yRW1wdHkgb25seSB1c2VkIGluIDY0
LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBJc0JpZ0lu
dDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJJc0JpZ0ludCBpcyBv
bmx5IHVzZWQgd2hlbiBVU0VfQklHSU5UMzIsIHdoaWNoIGNhbiBvbmx5IGJlIHRydWUgaW4gNjQg
Yml0IG1vZGUiKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKaW5kZXggYWM4OGZmODMyMDcuLmJlYmU1MmNiY2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzgsNyAr
MTM4LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToK
ICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFu
OiB7CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpT
QmlnSW50MzI6IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0zNDAsOCArMzQxLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2Rl
KiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIG5vdFRha2VuID0gdG1wOwogICAgIH0K
ICAgICAKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBBU1NFUlQo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGFy
ZzIodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
c3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9k
ZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICBHUFJS
ZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCkBAIC0zNjMsNDMgKzM2Nyw2NyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9k
ZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVy
dCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwg
dGFrZW4pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQ
UiwgcmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0Nl
bGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotICAgICAgICAKLSAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxR1BS
KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdERvdWJsZSA9IG1faml0LmJyYW5jaElm
TnVtYmVyKGFyZzFHUFIpOwotICAgICAgICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCByaWdodE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcyR1BSKTsK
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51
bWJlcihhcmcyR1BSKTsKLSAgICAgICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAot
ICAgICAgICBicmFuY2g2NChpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21w
aWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHRha2VuKTsKLSAgICAgICAganVtcChub3RU
YWtlbiwgRm9yY2VKdW1wKTsKLSAgICAgICAgCi0gICAgICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZt
X2ppdCk7CisgICAgICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVy
dCcgdG8gYmUgZmFsc2UpOgorICAgICAgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICBpZiAobGVmdCA9
PSByaWdodCkKKyAgICAgICAgICAgIGdvdG8gdGFrZW47CisgICAgICAgICBpZiAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAg
ICAgZ290byBub3RUYWtlbjsKKyAgICAgICAgICovCisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CisKKyAgICAgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1l
bnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJy
YW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3
ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAgICAgLy8gVGhlIHRyaWNr
IGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBp
dCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAg
ICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBp
dHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJv
dmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1v
dmUoYXJnMkdQUiwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNo
LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIsIHJl
c3VsdEdQUik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0
cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICAgICAgc2xvd1BhdGhDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKICAgICAgICAgYnJh
bmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBub3RU
YWtlbiA6IHRha2VuKTsKICAgICAgICAgCi0gICAgICAgIGxlZnREb3VibGUubGluaygmbV9qaXQp
OwotICAgICAgICByaWdodERvdWJsZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIAotICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgCisgICAgICAg
IC8vIElmIHdlIHN1cHBvcnQgQmlnSW50MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBh
dCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBhIGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQz
MikKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZl
IHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVh
cEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgICAgIC8v
IEluc3RlYWQgb2YgZG9pbmcgdHdvIGJyYW5jaGVzLCB3ZSBjYW4gZG8gYSBzaW5nbGUgb25lLCBi
eSBvYnNlcnZpbmcgdGhhdAorICAgICAgICAvLyAxLiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlz
IENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0KSBpcyBDZWxsKQorICAgICAgICAv
LyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAgICAgICAvLyAyLiBTaW5j
ZSB3ZSBrbm93IHRoYXQgbmVpdGhlciBpcyBhIGRvdWJsZSwgKGxlZnQgaXMgQ2VsbCB8fCByaWdo
dCBpcyBDZWxsKSBpcyBlcXVpdmFsZW50IHRvICgobGVmdCAmIHJpZ2h0KSBpcyBDZWxsKQorICAg
ICAgICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJl
IHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgICAgIC8vICAgICAgSWYgYXQgbGVhc3Qg
b25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgICAgICAv
LyAgICAgIEFuZCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLCB0aGVuIHRoZSAnT3RoZXInIHRh
ZyB3aWxsIGFsc28gYmUgMCwgbWFraW5nIHRoZSB0ZXN0IHN1Y2NlZWQKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Cisj
ZWxzZQorICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Cisj
ZW5kaWYKKyAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZDZWxsKHJl
c3VsdEdQUikpOworCisgICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9y
Y2VKdW1wKTsKKworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAgICAgICAgIGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25a
ZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9Ci0gICAgCisKICAgICBqdW1wKG5vdFRha2Vu
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0
cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogeworICAgIC8vIEZJWE1FOiBzb21lIG9m
IHRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVhYmxlIHdpdGggbm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZVN0cmljdEVxCiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgYXJnMVJlZ3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
YXJnMlJlZ3MgPSBhcmcyLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcx
LmdwcigpOworICAgIEdQUlJlZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKICAgICAKICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CkBAIC00MjgsMzMgKzQ1Niw2MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV9q
aXQub3I2NChhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3VsdEdQUik7CisgICAg
LyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWluZyAnaW52ZXJ0JyB0byBiZSBmYWxzZSk6
CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290
byBzbG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3Vs
dCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMg
Q2VsbCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1
bHQ7CisgICAgKi8KIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOwog
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgdHdvQ2VsbHNDYXNlID0gbV9qaXQuYnJhbmNoSWZDZWxs
KHJlc3VsdEdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBsZWZ0T0sgPSBtX2ppdC5icmFu
Y2hJZkludDMyKGFyZzFSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hJZk51bWJlcihhcmcxUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIGxlZnRPSy5saW5rKCZt
X2ppdCk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50
MzIoYXJnMlJlZ3MpOwotICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTnVt
YmVyKGFyZzJSZWdzLCBJbnZhbGlkR1BSUmVnKSk7Ci0gICAgcmlnaHRPSy5saW5rKCZtX2ppdCk7
Ci0KLSAgICBtX2ppdC5jb21wYXJlNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDog
SklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCksIHJlc3Vs
dEdQUik7Ci0KLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotCi0g
ICAgdHdvQ2VsbHNDYXNlLmxpbmsoJm1faml0KTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGFyZzFSZWdzLmdwcigpLCBhcmcy
UmVncy5ncHIoKSkpOworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBE
b3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBv
ZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJ
ZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1Zh
bHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3Zl
cmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEg
bnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAor
ICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIG1faml0Lm1vdmUoYXJnMUdQUiwgcmVzdWx0
R1BSKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0
LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BS
KTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0
cyksIHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0
R1BSLCByZXN1bHRHUFIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdo
Qml0cyA9IEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMgPDwgMTsKKyAgICBzbG93UGF0aENhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW02NChuZXh0TG93ZXN0T2ZIaWdoQml0cykpKTsKKworICAgIG1faml0LmNv
bXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21w
aWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSKTsKKworICAgIC8vIElmIHdlIHN1cHBvcnQgQmlnSW50
MzIgd2UgbXVzdCBnbyB0byBhIHNsb3cgcGF0aCBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBpcyBh
IGNlbGwgKGZvciBIZWFwQmlnSW50ID09PSBCaWdJbnQzMikKKyAgICAvLyBJZiB3ZSBkb24ndCBz
dXBwb3J0IEJpZ0ludDMyLCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYgYm90
aCBvcGVyYW5kcyBhcmUgY2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFuZCBT
dHJpbmcgPT09IFN0cmluZykKKyAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywg
d2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAvLyAxLiAobGVm
dCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGlzIHRoZSBzYW1lIGFzICgobGVmdCB8IHJpZ2h0
KSBpcyBDZWxsKQorICAgIC8vICAgICAgQm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAiCisg
ICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlz
IENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkg
aXMgQ2VsbCkKKyAgICAvLyAgICAgIElmIGJvdGggYXJlIEludDMyLCB0aGVuIHRoZSB0b3AgYml0
cyB3aWxsIGJlIHNldCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsCisgICAgLy8gICAgICBJZiBhdCBs
ZWFzdCBvbmUgaXMgbm90IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxsIGJlIDAuCisgICAg
Ly8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0
YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIG1faml0LmFuZDY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZWxz
ZQorICAgIG1faml0Lm9yNjQoYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0R1BSKTsKKyNlbmRpZgor
ICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsK
IAotICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCghaW52ZXJ0KSwgcmVz
dWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BSKTsKIAog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlz
LCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7
CiAKKyAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tNjQoaW52ZXJ0KSwgcmVzdWx0R1BSKTsKKwog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCkBAIC0xMDA0LDYgKzEwNTksOCBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRnZSwg
RGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoK
ICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0
YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEyMzUsNiArMTI5Miw4IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSBlZGdlKQogICAg
IGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6
CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0
LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAg
ICAgZGVmYXVsdDoKQEAgLTEzMTIsNiArMTM3MSw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdFN0b3Jh
Z2U6CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CiAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0QmlnSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0
SlNCaWdJbnQzMjoKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5v
ZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKQEAgLTEzMjAs
NiArMTM4MSwxMDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVh
bihFZGdlIGVkZ2UpCiAgICAgfQogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNU
eXBlQ2hlY2soZWRnZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVS
ZWdzKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIHZhbHVlUmVncy5ncHIoKSk7Cisg
ICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgKFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCh0
aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKS5ncHIoKTsKK30KKworR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQoreworICAg
IEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1
bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisKKyAgICBtX2ludGVycHJldGVyLmZpbHRl
cih2YWx1ZSwgU3BlY0JpZ0ludDMyKTsKKyAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CisgICAg
ICAgIGlmIChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKKyAgICAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
KTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVy
YXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1
YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAg
IGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7
CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFs
dWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNWYWx1ZSkpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNw
aWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgaW5mby5maWxsSlNWYWx1
ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+U3Bl
Y0JpZ0ludDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdEJp
Z0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAgICAgICAgICB1bmxvY2so
dGVtcEdQUik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0K
KworICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmln
SW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3By
cy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRh
Rm9ybWF0SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdl
LCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVt
YmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgICAg
ICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERh
dGFGb3JtYXRKU0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0
YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERh
dGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFG
b3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAgIGNhc2UgRGF0YUZv
cm1hdFN0cmljdEludDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgREZH
X0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3JydXB0IGRhdGEgZm9ybWF0
Iik7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKyNlbmRpZiAvLyBV
U0UoQklHSU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RTdHJpY3RF
cXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpCiB7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAgLTE1NTYsNiArMTcyMCw1
NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2Rl
KiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90VGFrZW4pOwogfQogCisj
aWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMyQ29t
cGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25k
aXRpb24pCit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIp
OworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0
aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRv
IHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAg
ICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJl
c3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUo
b3AyLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1w
LmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgcmVzdWx0Lmdwcigp
LCB0ZW1wLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAgIC8vIElmIHdlIGFkZCBh
IERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQub3IzMihU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNW
YWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xl
YW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJy
YW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29uZGl0aW9ucyB3b3VsZCBy
ZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVjdCByZXN1bHRzIG9uIG5l
Z2F0aXZlIG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCk7CisKKyAgICBC
YXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7
CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5v
dFRha2VuLmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJyYW5j
aCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNoIHRh
a2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2UgY2Fu
IGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAg
Y29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBCYXNp
Y0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAgICAg
bm90VGFrZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5n
cHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVx
UHRyKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtNDA4Nyw2ICs0MzAwLDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJc0Jp
Z0ludDogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZS5ncHIoKSk7CisKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQuYW5kNjQodmFs
dWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21w
aWxlcjo6RXF1YWwsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMy
VGFnKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udGludWF0
aW9uID0gbV9qaXQuanVtcCgpOworCisgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgICAg
IG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihIZWFwQmlnSW50VHlwZSksIHJlc3VsdC5ncHIoKSk7CisKKyAgICAgICAgY29u
dGludWF0aW9uLmxpbmsoJm1faml0KTsKKyAgICAgICAgYmxlc3NCb29sZWFuKHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cisj
ZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXgg
NzVmM2EwNmIwZmMuLjZhMjU0Y2U3YzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTEyNSw3ICsxMjUs
OCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFs
dWVCaXRBbmQ6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6IHsKLSAgICAgICAgICAgIGlmICht
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICAvLyBGSVhN
RTogd2Ugc2hvdWxkIG1heWJlIHN1cHBvcnQgdGhlIGNhc2Ugd2hlcmUgb25lIG9wZXJhbmQgaXMg
YWx3YXlzIEhlYXBCaWdJbnQgYW5kIHRoZSBvdGhlciBpcyBhbHdheXMgQmlnSW50MzI/CisgICAg
ICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEhlYXBCaWdJbnRVc2UpCiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRp
dml0eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM3NSw3ICszNzYsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZp
dHkoKTsKIAogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAppbmRleCA4ZWY3M2I2ZjJlOC4uYWI2MzFjOWNkYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NSw4ICsxNDUsMTQgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNl
IFN5bWJvbFVzZToKICAgICAgICAgb3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQmlnSW50VXNlOgotICAgICAgICBvdXQucHJpbnQoIkJpZ0ludCIpOworICAg
IGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkFueUJpZ0ludCIpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQo
IkhlYXBCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQmlnSW50MzJVc2U6Cisg
ICAgICAgIG91dC5wcmludCgiQmlnSW50MzIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
U3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBvdXQucHJpbnQoIlN0cmluZ09iamVjdCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAppbmRleCA5YzEzYzViY2QzNS4uZjRmN2Iz
M2JiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyAr
NjYsOSBAQCBlbnVtIFVzZUtpbmQgewogICAgIEtub3duU3RyaW5nVXNlLAogICAgIEtub3duUHJp
bWl0aXZlVXNlLCAvLyBUaGlzIGJpemFycmUgdHlwZSBhcmlzZXMgZm9yIG9wX3N0cmNhdCwgd2hp
Y2ggaGFzIGEgYnl0ZWNvZGUgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBvbmx5IHNlZSBwcmltaXRp
dmVzIChpLmUuIG5vdCBvYmplY3RzKS4KICAgICBTeW1ib2xVc2UsCi0gICAgQmlnSW50VXNlLAor
ICAgIEFueUJpZ0ludFVzZSwKKyAgICBIZWFwQmlnSW50VXNlLAorICAgIEJpZ0ludDMyVXNlLAog
ICAgIERhdGVPYmplY3RVc2UsCiAgICAgTWFwT2JqZWN0VXNlLAogICAgIFNldE9iamVjdFVzZSwK
QEAgLTE1Miw4ICsxNTQsMTIgQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3Io
VXNlS2luZCB1c2VLaW5kKQogICAgICAgICByZXR1cm4gU3BlY0hlYXBUb3AgJiB+U3BlY09iamVj
dDsKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAg
Y2FzZSBCaWdJbnRVc2U6CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAgICAgICAgIHJldHVybiBT
cGVjQmlnSW50OworICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNI
ZWFwQmlnSW50OworICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHJldHVybiBTcGVjQmln
SW50MzI7CiAgICAgY2FzZSBQcm9taXNlT2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1By
b21pc2VPYmplY3Q7CiAgICAgY2FzZSBEYXRlT2JqZWN0VXNlOgpAQCAtMjEyLDI0ICsyMTgsNiBA
QCBpbmxpbmUgYm9vbCBtYXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKICAgICByZXR1cm4g
IXNob3VsZE5vdEhhdmVUeXBlQ2hlY2soa2luZCk7CiB9CiAKLWlubGluZSBib29sIGlzTnVtZXJp
Y2FsKFVzZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEludDMy
VXNlOgotICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZToKLSAgICBj
YXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICBjYXNlIERvdWJs
ZVJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6Ci0gICAgY2FzZSBBbnlJbnRVc2U6
Ci0gICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIGlubGluZSBib29s
IGlzRG91YmxlKFVzZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTI2MSw3
ICsyNDksNyBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU3Ry
aW5nVXNlOgogICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgY2FzZSBTeW1ib2xVc2U6Ci0g
ICAgY2FzZSBCaWdJbnRVc2U6CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgY2Fz
ZSBEYXRlT2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IGUxZjU4OWYyNzM0Li5iMjVlNzlmODQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjYxLDYgKzI2MSw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
SXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJl
cjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNh
c2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTQ4NCw3ICs0ODUsOSBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAg
ICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdPclN0
cmluZ09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAg
ICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEFueUJpZ0ludFVz
ZToKKyAgICAgICAgICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICAgICAgICAgIGNh
c2UgSGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgICAgICBjYXNlIERhdGVPYmplY3RVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBNYXBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBT
ZXRPYmplY3RVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bW1vblZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVl
cy5jcHAKaW5kZXggNWI0OTI1Y2ZmYmMuLmMwZjRmMmIwNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCkBAIC01OCw2ICs1OCw5IEBAIHZvaWQg
Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIz
OjpCYXNpY0Jsb2NrKiBibG9jCiAgICAgaW50UHRyVGhyZWUgPSBibG9jay0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAzKTsKICAgICBpbnRQdHJFaWdodCA9IGJsb2Nr
LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDgpOwogICAgIGRvdWJs
ZVplcm8gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwLik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJpZ0ludDMyWmVybyA9IGJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSlNWYWx1ZTo6QmlnSW50MzJUYWcp
OworI2VuZGlmCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCmluZGV4IGMxZDZkNWE1NTFkLi4zMWEzOTMy
OTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCkBA
IC01Niw3ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGludFB0clRocmVlIHsgbnVsbHB0
ciB9OwogICAgIExWYWx1ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKICAgICBMVmFsdWUgZG91
YmxlWmVybyB7IG51bGxwdHIgfTsKLSAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVl
IGJpZ0ludDMyWmVybyB7IG51bGxwdHIgfTsKKyNlbmRpZgorCiAgICAgY29uc3QgdW5zaWduZWQg
cmFuZ2VLaW5kIHsgMCB9OwogICAgIGNvbnN0IHVuc2lnbmVkIHByb2ZLaW5kIHsgMCB9OwogICAg
IGNvbnN0IExWYWx1ZSBicmFuY2hXZWlnaHRzIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDE4ZGNiYTZlYTc1Li4wMTQ5
YjYyOTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzNTYsNiArMTM1Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNOdW1i
ZXI6CiAgICAgICAgICAgICBjb21waWxlSXNOdW1iZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgY29tcGlsZUlzQmlnSW50KCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAg
ICAgICBjb21waWxlTnVtYmVySXNJbnRlZ2VyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIx
MzksMTEgKzIxNDIsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVz
ZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0lu
dDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQg
PSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9
IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQg
PSBtX291dC5zcGVjdWxhdGVBZGQodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAg
ICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0
ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJ
bnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRCaWdJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkSGVhcEJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0y
MTYwLDExICsyMTgwLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRV
c2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxk
MigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50
MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJ
bnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0
ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQg
PSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0
ID0gbV9vdXQuc3BlY3VsYXRlU3ViKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAg
ICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxw
dHIsIG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94Qmln
SW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uU3ViQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
blN1YkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMjE4MSwxMSArMjIxOCwyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1
ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBMVmFsdWUg
dW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAgIENoZWNr
VmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZU11bCh1bmJveGVkTGVmdCwgdW5ib3hlZFJp
Z2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9W
YWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJl
c3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVk
UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBv
cGVyYXRpb25NdWxCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11
bEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMjI4OSw3ICsyMzQzLDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlQmlu
YXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNo
aW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIElDIHlldC4KKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUo
bm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBz
cGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CiAKQEAgLTI1NTgsMTEgKzI2MjYsMTIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZURpdigpCiAgICAgewogICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0lu
dDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRV
c2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkRpdkJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25EaXZIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI2MzcsMTggKzI3MDYsMjEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1vZCgpCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludCht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludCht
X25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBhIEJpZ0ludDMyIGZhc3Qg
cGF0aCBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5i
aW5hcnlVc2VLaW5kKCkpOwotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBt
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZh
bHVlTW9kLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC0yODEzLDE3ICsyODg1LDIxIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVQb3coKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogbWF5YmUgYWRkIGEgZmFzdCBwYXRoIGZvciBC
aWdJbnQzMiBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmln
SW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBM
VmFsdWUgZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBB
U1NFUlQobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBMVmFsdWUgZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVQb3csIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgIH0KQEAgLTMyMDQsOSArMzI4MCwyMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29tcGlsZVZhbHVlQml0Tm90KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25CaXROb3RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIG9w
ZXJhbmQpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5k
ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBC
aWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBhcm91
bmQuCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyVGFnID09IDB4
MTIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMk1hc2sgPT0g
MHhmZmZlMDAwMDAwMDAwMDEyKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tGb3JCaWdJbnQz
MkJpdHMgPSAweDAwMDBmZmZmZmZmZjAwMDA7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
bV9vdXQuYml0WG9yKG9wZXJhbmQsIG1fb3V0LmNvbnN0SW50NjQobWFza0ZvckJpZ0ludDMyQml0
cykpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzIyNCwxMSArMzMx
NCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0QW5kKCkKICAgICB7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
Ly8gTm8gbmVlZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVkIGJ5
IGJpdEFuZAorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdEFuZChsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kSGVh
cEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zMjQ0LDExICszMzQ2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVC
aXRPcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JCaWdJbnQs
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNpbmNlIHRoZSB0YWdnaW5nIGlz
IG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5iaXRPcihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRPckhl
YXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMzI2NCwxMSArMzM3OCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVl
Qml0WG9yKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JCaWdJ
bnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkp
IHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHRNaXNzaW5nVGFnID0gbV9vdXQuYml0WG9y
KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRPcihy
ZXN1bHRNaXNzaW5nVGFnLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7
CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyODQsMTEgKzM0MTAs
MjkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdCgpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyBz
b21ldGhpbmcgc21hcnRlciBoZXJlCisgICAgICAgICAgICAvLyBUaGluZ3MgYXJlIGEgYml0IHRy
aWNreSBiZWNhdXNlIGEgcmlnaHQtc2hpZnQgYnkgYSBuZWdhdGl2ZSBudW1iZXIgaXMgYSBsZWZ0
LXNoaWZ0IGZvciBCaWdJbnRzLgorICAgICAgICAgICAgLy8gU28gZXZlbiBhIHJpZ2h0IHNoaWZ0
IGNhbiBvdmVyZmxvdy4KKworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJh
dGlvblZhbHVlQml0UlNoaWZ0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFJTaGlm
dEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMzMwMCwyNCArMzQ0NCwyNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2V0
SW50MzIobV9vdXQuYVNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
LAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBt
X291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJ
IGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGlu
IHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlQXJpdGhCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9vdXQuc2hsKAog
ICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX291
dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEp
KSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
LCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0
aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBvZiBz
aGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdExTaGlmdCgp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmln
aHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBjb25z
aWRlciBhZGRpbmcgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUuCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzM0LDcgKzM0NzksNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxTaHIoCiAgICAgICAgICAgICBsb3dJ
bnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAg
ICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50
MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNl
ZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKCkKQEAgLTczNzIsNiArNzUx
Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCkp
IHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlciA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzIg
PSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0Nl
bGxQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQ
YXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC03MzgxLDEwICs3NTI5LDE0IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgIC8vIG5vdE51bWJlciBjYXNlLgogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdW1iZXIsIGNvbnRpbnVhdGlvbik7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwg
dW5zdXJlKG5vdEJpZ0ludDMyKSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJ
bnQzMik7CisjZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHBy
b3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsUGF0aCksIHVuc3VyZShz
bG93UGF0aCkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxQYXRoKTsKLSAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUt
PmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9u
b2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoKTsKICAg
ICAgICAgICAgIC8vIFdlIGhhdmUgc2V2ZXJhbCBhdHRlbXB0cyB0byByZW1vdmUgVG9OdW1lcmlj
LiBCdXQgVG9OdW1lcmljIHN0aWxsIGV4aXN0cy4KQEAgLTg0NDMsNyArODU5NSwxMCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkK
ICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKICAgICAg
ICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKQotICAgICAg
ICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgeworICAgICAgICAg
ICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAgICAgfHwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAgICAgICAgICB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgY29tcGlsZUNv
bXBhcmVTdHJpY3RFcSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04NDg2
LDcgKzg2NDEsOTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbChsb3dJ
bnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgewor
ICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkp
OworCisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHNpbmNlIHRoZSB0YWcgYml0cyBh
cmUgdGhlIHNhbWUgb24gYm90aCBzaWRlcworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1f
b3V0LmVxdWFsKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IGNhbm5vdCBzdGFydCB3aXRoIGlmIChsZWZ0ID09IHJpZ2h0KSwgYmVjYXVzZSB3ZSBtdXN0IGlu
c2VydCB0aGUgcmlnaHQgY2hlY2tzIChzZWUgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIGFib3Zl
KQorICAgICAgICAgICAgLy8gVGhlIGNvZGUgdGhhdCB3ZSBnZW5lcmF0ZSBsb29rcyBsaWtlIHRo
ZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgIGlm
IChpc0JpZ0ludDMyKGxlZnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIocmln
aHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodDsKKyAgICAgICAg
ICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihyaWdodCwgdW5ib3hlZChsZWZ0KSk7Cisg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChsZWZ0KSkKKyAg
ICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIobGVmdCwgdW5ib3hlZChyaWdodCkp
OworICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAgICAgICAg
IHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHMobGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAg
ICovCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBib3RoQXJlQmlnSW50MzIgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgb25seUxlZnRJc0JpZ0ludDMyID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc05vdEJpZ0lu
dDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRFcXVh
bHNSaWdodCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0
SXNIZWFwQmlnSW50ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IHJpZ2h0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNC
bG9jayByaWdodElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIobGVmdCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MSgpKSksIHVuc3VyZShsZWZ0SXNCaWdJbnQzMiksIHVuc3VyZShsZWZ0SXNOb3RCaWdJbnQzMikp
OworCisgICAgICAgICAgICAvLyBGSVhNRTogc2V0IHRoZSBvcmRlciBvZiB0aGUgYmxvY2tzIHRv
IG1heGltaXplIGZhbGx0aHJvdWdoCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNC
aWdJbnQzMik7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdodCwgcHJv
dmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShib3RoQXJlQmlnSW50MzIpLCB1bnN1
cmUob25seUxlZnRJc0JpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJv
dGhBcmVCaWdJbnQzMik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoQXJl
QmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpKTsKKyAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8ob25seUxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJ
bnRVbmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFs
dWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgcmVzdWx0TGVmdElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVs
bCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50
MzIsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHJpZ2h0LCB1bmJveGVkTGVmdCkpKTsKKyAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJp
Z0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0LCByaWdodCksIHVuc3VyZShsZWZ0RXF1YWxzUmln
aHQpLCB1bnN1cmUobGVmdElzSGVhcEJpZ0ludCkpOworCisgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhsZWZ0RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0
TGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obGVmdElzSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJ
bnQzMihyaWdodCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShyaWdodElz
QmlnSW50MzIpLCB1bnN1cmUocmlnaHRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHJpZ2h0SXNCaWdJbnQzMik7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hl
ZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayByZXN1bHRSaWdodElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHVuYm94ZWRSaWdodCkpKTsKKyAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8ocmlnaHRJc05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnRV
bmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBGSVhN
RTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3Qg
ZXF1YWxzIGZvciBiaWcgaW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVz
dWx0Qm90aEhlYXBCaWdJbnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsKKyAgICAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCByZXN1bHRCb3RoQXJlQmlnSW50MzIs
IHJlc3VsdExlZnRJc0JpZ0ludDMyLCByZXN1bHRMZWZ0RXF1YWxzUmlnaHQsIHJlc3VsdFJpZ2h0
SXNCaWdJbnQzMiwgcmVzdWx0Qm90aEhlYXBCaWdJbnQpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1MktpbmQg
a2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2Rl
LT5jaGlsZDEoKSwga2luZCk7CkBAIC04NTY5LDExICs4ODExLDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogW0VT
TmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxz
IGZvciBCaWdJbnRVc2UKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVh
dGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cwogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg5
NQotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOwogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVhbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTg2NTksNiArODkwMSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2UgY2FuIGRv
IHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIgaGVyZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2ZUpJVCBh
cHByb2FjaCBpbiBlLmcuIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3Ry
aWN0RXEKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkpOwogICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBhcmUoCiAg
ICAgICAgICAgICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKQEAgLTEwNjIyLDcg
KzEwODY1LDM2IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgdHJ1ZVJl
c3VsdCwgZmFsc2VSZXN1bHQsIHBhdGNocG9pbnRSZXN1bHQpKTsKICAgICB9Ci0gICAgCisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAg
ICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQu
YnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3Vy
ZShpc0NlbGxDYXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90Q2VsbENhc2UsIGlzQ2VsbENhc2Up
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGlz
QmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2Vs
bENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQg
PSBtX291dC5hbmNob3IoaXNDZWxsV2l0aFR5cGUodmFsdWUsIG1fbm9kZS0+cXVlcmllZFR5cGUo
KSwgbV9ub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCksIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDEoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRCb29s
ZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2VsbFJlc3VsdCwgY2VsbFJlc3VsdCkpOworICAgIH0K
KyNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBB
TFdBWVNfSU5MSU5FIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAgIC8vIElm
IHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIEJpZ0ludDMyLCB3ZSBzaG91bGQganVzdCBlbWl0IElz
Q2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQpIGluc3RlYWQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorI2VuZGlmCiAgICAgdm9pZCBjb21waWxlSXNDZWxsV2l0
aFR5cGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpIHsKQEAgLTE0MzQ2LDkgKzE0NjE4LDExIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbWl0QmluYXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbikK
ICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUg
cmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVjdWxhdGUo
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+
Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25pcHBldE9w
ZXJhbmQgbGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5yZXN1bHRU
eXBlKCkpOwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQ0MTQsOCArMTQ2ODgsMTEg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAg
IAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
QVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1
ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBTbmlwcGV0T3Bl
cmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5
cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNTAyNyw3ICsxNTMwNCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMgdGhlIGZv
bGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYgKHZhbHVl
IGlzIGNlbGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZh
bHVlIGlzIEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9y
IHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEh
dmFsdWUtPmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAgICAgLy8g
ICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC0x
NTAzNyw2ICsxNTMxNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0g
ISF1bmJveEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBu
dW1iZXIpIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVl
KQorICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgICAg
ICAgICAgLy8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAgICAgICAg
IC8vIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVl
CiAgICAgICAgICAgICAvLyB9CkBAIC0xNTA0NCwxMyArMTUzMjMsMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAg
ICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQzMkNhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50MzJDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJsZUNhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91YmxlQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJh
c2ljQmxvY2sgYmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4gcmVzdWx0czsK
QEAgLTE1MDY0LDIwICsxNTM0NywyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVu
VHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAgICAgICB1
bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2UpKTsKKyAgICAg
ICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAoU3BlY0Nl
bGwgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBCaWdJbnRDYXNl
KSwgdW5zdXJlKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFrUG9pbnRlcihq
c0VtcHR5U3RyaW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRDYXNlLCBu
b3RTdHJpbmdPckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGVhcEJp
Z0ludENhc2UsIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAgIExWYWx1
ZSBub25aZXJvQmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0aCkpOwogICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJbnQpKTsKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7
CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmlnSW50Q2FzZSwg
bm90Q2VsbENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0OwogICAgICAg
ICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkp
CiAgICAgICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFuVHJ1ZTsKQEAg
LTE1MTIwLDggKzE1NDAzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5ib3hEb3Vi
bGUodmFsdWUpLCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChtX291dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBtX291
dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShl
ZGdlKSAmIH5TcGVjQ2VsbCksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMyQ2FzZSks
IHVuc3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
YmlnSW50MzJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZhbHVlIGJpZ0lu
dDMyTm90WmVybyA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNo
b3IoYmlnSW50MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMy
Q2FzZSwgY29udGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhu
b3REb3VibGVDYXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAgICBMVmFsdWUg
bWlzY0lzVHJ1dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUsIG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAgLTE1NzI2
LDEzICsxNjAyMywxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJu
IHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAg
Ly8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJl
dHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAg
cmV0dXJuIHN5bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVsc2UgaWYgKGlz
IG51bWJlcikgewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAgICAvLyB9IGVs
c2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50CiAgICAg
ICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVj
dAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NzYwLDYgKzE2MDU5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51
bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYm9vbGVhbkNh
c2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRlZmluZWRDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1ODEyLDcgKzE2MTE0LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsKICAgICAg
ICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUo
Y2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAg
ICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBT
cGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJpZ0ludENhc2Up
LCB1bnN1cmUoc3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENh
c2UsIHN5bWJvbENhc2UpOwpAQCAtMTU4MjgsOCArMTYxMzAsMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJlckNhc2UpOwog
ICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAorCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBub3RCaWdJ
bnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVu
VHlwZShjaGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RC
aWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQzMkNhc2Us
IG5vdE51bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNh
c2UsIG5vdE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwogICAgICAg
ICBpZiAocHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBpc051bGwg
PSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwp
KTsKQEAgLTE2NTI3LDE1ICsxNjgzNiwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgTFZh
bHVlIGxvd0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfVU5V
U0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2lu
ZCgpID09IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSk7CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7Ci0gICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAg
IAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihFZGdlIGVkZ2Us
IE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlv
bikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOworCisgICAg
ICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9k
ZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZShyZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIocmVzdWx0
KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVybWluYXRl
KFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVybzsKKyAgICB9
CisjZW5kaWYKKwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAg
IHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY3MjEsNyArMTcw
NDgsNzIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQu
emVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAgIAorCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVl
IHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAgICAgICAg
IHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAgICAgICAg
IG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMy
TWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRh
ZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNWYWx1ZSwgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1
ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQorICAgICAgICAg
ICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAorICAgICAg
ICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6Qmln
SW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxTaHIoanNW
YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVlIGJveEJpZ0lu
dDMyKExWYWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpdE9y
KAorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1ZSwgQjM6Oklu
dDY0KSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RBbnlCaWdJ
bnQoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAg
ICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3Bl
Y0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIC8vIGlmIChp
c0JpZ0ludDMyKQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAvLyBpZiAoIWlz
Q2VsbCkKKyAgICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0dXJuICFpc0hl
YXBCaWdJbnQKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
KworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBlKSwgdW5zdXJl
KGlzQmlnSW50MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBy
ZXR1cm5GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RC
aWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUp
LCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
dHVyblRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2Fz
ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0ludCA9IG1fb3V0
LmFuY2hvcihpc05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRydWUsIHJl
dHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwog
ICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQ
cm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTcwMzMsOCAr
MTc0MjUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAg
ICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICBzcGVj
dWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFu
eUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAgY2FzZSBIZWFw
QmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAgICAgICAg
IHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MjIwLDE4ICsxNzYyMCwzOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0cnVjdHVy
ZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUgY2VsbCwg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05vdEhlYXBC
aWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAgIGlmIChMVmFs
dWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0VG9GYWxzZSA9
IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2go
aXNDZWxsKHZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29udGludWF0
aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayByZXR1cm5G
b3JDZWxsID0gbV9vdXQuYW5jaG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGko
SW50MzIsIGRlZmF1bHRUb0ZhbHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZh
bHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0hlYXBCaWdJ
bnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5v
dEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5iaWdJbnRTdHJ1
Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZhbHVlIGNlbGws
IFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNIZWFwQmln
SW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAg
ewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWND
ZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZh
bHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJu
IHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQu
bG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3Njg5LDE2ICsx
ODEwOSwzNSBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwgbG93Q2Vs
bChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBM
VmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBMVmFs
dWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxs
KSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7CisgICAgfQor
ICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBG
VExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90
QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBsb3dDZWxs
KGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCisg
ICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVkZ2UgZWRnZSkK
ICAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAg
ICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdl
LCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKHZhbHVl
KSk7CiAgICAgfQogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50
MzIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShl
ZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhq
c1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIodmFs
dWUpKTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVkZ2UpCisg
ICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1
ZSksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7CisgICAgfQorI2Vu
ZGlmCisKICAgICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBMVmFsdWUg
Y2VsbCkKICAgICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwg
ZWRnZSwgU3BlY09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDIxNzE1ZDNkZDIyLi45
YmJhNzQzOWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHVi
KFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9m
aWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRS
ZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAg
ICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwg
SlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgfQogCiAg
ICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXplIGFuIG9iamVj
dCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAKaW5kZXggYWIzZTljNjI5YWQuLjI1ODllMmNmYzU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAt
NDIyLDcgKzQyMiw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9u
PGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAgICAgdm9pZCog
d3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gMDsKLSAg
ICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNCaWdJbnQo
KSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5p
c0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2Rl
LmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCAhc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGViYjQ0Li5mMjdl
ZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJ
bmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVy
LmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
UHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0NjlmZTY5MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJc29DZWxsU2V0
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4MTMzMmQy
MTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMTg3LDgg
KzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAvLyBCaWdJbnQg
cHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICByZXN1bHRTdHJp
bmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwgMTApOworICAg
IGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJpbmcgPSBKU0Jp
Z0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzRkOWM3MjdlMDcuLmFkNGIyMTVjNTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAg
LTIwNSw3ICsyMDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAgIGNhc2UgQmln
SW50VHlwZToKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRl
ckVycm9yKGdsb2JhbE9iamVjdCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAK
aW5kZXggZWI4MDgyZTliN2IuLjQ4ZWFhNDAzZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRy
b2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlm
ICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAg
IHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAgICAg
ICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2
ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVh
bihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICByZXN1bHQgPSAh
IXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsK
ICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2Ug
aWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJ
bnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9
PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAg
YXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAg
YXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAg
YXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigp
KTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAg
ICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJ
bnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6
ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9h
ZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAg
IGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAg
bG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWws
IHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAo
KSk7CkBAIC03NTIsNiArNzU0LDE1IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVy
dFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgZG9u
ZS5hcHBlbmQoanVtcCgpKTsKIAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBhdXRvIGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25v
d25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwg
cmVzdWx0KTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBj
b21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIo
MCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50
MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBjb21wYXJlNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vsc2UKQEAgLTc2
Nyw3ICs3NzgsNyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6
YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVu
dHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1
ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMg
QmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBC
aWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAg
ICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMt
YXMtdW5kZWZpbmVkCkBAIC03NzcsNiArNzg4LDggQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlz
dCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwK
ICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBp
ZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUo
dmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAg
ICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAv
LyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5OSw3
IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZh
bHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJ
Zk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1
ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1
ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmln
SW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyArODMwLDcgQEAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUo
Vk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZl
cnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIo
anNFbXB0eVN0cmluZyh2bSkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlz
QmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1
dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3Mo
dmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBk
b25lLmFwcGVuZChqdW1wKCkpOwogCkBAIC04NDIsNiArODU1LDE1IEBAIEFzc2VtYmx5SGVscGVy
czo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsCiAgICAgfQogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwg
c2NyYXRjaCk7CisgICAgdXJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAg
IHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3Jh
dGNoKSk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGlu
ayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICB0cnV0aHkuYXBwZW5kKGJyYW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVl
LmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5k
ZXggM2Q3ZWY3Yzc3MjcuLjUxMDE0OTU4Mjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MjksNyArOTI5LDM3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNl
bmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKdW1wIGJyYW5jaElm
QmlnSW50MzIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9k
ZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5j
aElmTnVtYmVyKGdwciwgbW9kZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJp
Z0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmso
dGhpcyk7CisgICAgICAgIHJldHVybiBiaWdJbnQzMjsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aElmQmlnSW50MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAg
ICB7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBt
b3ZlKGdwciwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpC
aWdJbnQzMlRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRl
bXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBK
dW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcihKU1ZhbHVlUmVncyByZWdzLCBH
UFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgfQorICAgIEp1bXAgYnJh
bmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BS
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RF
cXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAg
fQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgIC8vIEZJWE1FOiByZW5hbWUgdGhlc2Ug
dG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1dCB0byBiZSBhIGNl
bGwuCiAgICAgSnVtcCBicmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKICAgICB7CiAgICAg
ICAgIHJldHVybiBicmFuY2g4KApAQCAtOTUxLDEzICs5ODEsMTQgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAgICAgfQotICAg
IAorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhl
eSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmU3Ry
aW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5n
VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KICAgICBKdW1wIGJy
YW5jaElmU3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQ
UiwgU3ltYm9sVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KLSAg
ICBKdW1wIGJyYW5jaElmQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5
cGUoY2VsbEdQUiwgQmlnSW50VHlwZSk7IH0KLSAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50KEdQ
UlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgQmlnSW50VHlw
ZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmSGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEhlYXBCaWdJbnRUeXBlKTsgfQorICAgIEp1bXAgYnJh
bmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5
cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZkZ1bmN0aW9u
KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNGdW5jdGlv
blR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7
IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9CiAgICAg
CkBAIC0xMzU2LDYgKzEzODcsMTkgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZG9uZS5s
aW5rKHRoaXMpOwogICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIHZvaWQgdW5ib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAg
ICAgdXJzaGlmdDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAg
fQorCisgICAgdm9pZCBib3hCaWdJbnQzMihHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgbHNo
aWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICAgICAgb3I2
NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBncHIpOworICAgIH0KICNlbmRp
ZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTE3MTUsNyArMTc1OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIHN0cmlu
ZykgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzdHJpbmcKLSAgICAgICAgLy8gICAgIH0g
ZWxzZSBpZiAoaXMgYmlnaW50KSB7CisgICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGhlYXBi
aWdpbnQpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gYmlnaW50CiAgICAgICAgIC8vICAg
ICB9IGVsc2UgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBzeW1ib2wKQEAgLTE3MjYsNiAr
MTc3MCw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gICAgIHJldHVybiBvYmplY3QKICAgICAgICAg
Ly8gfSBlbHNlIGlmIChpcyBib29sZWFuKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gYm9vbGVh
bgorICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICBy
ZXR1cm4gYmlnaW50CiAgICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICByZXR1cm4g
dW5kZWZpbmVkCiAgICAgICAgIC8vIH0KQEAgLTE3NTcsMTAgKzE4MDMsMTAgQEAgcHVibGljOgog
CiAgICAgICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogCi0gICAgICAgIEp1bXAgbm90QmlnSW50
ID0gYnJhbmNoSWZOb3RCaWdJbnQoY2VsbEdQUik7CisgICAgICAgIEp1bXAgbm90SGVhcEJpZ0lu
dCA9IGJyYW5jaElmTm90SGVhcEJpZ0ludChjZWxsR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBl
b2ZUeXBlOjpCaWdJbnQsIGZhbHNlKTsKIAotICAgICAgICBub3RCaWdJbnQubGluayh0aGlzKTsK
KyAgICAgICAgbm90SGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgICAgICBmdW5jdG9yKFR5cGVv
ZlR5cGU6OlN5bWJvbCwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgbm90Q2VsbC5saW5rKHRo
aXMpOwpAQCAtMTc3Niw2ICsxODIyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgSnVtcCBub3RCb29s
ZWFuID0gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MsIHRlbXBHUFIpOwogICAgICAgICBmdW5jdG9y
KFR5cGVvZlR5cGU6OkJvb2xlYW4sIGZhbHNlKTsKICAgICAgICAgbm90Qm9vbGVhbi5saW5rKHRo
aXMpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBKdW1wIG5vdEJpZ0ludDMyID0gYnJh
bmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBHUFIpOworICAgICAgICBm
dW5jdG9yKFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOworICAgICAgICBub3RCaWdJbnQzMi5s
aW5rKHRoaXMpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6
OlVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IGM2ZTYxYjg5YmY5Li5kNWVhOTlmMzNlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMzcwLDYgKzM3MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsKQogICAgICAgICBERUZJTkVf
T1Aob3BfaXNfYm9vbGVhbikKICAgICAgICAgREVGSU5FX09QKG9wX2lzX251bWJlcikKKyAgICAg
ICAgREVGSU5FX09QKG9wX2lzX2JpZ19pbnQpCiAgICAgICAgIERFRklORV9PUChvcF9pc19vYmpl
Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9pc19jZWxsX3dpdGhfdHlwZSkKICAgICAgICAgREVG
SU5FX09QKG9wX2plcV9udWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzA3MzU1YzZk
NzEuLmQwNDNmY2ViMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUyOCw2ICs1Mjgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX3VuZGVmaW5lZF9v
cl9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19ib29s
ZWFuKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19udW1iZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX29iamVjdChjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2plcV9udWxsKGNvbnN0IElu
c3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAppbmRleCA3Nzg2NzNlMThhYy4uNjdiMDBiMGEwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDc2LDYgKzQ3Niw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5h
czxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAg
SklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmls
ZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5l
Z2F0ZUlDKTsKKyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ug
b3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAog
ICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3VycmVudEluc3RydWN0aW9u
LCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiB9
CiAKQEAgLTQ4NCw2ICs0ODUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBKSVROZWdJQyogbmVnSUMgPSBiaXR3aXNlX2Nhc3Q8
SklUTmVnSUMqPihtX2luc3RydWN0aW9uVG9NYXRoSUMuZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbikp
OworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRp
b25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAgZW1p
dE1hdGhJQ1Nsb3c8T3BOZWdhdGU+KG5lZ0lDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlv
bkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGZjOTRjYTM3MjQ5Li5jZWI2MDBlN2YxYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dh
QHBhcm9nYS5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yODMsNiArMjgzLDM3IEBAIHZvaWQg
SklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIAorI2lmIFVTRShCSUdJ
TlQzMikKK3ZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcElzQmlnSW50PigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQ7
CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgSnVtcCBp
c0NlbGwgPSBicmFuY2hJZkNlbGwocmVnVDApOworCisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrKSwgcmVnVDEpOworICAgIGFuZDY0KHJlZ1QxLCByZWdUMCk7Cisg
ICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMy
VGFnKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAg
fSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworCisgICAgaXNDZWxsLmxpbmsodGhpcyk7Cisg
ICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZWdUMCk7CisgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKKworICAgIGRvbmUubGluayh0aGlz
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisjZWxzZSAvLyBpZiAhVVNF
KEJJR0lOVDMyKQorTk9fUkVUVVJOIHZvaWQgSklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3Qg
SW5zdHJ1Y3Rpb24qKQoreworICAgIC8vIElmIHdlIG9ubHkgaGF2ZSBIZWFwQmlnSW50cywgdGhl
biB3ZSBlbWl0IGlzQ2VsbFdpdGhUeXBlIGluc3RlYWQgb2YgaXNCaWdJbnQuCisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKyNlbmRpZgorCiB2b2lkIEpJVDo6ZW1pdF9vcF9p
c19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0
aFR5cGU+KCk7CkBAIC01NzAsMTIgKzYwMSw1MyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0
RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaQog
ICAgIFZpcnR1YWxSZWdpc3RlciBzcmMyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwotICAgIAorCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5
cGUnIHRvIGJlIFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMg
RG91YmxlKQorICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIHJlc3VsdCA9IChsZWZ0ID09IHJp
Z2h0KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKGxlZnQg
aXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGRv
bmU6CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBp
bXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2lu
Z2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJl
ZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJp
Y2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRv
IGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAg
ICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRz
IG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3Ig
ZXF1YWwgMTw8NTAuCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJl
Z1QzKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwg
cmVnVDUpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1Qz
KTsKKyAgICBsc2hpZnQ2NChUcnVzdGVkSW1tMzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1Qy
LCByZWdUMyk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywg
cmVnVDUpKTsKKworICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUNSk7Cisg
ICAgSnVtcCBkb25lID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1Q1KTsKKworICAgIG1vdmUo
cmVnVDAsIHJlZ1QyKTsKKyAgICAvLyBKdW1wIHNsb3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2Vs
bCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1Qy
KTsKKyAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gc29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5s
ZXNzIHRoZXJlIGlzIGEgQmlnSW50MzIsIHdlIG9ubHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRo
IGlmIGJvdGggYXJlIHN0cmluZ3MKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIp
KTsKKworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6Ok5TdHJpY3RFcSkKKyAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTY0KDEpLCByZWdU
NSk7CisgICAgYm94Qm9vbGVhbihyZWdUNSwgSlNWYWx1ZVJlZ3MgeyByZWdUNSB9KTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDUpOworI2Vsc2UgLy8gaWYgIVVTRShCSUdJ
TlQzMikKICAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmlu
Z3MpLgogICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7Ci0gICAgCisKICAgICAvLyBKdW1w
IHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91YmxlLiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdl
ciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4gdGVzdAogICAgIC8vIGlmIGl0J3MgYSBkb3VibGUu
CiAgICAgSnVtcCBsZWZ0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QwKTsKQEAgLTU5Miw2ICs2NjQs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzIHsgcmVnVDAgfSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTYxNCw2ICs2ODcsNDUgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBD
b21waWxlT3AKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMy
LCByZWdUMSk7CiAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgLyogQXQgYSBoaWdoIGxldmVsIHdl
IGRvIChhc3N1bWluZyAndHlwZScgdG8gYmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlzIERv
dWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBpZiAo
bGVmdCA9PSByaWdodCkKKyAgICAgICBnb3RvIHRha2VuOworICAgIGlmIChsZWZ0IGlzIENlbGwg
fHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGdvdG8gbm90VGFr
ZW47CisgICAgKi8KKworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBE
b3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBv
ZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJ
ZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1Zh
bHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3Zl
cmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEg
bnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAor
ICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIG1v
dmUocmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAgbW92ZShUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAgICBhZGQ2NChy
ZWdUNSwgcmVnVDIpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDEpLCByZWdUNSk7CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisKKyAgICBKdW1w
IGFyZUVxdWFsID0gYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCByZWdUMSk7CisgICAgaWYgKHR5cGUg
PT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKKyAgICAgICAgYWRkSnVtcChhcmVF
cXVhbCwgdGFyZ2V0KTsKKworICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICAvLyBKdW1wIHNs
b3cgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCAodG8gY292ZXIgc3RyaW5ncyBhbmQgQmlnSW50
cykuCisgICAgYW5kNjQocmVnVDEsIHJlZ1QyKTsKKyAgICAvLyBGSVhNRTogd2UgY291bGQgZG8g
c29tZXRoaW5nIG1vcmUgcHJlY2lzZTogdW5sZXNzIHRoZXJlIGlzIGEgQmlnSW50MzIsIHdlIG9u
bHkgbmVlZCB0byBkbyB0aGUgc2xvdyBwYXRoIGlmIGJvdGggYXJlIHN0cmluZ3MKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKKworICAgIGlmICh0eXBlID09IENvbXBpbGVP
cFN0cmljdEVxVHlwZTo6TlN0cmljdEVxKSB7CisgICAgICAgIGFkZEp1bXAoanVtcCgpLCB0YXJn
ZXQpOworICAgICAgICBhcmVFcXVhbC5saW5rKHRoaXMpOworICAgIH0KKyNlbHNlIC8vIGlmICFV
U0UoQklHSU5UMzIpCiAgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3Zl
ciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CiAgICAgb3I2NChyZWdUMSwgcmVn
VDIpOwpAQCAtNjI3LDExICs3MzksMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVt
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3AKICAgICBK
dW1wIHJpZ2h0T0sgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKICAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk51bWJlcihyZWdUMSkpOwogICAgIHJpZ2h0T0subGluayh0aGlzKTsKLQogICAgIGlmICh0
eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEpCiAgICAgICAgIGFkZEp1bXAo
YnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdldCk7CiAgICAgZWxzZQogICAgICAg
ICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMSwgcmVnVDApLCB0YXJnZXQpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpAQCAtNjg2LDcgKzc5OCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY1ZSZWcsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RD
ZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5v
dEJpZ0ludChyZWdUMCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChy
ZWdUMCkpOwogICAgIEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGlu
ayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAppbmRleCAxYzMwNzc2OWRhYS4uNDg0MDMwMGIyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTI4OCw2ICsyODgsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKIH0KIAorTk9fUkVUVVJOIHZvaWQg
SklUOjplbWl0X29wX2lzX2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIC8vIFdl
IGVtaXQgaXNfY2VsbF93aXRoX3R5cGUgaW5zdGVhZCwgc2luY2UgQmlnSW50MzIgaXMgbm90IHN1
cHBvcnRlZCBvbiAzMi1iaXQgcGxhdGZvcm1zLgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKQEAgLTg2Niw3ICs4NzIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAg
SnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlz
Tm90Q2VsbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggMTVkMDY3MDQ3ZGQuLjQ5MzkyMmYxMDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzMTUsNiArMTMxNSwxOSBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jbwogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChn
bG9iYWxPYmplY3QsIHNyYzEsIHNyYzIpOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQorc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxs
SW50KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQVNTRVJU
KGhlYXBCaWdJbnQtPmlzSGVhcEJpZ0ludCgpKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U0JpZ0ludCo+KGhlYXBCaWdJbnQpLT5lcXVhbHNUb0ludDMyKHNtYWxsSW50KTsKK30KKyNlbmRp
ZgorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFBy
b2ZpbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSogcHJvZmlsZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODM4LDYgKzI4NTEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpT
R2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQogCisvLyBGSVhNRTogaXQgd291
bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRo
ZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC0yODUwLDggKzI4NjQsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpT
VmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZl
ck51bWJlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAg
ICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHBy
aW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlm
CisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0lu
dCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CkBAIC0yODU5LDYgKzI4ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKIH0KIAorLy8g
RklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVn
YXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgVW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4
NzMsMTAgKzI4OTYsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKU1ZhbHVlIHBy
aW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0g
cHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01J
TikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAg
ICAgfQorICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUp
OworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFs
dWUuYXNIZWFwQmlnSW50KCkpOwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQo
cmVzdWx0KTsKLQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAg
fQogCkBAIC0yODg3LDYgKzI5MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJl
IGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3Bl
cmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjkwNyw5ICsyOTQxLDIwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVy
YW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2
bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1
ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFs
dWUpOworICAgICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAg
ICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9
CisjZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVh
cEJpZ0ludCgpKTsKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CkBAIC0yOTIx
LDYgKzI5NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBj
YWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUg
YSBCaWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTI5NDAsOSArMjk4NiwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bAogCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUp
KSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgLy8gRklYTUU6IHdoeSBkb2VzIHRoaXMgZnVu
Y3Rpb24gcHJvZmlsZSB0aGUgYXJndW1lbnQgYnV0IG5vdCB0aGUgcmVzdWx0PworICAgIGlmIChw
cmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFs
dWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIC12YWx1ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXMo
dm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHBy
aW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCA4ZWZiNWI1YWM5OC4uNDNiOWEwYTg2OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yMDYsNiArMjA2LDcgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWQKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogI2lmIFVTRShKU1ZBTFVFNjQpCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
bGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50MzIoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGhlYXBCaWdJbnQsIGludDMyX3Qgc21hbGxJbnQpIFdURl9JTlRFUk5BTDsKICNlbHNlCiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCmluZGV4IDUyNDM1YTY2MTIwLi4yYTJiYjk5Zjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMTM2LDYgKzEz
NiwxMiBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9KU1ZBTFVFNjQgMAogI2VuZGlmCiAKKyNpZiBV
U0UoQklHSU5UMzIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0JJR0lOVDMyIDAKKyNlbmRpZgorCiAjaWYgQ1BVKEFERFJFU1M2NCkK
ICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVTUzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTEzNjQz
OTAyYjYuLmNkMWMwMmE3ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xOTYsNiArMTk2LDExIEBAIGlmIEpTVkFM
VUU2NAogICAgIGNvbnN0IFZhbHVlTnVsbCAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1
ZU51bGwKICAgICBjb25zdCBUYWdOdW1iZXIgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TnVt
YmVyVGFnCiAgICAgY29uc3QgTm90Q2VsbE1hc2sgICAgID0gY29uc3RleHByIEpTVmFsdWU6Ok5v
dENlbGxNYXNrCisgICAgaWYgQklHSU5UMzIKKyAgICAgICAgY29uc3QgVGFnQmlnSW50MzIgPSBj
b25zdGV4cHIgSlNWYWx1ZTo6QmlnSW50MzJUYWcKKyAgICAgICAgY29uc3QgTWFza0JpZ0ludDMy
ID0gY29uc3RleHByIEpTVmFsdWU6OkJpZ0ludDMyTWFzaworICAgIGVuZAorICAgIGNvbnN0IExv
d2VzdE9mSGlnaEJpdHMgPSBjb25zdGV4cHIgSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cwogZWxz
ZQogICAgIGNvbnN0IEludDMyVGFnID0gY29uc3RleHByIEpTVmFsdWU6OkludDMyVGFnCiAgICAg
Y29uc3QgQm9vbGVhblRhZyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCb29sZWFuVGFnCkBAIC01MjEs
NiArNTI2LDcgQEAgY29uc3QgSlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlvblR5
cGUKIGNvbnN0IEFycmF5VHlwZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2ZWRB
cnJheVR5cGUgPSBjb25zdGV4cHIgRGVyaXZlZEFycmF5VHlwZQogY29uc3QgUHJveHlPYmplY3RU
eXBlID0gY29uc3RleHByIFByb3h5T2JqZWN0VHlwZQorY29uc3QgSGVhcEJpZ0ludFR5cGUgPSBj
b25zdGV4cHIgSGVhcEJpZ0ludFR5cGUKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0
byBiZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFs
bHkgd3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92
YWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDYyNjUyYTY2MjM1Li4xNGViNWZmYWFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTEzMDMsNiArMTMwMywxMiBAQCBsbGludE9wV2l0aFJldHVybihvcF9p
c19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4p
CiBlbmQpCiAKIAorIyBPbiAzMi1iaXQgcGxhdGZvcm1zIEJJR0lOVDMyIGlzIG5vdCBzdXBwb3J0
ZWQsIHNvIHdlIGdlbmVyYXRlIG9wX2lzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQgb2Ygb3BfaXNf
YmlnX2ludAorbGxpbnRPcChvcF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyh1bnVzZWQs
IHVudXNlZCwgdW51c2VkKQorICAgIG5vdFN1cHBvcnRlZCgpCitlbmQpCisKKwogbGxpbnRPcFdp
dGhSZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDAsIHQzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAz
NDE2ODBhYmVlOC4uM2YwYjhhNjZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xLDQgKzEsNCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQ0LDI0ICs4NDQsNDggQEAgbGxpbnRP
cFdpdGhSZXR1cm4ob3BfaXNfdW5kZWZpbmVkX29yX251bGwsIE9wSXNVbmRlZmluZWRPck51bGws
IG1hY3JvIChzaXplLCBnZXQKIGVuZCkKIAogCi1tYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgZXF1YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcU9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgY3JlYXRlQm9vbGVhbikKICAgICBsbGludE9wV2l0aFJldHVy
bihvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIHJldHVybikKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKICAgICAgICAgZ2V0KG1fbGhzLCB0
MikKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDEpCiAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQorCisgICAgICAgICMgQXQgYSBo
aWdoIGxldmVsIHdlIGRvCisgICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlz
IERvdWJsZSkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyByZXN1bHQg
PSAobGVmdCA9PSByaWdodCk7CisgICAgICAgICMgaWYgKHJlc3VsdCkKKyAgICAgICAgIyAgICAg
Z290byBkb25lOworICAgICAgICAjIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkK
KyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyBkb25lOgorICAgICAgICAj
IHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgIyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxl
ZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGlu
c3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQg
YnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0
IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBt
YWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElm
IGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBo
aWdoIGJpdCBzZXQKKyAgICAgICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVh
bCAxPDw1MC4KKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgbW92ZSB0MSwgdDMKKyAgICAg
ICAgbW92ZSBMb3dlc3RPZkhpZ2hCaXRzLCB0NQorICAgICAgICBhZGRxIHQ1LCB0MgorICAgICAg
ICBhZGRxIHQ1LCB0MworICAgICAgICBvcnEgdDIsIHQzCisgICAgICAgIGxzaGlmdHEgMSwgdDUK
KyAgICAgICAgYnFhZXEgdDMsIHQ1LCAuc2xvdworCisgICAgICAgIGNxZXEgdDAsIHQxLCB0NQor
ICAgICAgICBidHFueiB0NSwgdDUsIC5kb25lICNpcyB0aGVyZSBhIGJldHRlciB3YXkgb2YgY2hl
Y2tpbmcgdDUgIT0gMCA/CisKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgb3JxIHQxLCB0
MgorICAgICAgICAjIFRoaXMgYW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5vdCBmb3IgQmlnSW50
MzIgKHNpbmNlIGl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8gYmUgc3RyaWN0RXF1
YWwgdG8gYSBub24tQ2VsbCkKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAgICAgYnRxeiB0Miwg
bm90Q2VsbE1hc2ssIC5zbG93Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJUYWcsIC5sZWZ0T0sK
LSAgICAgICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKLSAgICAubGVmdE9LOgotICAgICAg
ICBicWFlcSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSwotICAgICAgICBidHFueiB0MSwgbnVtYmVy
VGFnLCAuc2xvdwotICAgIC5yaWdodE9LOgotICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwg
dDEsIHQwKQotICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKLSAgICAgICAgcmV0dXJuKHQwKQor
CisgICAgLmRvbmU6CisgICAgICAgIGNyZWF0ZUJvb2xlYW4odDUpCisgICAgICAgIHJldHVybih0
NSkKIAogICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF8lb3Bjb2Rl
TmFtZSUpCkBAIC04NzEsMzMgKzg5NSw1MyBAQCBlbmQKIAogCiBzdHJpY3RFcU9wKHN0cmljdGVx
LCBPcFN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcWVxIGxlZnQs
IHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVlRmFsc2Us
IG9wZXJhbmQgZW5kKQogCiAKIHN0cmljdEVxT3AobnN0cmljdGVxLCBPcE5zdHJpY3RlcSwKLSAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FuZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBl
bmQpCisgICAgbWFjcm8gKG9wZXJhbmQpIHhvcnEgVmFsdWVUcnVlLCBvcGVyYW5kIGVuZCkKIAog
Ci1tYWNybyBzdHJpY3RFcXVhbGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVx
dWFsaXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWN0LCBqdW1wSWZFcXVhbCwganVtcElmTm90RXF1YWwpCiAgICAgbGxpbnRPcFdp
dGhKdW1wKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBq
dW1wLCBkaXNwYXRjaCkKICAgICAgICAgZ2V0KG1fbGhzLCB0MikKICAgICAgICAgZ2V0KG1fcmhz
LCB0MykKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDMsIHQxKQorCisgICAgICAgICMgQXQg
YSBoaWdoIGxldmVsIHdlIGRvCisgICAgICAgICMgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSkKKyAgICAgICAgIyAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAgIyBpZiAo
bGVmdCA9PSByaWdodCkKKyAgICAgICAgIyAgICAgZ290byBqdW1wVGFyZ2V0OworICAgICAgICAj
IGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgIyAgICAgZ290byBz
bG93UGF0aDsKKyAgICAgICAgIyBnb3RvIG90aGVySnVtcFRhcmdldAorCisgICAgICAgICMgVGhp
cyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUp
LCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFp
dmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAg
ICAgICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4g
YWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGln
aCBiaXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVu
IDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBv
bmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIG1vdmUgdDAsIHQyCisg
ICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAg
ICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0
MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKwor
ICAgICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisKICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAg
ICAgb3JxIHQxLCB0MgorICAgICAgICAjIFRoaXMgYW5kcSBjb3VsZCBiZSBhbiAnb3InIGlmIG5v
dCBmb3IgQmlnSW50MzIgKHNpbmNlIGl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhIENlbGwgdG8g
YmUgc3RyaWN0RXF1YWwgdG8gYSBub24tQ2VsbCkKKyAgICAgICAgYW5kcSB0MSwgdDIKICAgICAg
ICAgYnRxeiB0Miwgbm90Q2VsbE1hc2ssIC5zbG93Ci0gICAgICAgIGJxYWVxIHQwLCBudW1iZXJU
YWcsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIG51bWJlclRhZywgLnNsb3cKLSAgICAubGVm
dE9LOgotICAgICAgICBicWFlcSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSwotICAgICAgICBidHFu
eiB0MSwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5yaWdodE9LOgotICAgICAgICBlcXVhbGl0eU9w
ZXJhdGlvbih0MCwgdDEsIC5qdW1wVGFyZ2V0KQotICAgICAgICBkaXNwYXRjaCgpCiAKLSAgICAu
anVtcFRhcmdldDoKLSAgICAgICAganVtcChtX3RhcmdldExhYmVsKQorICAgICAgICBqdW1wSWZO
b3RFcXVhbChqdW1wLCBtX3RhcmdldExhYmVsLCBkaXNwYXRjaCkKKworICAgIC5lcXVhbDoKKyAg
ICAgICAganVtcElmRXF1YWwoanVtcCwgbV90YXJnZXRMYWJlbCwgZGlzcGF0Y2gpCiAKICAgICAu
c2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfJW9wY29kZU5hbWUl
KQpAQCAtOTA3LDMzICs5NTEsMzYgQEAgZW5kCiAKIAogc3RyaWN0RXF1YWxpdHlKdW1wT3AoanN0
cmljdGVxLCBPcEpzdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCkKLQorICAgIG1hY3JvIChqdW1wLCB0YXJnZXRMYWJl
bCwgZGlzcGF0Y2gpIGp1bXAodGFyZ2V0TGFiZWwpIGVuZCwKKyAgICBtYWNybyAoanVtcCwgdGFy
Z2V0TGFiZWwsIGRpc3BhdGNoKSBkaXNwYXRjaCgpIGVuZCkKIAogc3RyaWN0RXF1YWxpdHlKdW1w
T3Aoam5zdHJpY3RlcSwgT3BKbnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBicW5lcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCkKKyAgICBtYWNybyAoanVtcCwgdGFy
Z2V0TGFiZWwsIGRpc3BhdGNoKSBkaXNwYXRjaCgpIGVuZCwKKyAgICBtYWNybyAoanVtcCwgdGFy
Z2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRhcmdldExhYmVsKSBlbmQpCiAKIG1hY3JvIHByZU9w
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbikKICAgICBsbGludE9w
V2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gdXBkYXRlQXJp
dGhQcm9maWxlKHR5cGUpCi0gICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisg
ICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDJdCiAgICAgICAgIGVuZAogCi0gICAg
ICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDMKLSAg
ICAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgICAgICAjIE1ldGFkYXRhIGluIHQxLCBzcmNEc3Qg
aW4gdDMKLSAgICAgICAgYnFiIHQzLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgICAgIGludGVnZXJP
cGVyYXRpb24odDMsIC5zbG93KQotICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MwotICAgICAgICBz
dG9yZXEgdDMsIFtjZnIsIHQwLCA4XQotICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQ
cm9maWxlSW50KQotICAgICAgICBkaXNwYXRjaCgpCisgICAgZ2V0KG1fc3JjRHN0LCB0MCkKKyAg
ICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQxCisgICAgbWV0YWRhdGEodDIsIHQzKQorICAgICMgc3Jj
RHN0IGluIHQxLCBtZXRhZGF0YSBpbiB0MgorICAgICMgRklYTUU6IHRoZSBuZXh0IGxpbmUganVt
cHMgdG8gdGhlIHNsb3cgcGF0aCBmb3IgQmlnSW50MzIuIFdlIGNvdWxkIGluc3RlYWQgaGF2ZSBh
IGRlZGljYXRlZCBwYXRoIGluIGhlcmUgZm9yIHRoZW0uCisgICAgYnFiIHQxLCBudW1iZXJUYWcs
IC5zbG93CisgICAgaW50ZWdlck9wZXJhdGlvbih0MSwgLnNsb3cpCisgICAgb3JxIG51bWJlclRh
ZywgdDEKKyAgICBzdG9yZXEgdDEsIFtjZnIsIHQwLCA4XQorICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZShBcml0aFByb2ZpbGVJbnQpCisgICAgZGlzcGF0Y2goKQogCiAgICAgLnNsb3c6CiAgICAgICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAgZGlzcGF0Y2go
KQogICAgIGVuZCkKKwogZW5kCiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF90b19udW1iZXIsIE9w
VG9OdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCkBAIC0xMjc5LDYg
KzEzMjYsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIHJldHVybih0MSkKIGVuZCkK
IAoraWYgQklHSU5UMzIKKyAgICBsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdfaW50LCBPcElz
QmlnSW50LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgICAgIGdldCht
X29wZXJhbmQsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0
MCkKKyAgICAgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKKyAgICAgICAg
Y2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEhlYXBCaWdJbnRUeXBlLCB0MQorICAgICAgICBvcnEg
VmFsdWVGYWxzZSwgdDEKKyAgICAgICAgcmV0dXJuKHQxKQorICAgIC5ub3RDZWxsQ2FzZToKKyAg
ICAgICAgYW5kcSBNYXNrQmlnSW50MzIsIHQwCisgICAgICAgIGNxZXEgdDAsIFRhZ0JpZ0ludDMy
LCB0MAorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICAgICAgcmV0dXJuKHQwKQorICAg
IGVuZCkKK2Vsc2UKKyMgaWYgQklHSU5UMzIgaXMgbm90IHN1cHBvcnRlZCB3ZSBnZW5lcmF0ZSBv
cF9pc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKKyAgICBsbGludE9w
KG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVudXNlZCwgdW51c2VkLCB1bnVzZWQp
CisgICAgICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZW5kKQorZW5kCiAKIGxsaW50T3BXaXRoUmV0
dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwg
bV90eXBlLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5j
cHAKaW5kZXggODRmZTM5OWNkOGMuLjRiOTQ0NTA1ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtODMsNiArODMsMTAgQEAgY29uc3QgSWRl
bnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0m
IHZtLCBjb25zdCBJZGUKICAgICBpZiAocmFkaXggPT0gMTApCiAgICAgICAgIHJldHVybiBpZGVu
dGlmaWVyOwogCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAg
IEpTVmFsdWUgYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlm
aWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2Vw
dGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOworCiAgICAgLy8gRklYTUU6IFdlIGFyZSBhbGxvY2F0aW5nIGEgSlNC
aWdJbnQganVzdCB0byBiZSBhYmxlIHRvIHVzZQogICAgIC8vIEpTQmlnSW50Ojp0cnlHZXRTdHJp
bmcgd2hlbiByYWRpeCBpcyBub3QgMTAuCiAgICAgLy8gVGhpcyBjcmVhdGVzIHNvbWUgR0MgcHJl
c3N1cmUsIGJ1dCBzaW5jZSB0aGVzZSBpZGVudGlmaWVycwpAQCAtOTAsMTEgKzk0LDE1IEBAIGNv
bnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlm
aWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgLy8gaXQgd29udCBiZSBtdWNoIHByb2JsZW1hdGlj
LCBnaXZlbiBzdWNoIGNhc2VzIGFyZSB2ZXJ5IHJhcmUuCiAgICAgLy8gVGhlcmUgaXMgYSBsb3Qg
b2Ygb3B0aW1pemF0aW9ucyB3ZSBjYW4gYXBwbHkgaGVyZSB3aGVuIG5lY2Vzc2FyeS4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjI3Ci0KLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNCaWdJbnQqIGJpZ0lu
dCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5zdHJpbmcoKSwg
cmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBKU0JpZ0lu
dDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24o
KTsKLSAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBK
U0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBiaWdJbnQsIDEwKSkpOworICAgIEpTQmlnSW50KiBo
ZWFwQmlnSW50OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIo
KSkKKyAgICAgICAgaGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnQu
YmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBoZWFwQmlnSW50
ID0gYmlnSW50LmFzSGVhcEJpZ0ludCgpOworCisgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgaGVhcEJp
Z0ludCwgMTApKSk7CiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXgg
ZTk4MDMzYTJiYTYuLjJiYmI2YzM0ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAi
TG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmpl
Y3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDc3ZDhjYWYyMzY4Li44ZWQxNGFhOGU1NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0
aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTc1LDE4ICs3NSw2IEBAIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUpCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLXN0YXRpYyBib29sIGlzU2FmZUludGVnZXIoSlNWYWx1ZSBhcmd1bWVudCkKLXsKLSAgICBp
ZiAoYXJndW1lbnQuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICgh
YXJndW1lbnQuaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG91Ymxl
IG51bWJlciA9IGFyZ3VtZW50LmFzRG91YmxlKCk7Ci0gICAgcmV0dXJuIHRydW5jKG51bWJlcikg
PT0gbnVtYmVyICYmIHN0ZDo6YWJzKG51bWJlcikgPD0gbWF4U2FmZUludGVnZXIoKTsKLX0KLQog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgQVNTRVJUKGFyZ3VtZW50LmlzUHJpbWl0aXZl
KCkpOwpAQCAtOTQsMjAgKzgyLDI0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0JpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIAogICAg
IGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGFyZ3VtZW50KTsKLSAgICAKKworICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkgeworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZWxzZQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVu
dC5hc0Jvb2xlYW4oKSkpOworI2VuZGlmCisgICAgfQorCisgICAgaWYgKGFyZ3VtZW50LmlzU3Ry
aW5nKCkpIHsKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIEFTU0VSVChhcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8
IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmIChhcmd1bWVudC5p
c0Jvb2xlYW4oKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSkpOwot
ICAgIAotICAgIGlmIChhcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50Lmlz
TnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBU
b0JpZ0ludCBvcGVyYXRpb24iX3MpOwotICAgIAotICAgIEFTU0VSVChhcmd1bWVudC5pc1N0cmlu
ZygpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvU3RyaW5nVmlldyhn
bG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZp
ZXcpKTsKLSAgICB9KSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3Mp
OwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCkBAIC0xMTksMjAgKzExMSwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpT
VmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChw
cmltaXRpdmUuaXNOdW1iZXIoKSkgewotICAgICAgICBpZiAoIWlzU2FmZUludGVnZXIocHJpbWl0
aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qgc2FmZSBpbnRlZ2VyIl9zKSk7
Ci0gICAgICAgIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChwcmltaXRp
dmUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworICAgIGlmIChwcmltaXRp
dmUuaXNJbnQzMigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcHJpbWl0aXZlLmFzSW50MzIo
KSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworI2VuZGlmCisgICAgfQogCi0gICAg
ICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc1VJbnQzMigpKSk7
CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBudW1iZXIg
PSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAgICAgICAgaWYgKHRydW5jKG51bWJlcikgIT0gbnVt
YmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBtYXhTYWZlSW50ZWdlcigpKQorICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUgaW50ZWdlciJfcykpOwogCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIodm0sIHN0YXRpY19jYXN0
PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KLSAgICAKKwogICAgIEVu
Y29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9i
amVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYuLmU2MTk4MmI5M2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+
LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQmlnSW50T2JqZWN0KTsKIGNvbnN0
IENsYXNzSW5mbyBCaWdJbnRPYmplY3Q6OnNfaW5mbyA9IHsgIkJpZ0ludCIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQmlnSW50T2JqZWN0KSB9
OwogCiAKLUJpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogYmlnSW50KQorQmlnSW50T2JqZWN0KiBC
aWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgYmlnSW50KQogewogICAgIEJpZ0ludE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50T2JqZWN0Pih2bS5oZWFwKSkgQmlnSW50T2JqZWN0KHZt
LCBnbG9iYWxPYmplY3QtPmJpZ0ludE9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtLCBiaWdJbnQpOwpAQCAtNDksNyArNDksNyBAQCBCaWdJbnRPYmplY3Q6
OkJpZ0ludE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lk
IEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0JpZ0ludCogYmlnSW50KQor
dm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBiaWdJbnQp
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVj
dC5oCmluZGV4IDg0NzY3MTBmMjMyLi5kZWE4MWQyMmUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTEgKzQwLDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHZtLmJpZ0ludE9iamVjdFNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCopOwor
ICAgIHN0YXRpYyBCaWdJbnRPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgSlNCaWdJbnQqIGludGVy
bmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc0JpZ0ludChKU1dyYXBwZXJPYmplY3Q6OmludGVy
bmFsVmFsdWUoKSk7IH0KKyAgICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVy
biBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKTsgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTcsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTQmlnSW50Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEJpZ0ludE9i
amVjdChWTSYsIFN0cnVjdHVyZSopOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJpZ0ludE9i
amVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggZDA1ODljZjQyYjIuLmRm
ZjBmMTY1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dFByb3RvdHlwZS5jcHAKQEAgLTgwLDEyICs4MCwyNCBAQCB2b2lkIEJpZ0ludFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdGhpc1Zh
bHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogaGVhcC1hbGxvY2F0aW5n
IGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJlLWltcGxlbWVudGluZyB0b1N0cmlu
ZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0aGF0IEknbSBkZWZlcnJpbmcgaXQg
dG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIoKSkKKyAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0aGlzVmFsdWUuYmlnSW50MzJBc0lu
dDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAg
IGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+KHZtLCB0aGlz
VmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8Qmln
SW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCi0gICAgICAgICAgICByZXR1cm4g
YmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAgICAgICAgaWYgKEJpZ0ludE9iamVj
dCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhpc1Zh
bHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBiaWdJbnRPYmpl
Y3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAo
YmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKyAgICAgICAg
ICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyMCw2ICsxMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJ
bXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CiB9CiAKKy8vIEZJWE1FOiB0aGlzIGZ1bmN0
aW9uIHNob3VsZCBpbnRyb2R1Y2UgdGhlIHJpZ2h0IHNlcGFyYXRvcnMgZm9yIHRob3VzYW5kcyBh
bmQgc2ltaWxhciB0aGluZ3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmlnSW50UHJv
dG9GdW5jVG9TdHJpbmdJbXBsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiOGRl
OTY1NTgyZi4uMjY2NTIwZWNmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJU
aHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNDY5LDEzICs0NjgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcElu
Yz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpz
VmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0g
YXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0luYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQot
ICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQp
ICsgMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0Rz
dCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC00ODQsMTMgKzQ3OCw4IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kZWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wRGVjPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0Rz
dCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlh
bnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzRGVjKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMo
Z2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBl
bHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFy
aWFudCkgLSAxKTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1f
c3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAKQEAgLTUwNyw3ICs0OTYsMTUgQEAgc3RhdGljIHZv
aWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYg
bWV0YWRhdGEsIEpTVmEKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJpdGhQcm9maWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBB
U1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChy
ZXN1bHQuaXNOdW1iZXIoKSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAg
ICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRP
YnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc051bWJlcigpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAg
ICAgICAgICBpZiAob3BlcmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKTsKQEAgLTUyNywxMCArNTI0LDcgQEAgc3RhdGljIHZv
aWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYg
bWV0YWRhdGEsIEpTVmEKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZElu
dDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
cmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsK
LSAgICBlbHNlCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAg
fQogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhP
cChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0NSw4ICs1
MzksMjEgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHBy
aW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwg
YXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmln
SW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsK
KyAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAg
ICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwg
b3BlcmFuZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBw
cmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRp
ZgorCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJ
bnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAg
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBv
cGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01ODQsOCArNTkxLDEyIEBAIHN0YXRpYyB2b2lkIHVw
ZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqIGNvZGVCCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92
ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3Vs
dC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAg
fSBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2Jz
ZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3Vs
dC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOwor
I2VuZGlmCiAgICAgZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMo
KTsKIH0KQEAgLTYwNywxMyArNjE4LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251
bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1l
cmljPigpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQp
LmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50
ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1i
ZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7CiB9CiAKQEAgLTY0OSw3ICs2NTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3Bl
cmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9w
ZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8v
IHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4g
IChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFs
cmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bXVsKQpAQCAtNjcxLDI0ICs2NzcsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0g
R0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VU
X0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVm
dC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1
dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojpz
dWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAg
ICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7
Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVU
VVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVG
b3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0
LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDAsMjYgKzY5MCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBK
U1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNEaXYoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0
ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkco
cmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJp
dGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGlu
IGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4o
bGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVy
aWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9X
SVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmlu
YXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmln
aHQpOwogICAgIH0pOwpAQCAtNzMxLDI0ICs3MDMsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1
ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJp
Z2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1l
cmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiBy
ZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0g
ICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3Bl
cmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1l
cmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVz
dWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1NywyNSArNzE0
LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhz
KS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5q
c1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBy
aWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93
KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0g
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAg
ICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYg
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAg
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9i
amVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAg
ICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBk
b3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0g
V1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9w
ZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKQEAgLTc4NCwyMiArNzI1LDEwIEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExz
aGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmln
aHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
ICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBU
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAg
ICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMp
IDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkKQEAgLTgwOCwyMiArNzM3LDEwIEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJz
aGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmln
aHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAg
ICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJf
cykpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQz
Ml90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAz
MSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg0OSw3OSAr
NzY2LDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4o
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3Bl
cmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0lu
dE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0g
ICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmpl
Y3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAg
ICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAot
ICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51
bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBv
cGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVz
dWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJ
TigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBs
ZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdo
dE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQz
MihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BS
T0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGlu
IGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VU
X0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0
ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihX
VEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51
bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0
LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAg
ICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBh
dXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0lu
dE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0
ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2Ug
J29yJyBvcGVyYXRpb24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmpl
Y3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJP
RklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsK
ICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
YXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBs
ZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0g
R0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChq
c051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90
PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBl
b2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMz
NDU0NDJmNTQuLjQ2YTliMTAxNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBD
YWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUo
SW5pdGlhbGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE4OCwz
NCArMTg4LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxK
U0JpZ0ludCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xl
RGlnaXRWYWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICByZXR1
cm4gMDsKLSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAgICAg
IERpZ2l0IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1v
ZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYg
KHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hh
cmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7
CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VN
b2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMs
IHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBz
aWduKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xv
YmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFy
c2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAgICBy
ZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5n
dGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dF
bXB0eVN0cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0JpZ0lu
dDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmll
dyBzKQogewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFyc2VN
b2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQxLDIzIEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiB4LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJv
YmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwg
eCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQorICAg
ICAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpV
bnNpZ25lZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9i
amVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHBy
b2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmplY3Qs
IHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsK
KyAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgp
LCAxKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRl
U3ViT25lKGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNvbHV0
ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpTQmln
SW50KiBKU0JpZ0ludDo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiB4LCBKU0JpZ0ludCogeSkKQEAgLTUzMiw3ICs1MjYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6
OmJpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpT
QmlnSQogICAgIGlmICh4LT5zaWduKCkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAK
LSAgICAvLyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4ICYg
KC15KSA9PSB4ICYgfih5LTEpCiAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xv
YmFsT2JqZWN0LCB5LCB5LT5sZW5ndGgoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBAIC0x
NjQ0LDcgKzE2MzgsNyBAQCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50
Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogeCwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJldmlz
aXQgdXNhZ2Ugb2YgVmVjdG9yIGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4g
cmVzdWx0U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwpA
QCAtMTgwMiw3ICsxNzk2LDcgQEAgYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKQEAgLTE4MTAsNyArMTgwNCw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUq
ICBkYXRhLCB1bnNpCiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRh
dGFbcF0pKQogICAgICAgICArK3A7CiAKLSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNo
YXJhY3RlcnMKKyAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
ZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50
KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VNb2Rl
LCBQYXJzZUludFNpZ246OlVuc2lnbmVkLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJp
bmcpOwpAQCAtMTgyNCwyNCArMTgxOCwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogCiAg
ICAgUGFyc2VJbnRTaWduIHNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlmIChw
IDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAgICsr
cDsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRhdGFb
cF0gPT0gJy0nKSB7CiAgICAgICAgICAgICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7CiAg
ICAgICAgICAgICArK3A7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3BdID09
ICcrJykKKyAgICAgICAgICAgICsrcDsKICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0g
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJz
ZU1vZGUsIHNpZ24pOwotCi0gICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKLSAg
ICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwg
ZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VN
b2RlIGVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNl
TW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2Rl
LCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBBU1NF
UlQobGVuZ3RoID49IDApOwogICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1Miw3
ICsxODQwLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6
VGhyb3dFeGNlcHRpb25zKQogICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBT
dHJpbmcgdG8gQmlnSW50IikpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCkBA
IC0xODY2LDQ0ICsxODU0LDg0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBsZW5n
dGggPSBlbmRJbmRleCArIDE7CiAKLSAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAgPT0g
bGVuZ3RoKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCAwKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZt
KTsKLQotICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAx
MCk7Ci0gICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2ln
bmVkIGxpbWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQg
PSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBz
dGlsbCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFz
IGFsbG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAg
IGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5p
dGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0
OwotICAgICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAg
ICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+
PSAnYScgJiYgZGF0YVtpXSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAt
ICdhJyArIDEwOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwg
bGltaXRBKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRp
cGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdp
dCkpOworI2VuZGlmCiAgICAgfQogCi0gICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJ
bnRTaWduOjpTaWduZWQgPyB0cnVlIDogZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0
byBwaWNrIHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRG
b3JCaWdJbnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0lu
dDMyOworICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAg
ICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MTA6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9
IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0g
bnVsbHB0cjsKIAotICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBhcnNl
TW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0
LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQgbGlt
aXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1p
dGEgPSAnYScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2ln
bmVkIGxpbWl0QSA9ICdBJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7Cisg
ICAgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBs
ZW5ndGgpIHsKKyAgICAgICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50
MzJfdCwgQ3Jhc2hPbk92ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsr
aSwgKytwKSB7CisgICAgICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRp
cGxpZXIgKj0gcmFkaXg7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtw
XSA8IGxpbWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAg
ICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAg
ICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBl
bHNlIGlmIChkYXRhW3BdID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAg
ICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBC
aWdJbnQiKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwg
bXVsdGlwbGllci51bnNhZmVHZXQoKSk7CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7Cisg
ICAgICAgICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9
PSBQYXJzZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIGRpZ2l0KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUZyb20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGhlYXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmpl
Y3QsIHZtLCByYWRpeCwgaW5pdGlhbExlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGls
bCBiZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFs
bG9jYXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAg
ICAgICAgaWYgKCFoZWFwUmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgICAgICAgICBoZWFwUmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6
V2l0aFplcm8pOworICAgICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBs
eUFkZChzdGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19j
YXN0PERpZ2l0PihkaWdpdCkpOworICAgIH0KIAotICAgIHJldHVybiBudWxscHRyOworICAgIGhl
YXBSZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAgcmV0
dXJuIGhlYXBSZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6RGln
aXQgSlNCaWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCkBAIC0xOTI3LDE4ICsxOTU1LDIwIEBAIGJv
b2wgSlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAgQVNT
RVJUKG51bVZhbHVlLmlzTnVtYmVyKCkpOwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0ludDMy
KCkpIHsKLSAgICAgICAgaW50IHZhbHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAgICBp
ZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAgICAg
IHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUg
PCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhz
dGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1ZS5p
c0ludDMyKCkpCisgICAgICAgIHJldHVybiBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50MzIo
KSk7CiAgICAgCiAgICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAgICBy
ZXR1cm4gY29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpF
cXVhbDsKIH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVlKQor
eworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAgICBy
ZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwg
MCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIHsK
ICAgICAvLyBUaGlzIGFsZ29yaXRobSBleHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJ
RUVFIDc1NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0
ZTYwOTlmNDcuLjhlMmMxNDhlNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8g
TGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC04Miw2ICs4MiwxNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCisgICAgc3RhdGljIEpTVmFsdWUgbWFrZUhlYXBC
aWdJbnRPckJpZ0ludDMyKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKKyAgICB7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBpZiAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlO
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4odmFsdWUpKTsKKyNlbmRpZgorCisgICAgICAgIGF1dG8gcHRyID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4ocHRyKSk7CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBFcnJvclBh
cnNlTW9kZSB7CiAgICAgICAgIFRocm93RXhjZXB0aW9ucywKICAgICAgICAgSWdub3JlRXhjZXB0
aW9ucwpAQCAtOTAsMTMgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUlu
dE1vZGUgeyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51
bSBjbGFzcyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMg
SlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50
OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlv
bnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBK
U0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNl
TW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0Jp
Z0ludCogc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywg
dWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNl
cHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFy
c2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpT
VmFsdWUgc3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAg
IHN0YXRpYyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRp
eCk7CiAKLSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7
CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwog
ICAgIAogICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzEyMyw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMo
SlNCaWdJbnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwogICAg
IHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIzMywxMCBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBz
dGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBw
YXJzZUludChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0g
ICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5
cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQg
cmFkaXgsIEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25l
ZCwgUGFyc2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgs
IEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFy
c2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRp
YyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJh
ZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjY5LDkgQEAgcHJpdmF0ZToK
ICAgICBDYWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwog
fTsKIAotaW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpT
QmlnSW50KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUu
YXNDZWxsKCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFw
QmlnSW50KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5k
ZXggNWRiN2NkM2ZkMTkuLjc5M2Q5NjFhYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAorI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5o
IgogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90
b3R5cGUuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKQEAgLTcxLDYgKzcyLDE0
IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlzRG91YmxlKCkpOwog
ICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihnbG9i
YWxPYmplY3QpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7Cisg
ICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5v
dCBhbGxvd2VkLiJfcyk7CisgICAgICAgIHJldHVybiAwLjA7CisgICAgfQorI2VuZGlmCiAgICAg
aWYgKGlzVHJ1ZSgpKQogICAgICAgICByZXR1cm4gMS4wOwogICAgIHJldHVybiBpc1VuZGVmaW5l
ZCgpID8gUE5hTiA6IDA7IC8vIG51bGwgYW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgpAQCAt
MTAxLDYgKzExMCwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gY29uc3RydWN0
TnVtYmVyKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKICAgICBpZiAoaXNUcnVlKCkgfHwgaXNG
YWxzZSgpKQogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29s
ZWFuKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsICp0aGlzKTsKKyNlbmRpZgogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JO
dWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMTE4LDYgKzEzMSwxNCBA
QCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVy
KGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKICAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgp
KQogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGds
b2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmln
SW50MzIoKSkgeworICAgICAgICBKU0NlbGwqIGhlYXBCaWdJbnQgPSBzdGF0aWNfY2FzdDxKU0Nl
bGwqPihKU0JpZ0ludDo6Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIGJpZ0ludDMyQXNJ
bnQzMigpKSk7CisgICAgICAgIC8vIEZJWE1FOiB0aGVyZSBtdXN0IGJlIGEgc2ltcGxlciB3YXkg
dG8gZmluZCB0b1RoaXMgZm9yIEpTQmlnSW50LCBidXQgSSBjYW4ndCBldmVuIGZpbmQgd2hlcmUg
aXQgaXMgZGVmaW5lZC4KKyAgICAgICAgcmV0dXJuIGhlYXBCaWdJbnQtPm1ldGhvZFRhYmxlKGdl
dFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoaGVhcEJpZ0ludCwgZ2xvYmFsT2JqZWN0LCBlY21h
TW9kZSk7CisgICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogfQpAQCAtMTMwLDcgKzE1
MSw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlm
IChpc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJv
dG90eXBlKCk7Ci0gICAgICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICBpZiAoaXNIZWFwQmln
SW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUo
KTsKICAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsKQEAgLTE0MCw2ICsxNjEsMTAgQEAgSlNPYmplY3QqIEpT
VmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bnVtYmVyUHJvdG90eXBlKCk7CiAg
ICAgaWYgKGlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5ib29sZWFu
UHJvdG90eXBlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOworI2VuZGlmCiAK
ICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsICp0
aGlzKSk7CkBAIC0yODYsNiArMzExLDggQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNz
dW1pbmdTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN5bWJvbDogIiwgUmF3UG9p
bnRlcihhc0NlbGwoKSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LT5pc1N1YkNsYXNzT2YoU3RydWN0dXJlOjppbmZvKCkpKQogICAgICAgICAgICAgb3V0LnByaW50
KCJTdHJ1Y3R1cmU6ICIsIGluQ29udGV4dCgqanNDYXN0PFN0cnVjdHVyZSo+KGFzQ2VsbCgpKSwg
Y29udGV4dCkpOworICAgICAgICBlbHNlIGlmIChpc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAg
IG91dC5wcmludCgiQmlnSW50W2hlYXAtYWxsb2NhdGVkXTogYWRkcj0iLCBSYXdQb2ludGVyKGFz
Q2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3Vi
Q2xhc3NPZihKU09iamVjdDo6aW5mbygpKSkgewogICAgICAgICAgICAgb3V0LnByaW50KCJPYmpl
Y3Q6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgICAgIG91dC5wcmludCgiIHdp
dGggYnV0dGVyZmx5ICIsIFJhd1BvaW50ZXIoYXNPYmplY3QoYXNDZWxsKCkpLT5idXR0ZXJmbHko
KSkpOwpAQCAtMzA1LDYgKzMzMiwxMCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1
bWluZ1N0cnVjdHVyZSgKICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAo
aXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgZWxzZSBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBvdXQucHJpbnRm
KCJCaWdJbnRbaW5saW5lXTogJWQiLCBiaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKICAgICBl
bHNlCiAgICAgICAgIG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAtMzQ3LDYgKzM3OCwxMCBA
QCB2b2lkIEpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkK
ICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ZWxzZSBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBvdXQucHJpbnRmKCJCaWdJbnRbaW5saW5l
XTogJWQiLCBiaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIG91
dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAtMzg0LDE4ICs0MTksMjUgQEAgSlNTdHJpbmcqIEpT
VmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9v
bCByZXR1cm5FbXAKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5udWxsU3RyaW5nKCk7
CiAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mu
dW5kZWZpbmVkU3RyaW5nKCk7Ci0gICAgaWYgKGlzU3ltYm9sKCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRv
IGEgc3RyaW5nIl9zKTsKLSAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBhdXRvIGludGVnZXIgPSBi
aWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnRl
Z2VyKSA8PSA5KQorICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoaW50ZWdlciArICcwJyk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIHZtLm51bWVyaWNTdHJpbmdzLmFkZChpbnRlZ2VyKSk7CiAgICAgfQotICAgIGlm
IChpc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0JpZ0ludCgqdGhp
cyk7Ci0gICAgICAgIGlmIChhdXRvIGRpZ2l0ID0gYmlnSW50LT5zaW5nbGVEaWdpdFZhbHVlRm9y
U3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJh
Y3RlclN0cmluZygqZGlnaXQgKyAnMCcpOwotICAgICAgICBKU1N0cmluZyogcmV0dXJuU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwg
MTApKTsKKyNlbmRpZgorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0lu
dCogYmlnSW50ID0gYXNIZWFwQmlnSW50KCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
cmF0aGVyIGhhdmUgdHdvIGNhc2VzIGhlcmU6IG9uZS1jaGFyYWN0ZXIgc3RyaW5nIHZzIGpzTm9u
VHJpdmlhbFN0cmluZyBmb3IgZXZlcnl0aGluZyBlbHNlLgorICAgICAgICBKU1N0cmluZyogcmV0
dXJuU3RyaW5nID0gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxP
YmplY3QsIDEwKS5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlcnJvclZhbHVlKCkpOwogICAgICAgICByZXR1cm4gcmV0
dXJuU3RyaW5nOwogICAgIH0KKyAgICBpZiAoaXNTeW1ib2woKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8g
YSBzdHJpbmciX3MpOworICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIH0KIAogICAg
IEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIFByZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2QuLjg3MmMzNjM5OTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xNzcsNiArMTc3
LDkgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAgZW51bSBK
U0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcgeyBKU0JpZ0ludDMy
IH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUg
fTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4Niw2ICsxODksOSBAQCBwdWJsaWM6CiAgICAgSlNW
YWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVl
KGNvbnN0IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNWYWx1ZShKU0Jp
Z0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgogCiAgICAgLy8gTnVtYmVycwogICAgIEpTVmFs
dWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CkBAIC0yMTksNiArMjI1LDkgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29u
c3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qgb25seSBiZSBjYWxsZWQg
b24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBhc0ludDMyRm9yQXJpdGht
ZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBidXQgb3RoZXJ3aXNlIGxp
a2UgYXNJbnQzMigpLgogCkBAIC0yMzgsNiArMjQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNO
dW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jp
Z0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBp
c0JpZ0ludDMyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wg
aXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CkBA
IC0yNDYsNyArMjU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBjb25zdCBD
bGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJvb2wgaW5o
ZXJpdHMoVk0mKSBjb25zdDsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb09yTnVsbChW
TSYpIGNvbnN0OwotICAgICAgICAKKwogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgogICAg
IGJvb2wgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgV1RGOjpTdHJpbmcmKSBjb25zdDsKICAg
ICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gbnVsbCBz
dHJpbmcgaWYgbm90IGEgc3RyaW5nCkBAIC0yNjUsOSArMjc2LDEwIEBAIHB1YmxpYzoKICAgICAv
LyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0IGZyZWUg
aWYgYW4gZXhjZXB0aW9uIGhhcwogICAgIC8vIGJlZW4gc2V0IGluIHRoZSBDYWxsRnJhbWUgYWxy
ZWFkeS4KICAgICBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAK
LSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiB0b051bWVyaWMoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gdG9CaWdJbnRPckludDMy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICBKU1ZhbHVlIHRvTnVtZXJpYyhKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OworICAgIEpTVmFsdWUgdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CisgICAgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludCgpIGNvbnN0OwogCiAgICAg
Ly8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0IHNpZGUgZWZm
ZWN0cy4KICAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0
OwpAQCAtMzE2LDggKzMyOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGlj
IGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRp
YyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbEZvckNlbGxzKEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2Mik7CiAgICAgc3RhdGljIFRyaVN0
YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKIAogICAgIGJvb2wg
aXNDZWxsKCkgY29uc3Q7CkBAIC00MTUsMTEgKzQyNiwyMCBAQCBwdWJsaWM6CiAgICAgICogVGhl
c2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogICAgICAqIC0gQml0IDEg
KE90aGVyVGFnKSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVhbCBwb2lu
dGVycyB0byBiZQogICAgICAqICAgcXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxsIGltbWVk
aWF0ZSB2YWx1ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgotICAgICAqIC0g
V2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVs
bCBzaGFyZSB0aGUKKyAgICAgKiAtIFdpdGggYml0IDMgbWFza2VkIG91dCAoVW5kZWZpbmVkVGFn
KSwgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQogICAgICAqICAgc2FtZSB2YWx1ZSwgYWxs
b3dpbmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgogICAgICAqCiAg
ICAgICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4MCwgdGhp
cyBpcyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQogICAgICAqIGhvbGVzLCBhbmQgYXMgYSBDKysg
J25vIHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2YWx1ZSBv
ZiAwKS4KKyAgICAgKgorICAgICAqIFdoZW4gVVNFKEJJR0lOVDMyKSwgd2UgaGF2ZSBhIHNwZWNp
YWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBhcmUgc21hbGwgKDMyLWJpdCBhdCBt
b3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgKiBUaGlzIHJlcHJl
c2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGluZ3M6CisgICAgICog
LSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0
byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9p
bnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAg
ICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIHdhc20gdGhhbmtz
IHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNv
bmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAg
ICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJp
dCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAgICAvLyBUaGlzIHZhbHVlIGlzIDJeNDks
IHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwg
YmVnaW4KQEAgLTQyOSwxMSArNDQ5LDE5IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbGwgYml0cyBp
biB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKICAg
ICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHBy
ZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJlclRhZyA9
IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RhbnQgaXMg
dXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RyaWN0RXEsIHRvIGRl
dGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRvdWJsZQorICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsKKyAgICBzdGF0
aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcpOworICAgIHN0YXRpY19hc3Nl
cnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJUYWcpKTsKIAogICAgIC8vIEFsbCBu
b24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIg
c2V0LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBPdGhlclRhZyAgICAgICA9IDB4MjsK
ICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9vbFRhZyAgICAgICAgPSAweDQ7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRhZyAgID0gMHg4OworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50MzJUYWcgICAgPSAw
eDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1hc2sgICA9IE51bWJl
clRhZyB8IEJpZ0ludDMyVGFnOworI2VuZGlmCiAgICAgLy8gQ29tYmluZWQgaW50ZWdlciB2YWx1
ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KICAgICBzdGF0aWMgY29uc3RleHByIGludDMy
X3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCBmYWxzZTsKICAgICBzdGF0
aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVlICAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcg
fCB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKaW5kZXggNWIzZmY4YWM0NGUuLmJlMGYzOWM1MjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICsz
OCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMjks
NiArMzI4LDEyIEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25z
dAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHUuYXNCaXRzLnBheWxvYWQp
OwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBj
b25zdAoreworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8SlNCaWdJbnQqPih1LmFzQml0cy5wYXlsb2FkKTsKK30KKwogQUxXQVlTX0lOTElO
RSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKIHsKICAgICBB
U1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKQEAgLTUyMiw4ICs1MjcsMjIgQEAgQUxXQVlTX0lOTElO
RSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQog
CitBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAor
eworICAgIEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
QmlnSW50Kj4odS5wdHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAorI2lmIFVT
RShCSUdJTlQzMikKK2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMy
X3QgdmFsdWUpCit7CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2
ZSBudW1iZXJzLCBvdGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50
NjQgPSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVtYmVyVGFnKSB8
IEJpZ0ludDMyVGFnOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGludDY0
X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBpZiAobnVtYmVyICE9
IG51bWJlcikKQEAgLTYxMCw5ICs2MjksMzEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJp
bmcoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiBp
c0JpZ0ludDMyKCkgfHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6
OmlzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgp
LT5pc0hlYXBCaWdJbnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQzMigp
IGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5hc0ludDY0ICYgQmln
SW50MzJNYXNrKSA9PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpiaWdJ
bnQzMkFzSW50MzIoKSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOworfQorI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAog
ewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTYyMCw3
ICs2NjEsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiAKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWlzQ2Vs
bCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFz
Q2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlz
U3RyaW5nKCkgfHwgYXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0lu
dCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0CkBA
IC03NjAsOCArODAxLDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAgICAgIHZhbHVl
ID0gKnRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NFUlQoaXNVbmRl
ZmluZWQoKSk7Ci0gICAgbnVtYmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICBudW1iZXIgPSBQTmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252
ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAg
ICBudW1iZXIgPSAwLjA7CiAgICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTc3NSw0NCArODI1LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVt
YmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRvTnVt
YmVyU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b051bWVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigp
KQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAg
ICByZXR1cm4gYXNEb3VibGUoKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJu
IGFzQmlnSW50KCp0aGlzKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkgfHwgaXNC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJp
bVZhbHVlLmlzRG91YmxlKCkgfHwgcHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVy
biBwcmltVmFsdWU7CisKICAgICBkb3VibGUgdmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1
cm4gdmFsdWU7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJl
dHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0lu
dCosIGludDMyX3Q+IEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvQmlnSW50
T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlmIChp
c0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgaWYgKGlzSW50MzIoKSB8
fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgaWYgKGlzRG91YmxlKCkg
JiYgY2FuQmVJbnQzMihhc0RvdWJsZSgpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGFzRG91YmxlKCkpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4g
YXNCaWdJbnQoKnRoaXMpOworICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oYXNEb3VibGUoKSkpOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVy
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50
MzIoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsK
KwogICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2
YWx1ZSk7CiB9CiAKIGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKQEAgLTEwMzIsMzcgKzEwODMsMTcgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAg
IGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4g
djEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5p
c1N0cmluZygpOwotICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYg
KHMxICYmIHMyKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmlu
Zyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgczIpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFz
U3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJ
bnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
djIgPSBKU1ZhbHVlKG4pOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5p
c051bWJlcigpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAg
Ly8gR3VhcmFudGVlaW5nIHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBz
b21lIG9mIHRoZSBjYXNlcyBiZWxvdyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYx
LCB2Mik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewot
ICAgICAgICAgICAgU3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFs
T2JqZWN0LCB2MVN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9v
bGVhbnMsIEJpZ0ludDMyLCBPYmplY3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9y
ZSB0eXBlcy4KKyAgICAgICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwg
YmVjYXVzZSBpdCBpcyBOT1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09
IHYyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpA
QCAtMTA4MCw3ICsxMTExLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xv
d0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBp
ZiAodjEuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAg
ICAgIEpTVmFsdWUgcDEgPSB2MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBw
MTsKQEAgLTExMDIsNTYgKzExMzMsODQgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVx
dWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAg
ICAgYm9vbCBzeW0yID0gdjIuaXNTeW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikg
ewogICAgICAgICAgICAgaWYgKHN5bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4g
YXNTeW1ib2wodjEpID09IGFzU3ltYm9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7IC8vIHYxID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNT
dHJpbmcoKTsKKyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChz
MSkgeworICAgICAgICAgICAgaWYgKHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYy
KSkpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBh
cmUgZ3VhcmFudGVlZCB0byBlbnRlciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFy
aWFudCBvZiBvbmx5IHYyIGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAg
ICBpZiAoczEgfHwgczIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgcmV0dXJuIGQxID09IGQyOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhh
dCB0aGUgc3RyaW5nIGlzIHYyICh0aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAg
ICBpZiAodjEuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9
IGFzU3RyaW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
IGlmICghdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBG
b3IgQmlnSW50MzIKKyAgICAgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2Vu
ZXJpYyBjb2RlIGZvciBjb21wYXJpbmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRo
ZSBCaWdJbnQzMi9CaWdJbnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYx
LmlzQm9vbGVhbigpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxP
YmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2
Mi5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+
KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAo
djIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJl
cihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBh
cmlzb24gYmVsb3cKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRv
IHJlcGFpciB0aGUgcnVsZSB0aGF0IG9ubHkgdjIgaXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBp
biB0aGVzZSBjb21wYXJpc29ucworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAg
ICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051
bWJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19j
YXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNC
aWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9i
YWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24g
YmVsb3cKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYg
djIuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmln
SW50KHYxKSwgYXNCaWdJbnQodjIpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0lu
dCgpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5l
cXVhbHNUb051bWJlcih2Mik7CiAKLSAgICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNO
dW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVy
KHYxKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsK
KyAgICAgICAgICAgIGlmICh2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYx
LmJpZ0ludDMyQXNJbnQzMigpID09IHYyLmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5p
c0RvdWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYx
LmJpZ0ludDMyQXNJbnQzMigpKSA9PSB2Mi5hc0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpz
d2FwKHYxLCB2Mik7CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAg
ICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNIZWFwQmln
SW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFw
QmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hl
YXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7Cisg
ICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9IHdoaWxlICh0cnVlKTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJ
TkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJv
b2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIu
YXNDZWxsKCktPmlzU3RyaW5nKCkpCisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3Qs
IGFzU3RyaW5nKHYyKSk7Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2
MikpOworICAgIGlmICh2MS0+aXNIZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQor
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYx
KSwgc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0K
IApAQCAtMTE2MywxMCArMTIyMiwxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlm
ICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051
bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5p
c0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1
cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkp
OworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAg
IHJldHVybiB2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50
MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAg
ICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwo
KSwgdjIuYXNDZWxsKCkpOwogCi0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUo
Z2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5l
IGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwx
NSArMTI1MCwyMyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1i
ZXIoKSkKICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1i
ZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKLSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlz
U3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3Ry
aW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAg
ICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFs
dWVJbXBsKCk7Ci0gICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAg
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci0gICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVx
dWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2
MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cmlT
dGF0ZSh2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIo
KSkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAg
ICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5i
aWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlmCisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIu
aXNDZWxsKCkpIHsKKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFz
Q2VsbCgpLT5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0
cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBjb25z
dCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7
CisgICAgICAgICAgICBpZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmluZykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6
OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHYx
LmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkp
CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBC
aWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRy
aVN0YXRlKHYxID09IHYyKTsKQEAgLTEyMDYsNiArMTI4MCwxMCBAQCBpbmxpbmUgVHJpU3RhdGUg
SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9B
bmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8g
ZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgp
LT5wdXJlVG9Cb29sZWFuKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiBiaWdJbnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZh
bHNlVHJpU3RhdGU7CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUg
OiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAppbmRleCAxMzkwYzc2MTlhYy4uMDY1OTc5ZTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIENvbnN0cnVjdFR5cGUg
SlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVj
dERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwt
PmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmco
KSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZp
ZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIEpTQ2VsbDo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmln
SW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8
IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNl
bGwsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9Q
cmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1i
b2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVy
cmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcykt
PnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNzQsNyAr
MTc0LDcgQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmpl
Y3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9i
YWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChp
c0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50
Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmlt
aXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE4NSw3ICsx
ODUsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0
aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9i
YWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0
Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0xOTYsNyArMTk2LDcgQEAg
SlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJp
Z0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlz
KS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAyYmVmNGE3
ZDhlYy4uMDZlZDRlNzA5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5n
IHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50
KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3lt
Ym9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAppbmRleCAxYzlkMTMyNDhhOS4uODc5OGM1YTk3OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIwNCw5ICsyMDQsOSBA
QCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBl
ID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25z
dAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVy
biBtX3R5cGUgPT0gQmlnSW50VHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRU
eXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MCw3
ICszNDAsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0
dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCBpbmxpbmUgVHJpU3RhdGUg
SlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVh
bigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkK
KyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJp
U3RhdGU7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyMmMwMTIwNWMy
Zi4uN2U4YjI2MGFmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aApAQCAtMTAzOCw2ICsxMDM4LDEwIEBAIGlubGluZSBib29sIEpTVmFsdWU6OnRvQm9vbGVhbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gYXNEb3Vi
bGUoKSA+IDAuMCB8fCBhc0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYg
KGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVhbihnbG9iYWxPYmpl
Y3QpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gISFiaWdJbnQzMkFzSW50MzIoKTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKTsg
Ly8gZmFsc2UsIG51bGwsIGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQgdG8gZmFsc2UuCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IGIwMmIzNDdkNmE1
Li44M2JkZDllMTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBK
U0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoQ2VsbFR5cGUpCiAgICAgQ0FTRShTdHJpbmdUeXBl
KQogICAgIENBU0UoU3ltYm9sVHlwZSkKLSAgICBDQVNFKEJpZ0ludFR5cGUpCisgICAgQ0FTRShI
ZWFwQmlnSW50VHlwZSkKICAgICBDQVNFKEN1c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FT
RShBUElWYWx1ZVdyYXBwZXJUeXBlKQogICAgIENBU0UoTmF0aXZlRXhlY3V0YWJsZVR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDQ4MzZmOTFiMGJiLi43NGYz
MWZmODIwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTI2LDgg
KzI2LDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBUaGUgQ2VsbFR5cGUgdmFs
dWUgbXVzdCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBKU0NlbGwuCiAgICAgQ2Vs
bFR5cGUsCiAgICAgU3RyaW5nVHlwZSwKLSAgICBCaWdJbnRUeXBlLAotICAgIExhc3RNYXliZUZh
bHN5Q2VsbFByaW1pdGl2ZSA9IEJpZ0ludFR5cGUsCisgICAgSGVhcEJpZ0ludFR5cGUsCisgICAg
TGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gSGVhcEJpZ0ludFR5cGUsCiAgICAgU3ltYm9s
VHlwZSwKIAogICAgIEdldHRlclNldHRlclR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmgKaW5kZXggM2NkNzEzZDg0ZjMuLjg4ZTMwZjIwOWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC0xMzQsNyArMTM0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3Qg
eyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAg
IGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49
ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIAotICAgIHVpbnQ4
X3QgbV90eXBlOworICAgIEpTVHlwZSBtX3R5cGU7CiAgICAgdWludDhfdCBtX2ZsYWdzOwogICAg
IHVpbnQxNl90IG1fZmxhZ3MyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKaW5kZXggYzRlYmJl
YzUwMzUuLjI3YTIyMWMyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApAQCAtMjYsOSArMjYs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUuaCIKIAotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJsZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmNwcAppbmRleCA0OTA1ZDViYWYwNy4uNzZjYzI1MGIxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDExICszNiw2IEBAIGJvb2wgSlNWYWx1ZTo6
ZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyCiAgICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIpOwogfQogCi1ib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAgICByZXR1
cm4gc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7Ci19Ci0K
IE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKICAgICAvLyBleGNlcHRpb24gZm9y
IHRoZSBEYXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQpAQCAtNzMsMjEgKzY4LDIzIEBA
IE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCBwMVN0cmluZywgYXNTdHJpbmcocDIpKSk7CiAgICAg
fQogCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IHAxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVy
aWMgPSBwMi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6YWRkKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpOwotICAg
IH0KLQotICAgIHJldHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAr
IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgYXV0byBkb3VibGVPcCA9IFtd
IChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4g
bGVmdCArIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAg
ICAgICByZXN1bHQgKz0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3Zl
cmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxz
ZQorICAgICAgICBVTlVTRURfUEFSQU0obGVmdCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyaWdo
dCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0K
IAogSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdikKQEAgLTEyOCw3ICsxMjUsNyBAQCBib29sIGpzSXNPYmpl
Y3RUeXBlT3JOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAg
ICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCkt
PnR5cGUoKTsKLSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlw
ZSB8fCB0eXBlID09IEJpZ0ludFR5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlID09IFN5bWJvbFR5cGUgfHwgdHlwZSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFz
T2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9i
amVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXgg
NGJiZTIzYzA3MjUuLjdkZGQ5ZDA1MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIzOSw2
ICsyMzgsMzUgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJy
YXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmUKICAgICByZXR1cm4gcm9wZUJ1aWxk
ZXIucmVsZWFzZSgpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50OjpDb21wYXJpc29uUmVz
dWx0IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQmlnSW50KiB2MSwgSlNWYWx1ZSBwcmltVmFsdWUpCit7CisgICAgQVNTRVJUKHBy
aW1WYWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgp
KTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkp
IHsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0lu
dChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNv
blJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOworCisgICAg
ICAgIGlmIChiaWdJbnRWYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6Y29tcGFyZSh2MSwgYmlnSW50VmFsdWUuYXNIZWFwQmlnSW50KCkpOworCisgICAg
ICAgIEFTU0VSVChiaWdJbnRWYWx1ZS5pc0JpZ0ludDMyKCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgLy8gRklYTUU6IHVzZSBzb21ldGhpbmcgbGVzcyBoYWNreSwgZS5nLiBzb21lIGtp
bmQgb2YgSlNCaWdJbnQ6OmNvbXBhcmVUb0ludDMyCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
Y29tcGFyZVRvRG91YmxlKHYxLCBzdGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0lu
dDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUg
PSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBB
TFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNv
blJlc3VsdCBjb21wYXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFy
aXNvbk1vZGUpCiB7CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJp
c29uTW9kZTo6TGVzc1RoYW4pCkBAIC0yNTUsNTAgKzI4Myw0NyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgYmlnSW50Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1ZhbAogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQo
KSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChK
U0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25N
b2RlKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHBy
aW1WYWx1ZSA9IHYyOwotICAgICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAg
ICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChn
bG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFz
QmlnSW50KHYxKSwgYmlnSW50VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KIAot
ICAgICAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmln
SW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50
KHByaW1WYWx1ZSkpLCBjb21wYXJpc29uTW9kZSk7Ci0KLSAgICAgICAgZG91YmxlIG51bWJlclZh
bHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVS
ZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MSksIG51bWJlclZhbHVl
KSwgY29tcGFyaXNvbk1vZGUpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNCaWdJ
bnQzMigpICYmIHYyLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAoY29tcGFyaXNvbk1vZGUg
PT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAgICAgICAgICAgIHJldHVy
biB2MS5iaWdJbnQzMkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBB
U1NFUlQoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhh
bk9yRXF1YWwpOworICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPD0gdjIuYmln
SW50MzJBc0ludDMyKCk7CiAgICAgfQotICAgIAotICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7
Ci0gICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJ
bnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5n
KHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworI2VuZGlmCisKKyAgICBKU0JpZ0lu
dCogdjFIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAgICBKU0JpZ0ludCogdjJIZWFwQmlnSW50ID0g
bnVsbHB0cjsKKyAgICAvLyBGSVhNRTogaGF2ZSBzb21lIGZhc3QtaXNoIHBhdGggZm9yIGEgY29t
cGFyaXNvbiBiZXR3ZWVuIGEgc21hbGwgYW5kIGEgbGFyZ2UgYmlnLWludAorICAgIGlmICh2MS5p
c0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFwQmlnSW50KCk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAg
ICAgdjFIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJ
bnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2
MkhlYXBCaWdJbnQgPSB2Mi5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ZWxzZSBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBp
ZiAodjFIZWFwQmlnSW50ICYmIHYySGVhcEJpZ0ludCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludENv
bXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUodjFIZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQp
LCBjb21wYXJpc29uTW9kZSk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50KSB7CisgICAgICAgIGF1
dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCwgdjFIZWFwQmlnSW50LCB2Mik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0lu
dDo6Y29tcGFyZShiaWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwor
ICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21w
YXJpc29uTW9kZSk7CiAgICAgfQotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkK
LSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNC
aWdJbnQocHJpbVZhbHVlKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAot
ICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAorICAgIGF1dG8gY29t
cGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCwgdjJIZWFwQmlnSW50LCB2MSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgIC8vIEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhl
IHYyCi0gICAgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCA9IEpT
QmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBudW1iZXJWYWx1ZSk7CiAgICAg
aWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4p
CiAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29u
UmVzdWx0OjpHcmVhdGVyVGhhbjsKLQogICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8fCBjb21wYXJpc29uUmVzdWx0
ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKIH0KIApAQCAtMzU3LDcgKzM4
Miw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogCi0gICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJp
bmcyKSB7CisgICAgaWYgKHdhc05vdFN0cmluZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAgICAg
ICBpZiAocDEuaXNCaWdJbnQoKSB8fCBwMi5pc0JpZ0ludCgpKQogICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRDb21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBK
U0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKSk7CiAKQEAgLTQwNyw3ICs0MzIsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wganNMZXNzRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIp
IHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlm
IChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmln
SW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSArNDc3
LDM0OSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBqc0FkZE5vbk51bWJl
cihnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1
YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQor
Ly8gQmlnSW50MzJPcCBleHBlY3RzIGl0cyBvcGVyYW5kcyB1bmJveGVkLCBhbmQgcmV0dXJucyBp
dHMgcmVzdWx0IHVuYm94ZWQgYXMgd2VsbAordGVtcGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0ludE9w
ZXJhdGlvbiwgdHlwZW5hbWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBCaWdJbnQzMk9wPgor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGFyaXRobWV0aWNCaW5hcnlPcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9u
JiYgaGVhcEJpZ0ludE9wLCBEb3VibGVPcGVyYXRpb24mJiBkb3VibGVPcCwgQmlnSW50MzJPcCYm
IGJpZ0ludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGxlZnRO
dW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBsZWZ0TnVt
ZXJpYyA9IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xv
YmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNOdW1iZXIoKSAm
JiByaWdodE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRvdWJs
ZU9wKGxlZnROdW1lcmljLmFzTnVtYmVyKCksIHJpZ2h0TnVtZXJpYy5hc051bWJlcigpKSk7CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkgewor
ICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYg
KEpTVmFsdWUgcmVzdWx0ID0gYmlnSW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAg
ICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJ
bnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsKKyAgICAgICAgaWYgKHJpZ2h0TnVtZXJp
Yy5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGds
b2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkp
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkg
eworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAg
SlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBC
aWdJbnQoKSwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIH0gZWxzZSBpZiAocmlnaHROdW1l
cmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwg
cmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CiAgICAgfQorI2Vsc2UKKyAgICAodm9pZCkg
YmlnSW50MzJPcDsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHRO
dW1lcmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCBy
aWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICBy
ZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxk
b3VibGU+KHJpZ2h0TnVtZXJpYykpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAg
YXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUg
eworICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQz
Mk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiBy
ZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgLT0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJ
S0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51
bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0obGVmdCk7CisgICAgICAg
IFVOVVNFRF9QQVJBTShyaWdodCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9i
YWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnN1YiwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsK
IH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtd
IChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4g
bGVmdCAqIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBDaGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAg
ICAgICByZXN1bHQgKj0gcmlnaHQ7CisgICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgp
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAg
IFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICBy
ZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6
bXVsdGlwbHksIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIG11bHRpcGxpY2F0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUg
SlNWYWx1ZSBqc0RpdihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJs
ZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsKKyAgICB9
OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQp
IC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKCFyaWdodCkKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIGxlZnQgLyByaWdodCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0obGVmdCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyaWdodCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRo
bWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmRpdmlkZSwgZG91
YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gZGl2aXNpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUmVtYWluZGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7
CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBk
b3VibGUgeworICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQpOworICAgIH07CisgICAg
YXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAg
ICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIG1vcmUgY2xldmVyIGhlcmUuCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpyZW1haW5kZXIsIGRvdWJsZU9wLCBiaWdJ
bnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRl
ci4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNQb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJs
ZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8g
YmlnSW50MzJPcCA9IFtdIChpbnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAg
Ly8gRXhwb25lbnRpYXRpb24gb24gaW50ZWdlcnMgaXMgYm90aCBzb21ld2hhdCBzbG93IGluIHRo
ZSBiZXN0IGNhc2UsIGFuZCB2ZXJ5IGxpa2VseSB0byBvdmVyZmxvdy4KKyAgICAgICAgLy8gU28g
ZG9uJ3QgYm90aGVyIHRyeWluZyB0byBhdm9pZCBhIGhlYXAgYWxsb2NhdGlvbiBpbiB0aGF0IGNh
c2UuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0
aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpleHBvbmVudGlh
dGUsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGV4cG9uZW50aWF0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc0luYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBpZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVy
KG9wZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgKyAxKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50
MzIoKSkgKyAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5l
cyBtaWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisg
ICAgICAgIGlmIChuZXdWYWx1ZSA+IElOVF9NQVgpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9
CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwg
b3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmlj
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1i
ZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSAtIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBu
ZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKSAtIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxp
bmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24K
KyAgICAgICAgaWYgKG5ld1ZhbHVlIDwgSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAg
IH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0
LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNCaXR3aXNlTm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYu
dG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAg
IHJldHVybiBqc051bWJlcih+b3BlcmFuZE51bWVyaWMuYXNJbnQzMigpKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdp
c2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQor
CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgc2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgYm9vbCBpc0xlZnQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IGxlZnROdW1lcmljID0gdjEu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBpZiAobGVm
dE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCBsZWZ0SW50MzIgPSBsZWZ0TnVtZXJpYy5hc0ludDMyKCk7CisgICAgICAgIGludDMy
X3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkgJiAzMTsKKyAgICAgICAgaW50
MzJfdCByZXN1bHQgPSBpc0xlZnQgPyAobGVmdEludDMyIDw8IHJpZ2h0SW50MzIpIDogKGxlZnRJ
bnQzMiA+PiByaWdodEludDMyKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7Cisg
ICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMy
KCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJ
bnQzMiA9IGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpbnQzMl90IHJp
Z2h0SW50MzIgPSByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChy
aWdodEludDMyIDwgMCkgeworICAgICAgICAgICAgaXNMZWZ0ID0gIWlzTGVmdDsKKyAgICAgICAg
ICAgIHJpZ2h0SW50MzIgPSAtcmlnaHRJbnQzMjsKICAgICAgICAgfQogCi0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgLy8gVGhpcyBzdGQ6Om1pbiBpcyBhIGJpdCBoYWNreSwgYnV0IHJlcXVpcmVkIGJl
Y2F1c2UgaW4gQysrIGl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB0byBkbyBhIHNoaWZ0IHdoZXJl
IHRoZSByaWdodCBvcGVyYW5kIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGJpdC13aWR0aCBv
ZiB0aGUgbGVmdCBvcGVyYW5kLgorICAgICAgICBpZiAoIWlzTGVmdCkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGxlZnRJbnQzMiA+PiBzdGQ6Om1pbihy
aWdodEludDMyLCAzMSkpOworCisgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgbGVmdCBzaGlm
dCB3ZSBjYW4gb3ZlcmZsb3cuIEkgZGVhbCB3aXRoIHRoaXMgYnkgYWxsb2NhdGluZyBIZWFwQmln
SW50cy4KKyAgICAgICAgLy8gRklYTUU6IGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGRvIHNvbWV0
aGluZyBzbWFydGVyLCB0cnlpbmcgdG8gZG8gdGhlIGxlZnQgc2hpZnQgYW5kIGRldGVjdGluZyBz
b21laG93IGlmIGl0IG92ZXJmbG93ZWQuCisgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0lu
dCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0SW50MzIpOworICAgICAgICBKU0JpZ0lu
dCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0SW50MzIp
OworICAgICAgICBpZiAoaXNMZWZ0KQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJp
Z2h0SGVhcEJpZ0ludCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmln
SW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0
SGVhcEJpZ0ludCkpOwogICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNC
aWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQoKSkpIHsKKyAgICAgICAgYXV0byBlcnJv
ck1lc3NhZ2UgPSBpc0xlZnQgPyAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIgOiAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIjsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBoYXZlIGEgY2FzZSBmb3IgbGVmdCBpcyBI
ZWFwQmlnSW50IGFuZCByaWdodCBpcyBCaWdJbnQzMiwgaXQgc2VlbXMgZmFpcmx5IGxpa2VseSB0
byBvY2N1ciBmcmVxdWVudGx5LgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBKU0JpZ0ludCogbGVm
dEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbHNlCisg
ICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7
CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyNlbmRpZgorCisgICAgaWYgKGlzTGVmdCkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJ
bnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNC
aWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmln
aHRIZWFwQmlnSW50KSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0xTaGlmdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGJvb2wgaXNMZWZ0ID0gdHJ1ZTsKKyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0LCB2MSwg
djIsIGlzTGVmdCk7Cit9CiAKLSAgICBkb3VibGUgbGVmdFZhbHVlID0gIFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSByaWdodFZhbHVlID0gIFdURjo6Z2V0PGRvdWJs
ZT4ocmlnaHROdW1lcmljKTsKLSAgICByZXR1cm4ganNOdW1iZXIobGVmdFZhbHVlICogcmlnaHRW
YWx1ZSk7CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBib29sIGlzTGVmdCA9
IGZhbHNlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxPYmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsK
IH0KIAotaW5saW5lIGJvb2wgc2NyaWJibGVGcmVlQ2VsbHMoKQordGVtcGxhdGU8dHlwZW5hbWUg
SGVhcEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgSW50MzJPcGVyYXRpb24+CitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgYml0d2lzZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwg
SW50MzJPcGVyYXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0lu
dE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChs
ZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKGludDMyT3AobGVmdE51bWVyaWMuYXNJbnQzMigpLCByaWdodE51bWVy
aWMuYXNJbnQzMigpKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmlj
LmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBpbnQzMk9wKGxlZnROdW1lcmljLmJpZ0lu
dDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAvLyBG
SVhNRTogYWRkIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgLyBIZWFwQmlnSW50LCBhbmQgZm9yIEhl
YXBCaWdJbnQgLyBCaWdJbnQzMgorICAgIC8vIEluIG1hbnkgY2FzZXMgdGhlc2UgY291bGQgYmUg
bWFkZSBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXAtYWxsb2NhdGluZyB0aGUgc21hbGwgYmlnLWlu
dCBhbmQgZ29pbmcgdGhyb3VnaCB0aGUgZ2VuZXJpYyBwYXRoLgorICAgIC8vIEJ1dCBpdCBpcyBx
dWl0ZSB0cmlja3ksIG5vdCBsZWFzdCBiZWNhdXNlIEhlYXBCaWdJbnQgdXNlIGEgc2lnbiBiaXQg
d2hlcmVhcyBCaWdJbnQzMiB1c2UgMi1jb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgorI2VuZGlm
CisKKyAgICBpZiAoIShsZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0Jp
Z0ludCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNCaWdJbnQqIGxl
ZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFz
SGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVy
aWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5i
aWdJbnQzMkFzSW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZWxzZQor
ICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuYXNIZWFwQmln
SW50KCk7CisjZW5kaWYKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50T3Ao
Z2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiB9CiAKLSNk
ZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGludDMyT3AgPSBbXSAo
aW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJu
IGxlZnQgJiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBh
aXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgImFuZCIgYW5kIHJlLWJveCB0
aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLgorICAg
IHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50Ojpi
aXR3aXNlQW5kLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiJfcyk7Cit9CiAKLWlubGluZSBib29sIGlzU2Ny
aWJibGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdp
c2VPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29k
ZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIGF1dG8gaW50MzJP
cCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAg
ICByZXR1cm4gbGVmdCB8IHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5
LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAib3IiIGFuZCBy
ZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1
ZS4KKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0Jp
Z0ludDo6Yml0d2lzZU9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKIH0KIAotaW5saW5lIHZvaWQg
c2NyaWJibGUodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNCaXR3aXNlWG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IHNpemUgLyBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpOyBpLS07KSB7Ci0gICAgICAgIC8vIFVzZSBhIDE2LWJ5dGUgYWxpZ25lZCB2YWx1ZSB0
byBlbnN1cmUgdGhhdCBpdCBwYXNzZXMgdGhlIGNlbGwgY2hlY2suCi0gICAgICAgIHN0YXRpY19j
YXN0PEVuY29kZWRKU1ZhbHVlKj4oYmFzZSlbaV0gPSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9j
YXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKLSAgICB9CisgICAgYXV0byBpbnQzMk9wID0g
W10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJl
dHVybiBsZWZ0IF4gcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZv
ciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJ4b3IiIGFuZCByZS1i
b3ggdGhlbS4KKyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZSwg
YW5kIGp1c3QgcmVtZW1iZXIgdG8gZG8gYW4gb3Igd2l0aCAweDEyIGF0IHRoZSBlbmQgdG8gcmVz
dG9yZSB0aGUgdGFnCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYx
LCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VYb3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAneG9yJyBvcGVyYXRpb24uIl9zKTsKIH0KIAog
QUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbFdpdGhJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGluZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjZiZGVmMWNjZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5s
aW5lIGJvb2wgc2NyaWJibGVGcmVlQ2VsbHMoKQoreworICAgIHJldHVybiBBU1NFUlRfRU5BQkxF
RCB8fCBPcHRpb25zOjpzY3JpYmJsZUZyZWVDZWxscygpOworfQorCisjZGVmaW5lIFNDUklCQkxF
X1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApCisKK2lubGluZSBib29sIGlz
U2NyaWJibGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklC
QkxFX1dPUkQpKTsKK30KKworaW5saW5lIHZvaWQgc2NyaWJibGUodm9pZCogYmFzZSwgc2l6ZV90
IHNpemUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IHNpemUgLyBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpOyBpLS07KSB7CisgICAgICAgIC8vIFVzZSBhIDE2LWJ5dGUgYWxpZ25lZCB2YWx1ZSB0byBl
bnN1cmUgdGhhdCBpdCBwYXNzZXMgdGhlIGNlbGwgY2hlY2suCisgICAgICAgIHN0YXRpY19jYXN0
PEVuY29kZWRKU1ZhbHVlKj4oYmFzZSlbaV0gPSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0
PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCA1ZmE3MDEzY2I3
Zi4uZjE2YzAyYTc2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTI3OSw3ICsyNzksNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZQogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUp
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwogICAgIAot
ICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEJpZ0ludFR5cGUpCisgICAg
aWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUpCiAgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogCiAgICAgQVNTRVJU
KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWE5Mjk2ZGEyNjAuLjQ1ZWMwOTNjZGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICAgICBzZW50aW5lbE1hcEJ1
Y2tldCgpOwogICAgICAgICBzZW50aW5lbFNldEJ1Y2tldCgpOwogICAgIH0KLSAgICBiaWdJbnRD
b25zdGFudE9uZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVGcm9tKCp0aGlzLCAxKSk7Cisg
ICAgaGVhcEJpZ0ludENvbnN0YW50T25lLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
KnRoaXMsIDEpKTsKIAogICAgIFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9tU3RyaW5n
VGFibGUoZXhpc3RpbmdFbnRyeUF0b21TdHJpbmdUYWJsZSk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBkMzY2MGJiMDE3My4uOWVjZjE2Yjg0MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNzI3LDcgKzcyNyw3IEBAIHB1YmxpYzoKICAgICBBdG9t
U3RyaW5nVGFibGUqIGF0b21TdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbVN0cmlu
Z1RhYmxlOyB9CiAgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSYgc3ltYm9sUmVnaXN0cnkoKSB7IHJl
dHVybiBtX3N5bWJvbFJlZ2lzdHJ5OyB9CiAKLSAgICBTdHJvbmc8SlNCaWdJbnQ+IGJpZ0ludENv
bnN0YW50T25lOworICAgIFN0cm9uZzxKU0JpZ0ludD4gaGVhcEJpZ0ludENvbnN0YW50T25lOwog
CiAgICAgU3RydWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGZjNDM3OTMxOGM0Li44OTdi
YTg3M2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApA
QCAtMjIwMiw3ICsyMjAyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DYWxsV2l0aFN0YWNrU2l6ZShKU0dsb2JhbE9iamVjdCogZ2wKICAgICB1aW50OF90
KiB2bVN0YWNrRW5kID0gdm1TdGFja1N0YXJ0IC0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1Vz
YWdlOwogICAgIHB0cmRpZmZfdCBzaXplRGlmZiA9IHZtU3RhY2tFbmQgLSBlbmQ7CiAgICAgUkVM
RUFTRV9BU1NFUlQoc2l6ZURpZmYgPj0gMCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYg
PCBVSU5UX01BWCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNp
emVEaWZmKSA8IFVJTlRfTUFYKTsKIAogICAgIE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNh
Z2UoKSA9IG9yaWdpbmFsTWF4UGVyVGhyZWFkU3RhY2tVc2FnZSArIHNpemVEaWZmOwogICAgIGhl
bHBlci51cGRhdGVWTVN0YWNrTGltaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjgyOWFjMTA0Li5kNjMyMjA0MGZh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNC0wNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9y
aXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgYW4gaW5saW5lZCByZXByZXNlbnRh
dGlvbiBpbiBKU1ZhbHVlIG9mIHNtYWxsIEJpZ0ludHMgKCJCaWdJbnQzMiIpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBVU0UoQklHSU5UMzIp
IGZsYWcuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKwogMjAyMC0wNC0wOCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6UGVyc2lzdGVu
Y2U6OlZlY3RvckNvZGVyIGFuZCBJUEM6OlZlY3RvckFyZ3VtZW50Q29kZXIgc2hvdWxkIHVzZSBj
aGVja2VkIGFyaXRobWV0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDM2OTY0N2U4YjlhLi5kNmVm
OGQ0ZTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5LDEwIEBACiAjZW5kaWYK
ICNlbmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxV
RTMyXzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgVVNFX0JJR0lOVDMyIDEK
KyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBtb3JlIHNwZWNpZmljIGlm
IGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8qIFVzZSBfX2J1aWx0aW5f
ZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lmIENPTVBJTEVSKEdDQ19D
T01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzCmluZGV4IDdiZGE2MTc3ZDY0Li4yMmNjNjM4OWJhYyAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC03MDIsNiArNzAyLDE0IEBAIGRlZiBydW5CaWdJbnRFbmFi
bGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJiaWctaW50LWVuYWJs
ZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3Bl
Y2lmaWNPcHRpb25zKSkKIGVuZAogCitkZWYgcnVuQmlnSW50RW5hYmxlZE5vSklUKCpvcHRpb25h
bFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtbm9qaXQiLCAi
LS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUpJVD1mYWxzZSIsICpvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpCitlbmQKKworZGVmIHJ1bkJpZ0ludEVuYWJsZWRCYXNlbGluZSgqb3B0aW9uYWxU
ZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmlnLWludC1lbmFibGVkLWJhc2VsaW5lIiwg
Ii0tdXNlQmlnSW50PXRydWUiLCAiLS11c2VERkdKSVQ9MCIsICpvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJVCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNP
cHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2ppdCIsICooRlRMX09QVElPTlMgKyBOT19D
SklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCg==
</data>
<flag name="review"
          id="411340"
          type_id="1"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396582</attachid>
            <date>2020-04-15 15:50:23 -0700</date>
            <delta_ts>2020-04-15 16:43:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>404413</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTkyNGZkMjFhMGIuLmJmOWJkN2RmYjk1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wNC0xNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgW0VDTUEtNDAyXSBFeHRlbnNpb24gdmFsdWVzIHNob3VsZCBkZWZhdWx0IHRv
IHRydWUsIGNhbm9uaWNhbGl6ZSB3aXRob3V0ICItdHJ1ZSIKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zZTUxMGI5ZDg5NyAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWRpdmlzaW9uLmpzCkBAIC0xLDQgKzEsNSBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKy8vQCBy
dW5CaWdJbnRFbmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IFJvYmluIFRlbXBs
ZXRvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0
aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KQEAgLTE0LDcgKzE1LDcg
QEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1
ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1dCBzaG91
bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkVEQ0JB
OTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
ZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQt
c2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2JhNDEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVl
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVl
LmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24g
KGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVj
dGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9IGV4cGVj
dGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2lj
YWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJs
ZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBuKSB7
CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7Cisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIgKyBuKTsK
ICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChhKSB7CiBu
b0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykg
ewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNh
bE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUpOwotICAg
IGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgx
MG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNlLCAxbik7
CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0KGxvZ2lj
YWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwpp
bmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1vZC1qaXQu
anMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAKIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9kRm9sZGlu
ZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAgKyAiICUg
IiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAsICJbTnVt
YmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0IHIgPSBi
aWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEwbiwgIi0o
IiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZhbHVlKHIs
IC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiArIHIpOwog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxpY2F0aW9uLmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5qcwppbmRleCAzZWNkNjM2ZDdm
OC4uN2NlNWFjZmZjZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbXVsdGlw
bGljYXRpb24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5q
cwpAQCAtMSwxOCArMSwxOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKy8vQCBydW5CaWdJbnRF
bmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IFJvYmluIFRlbXBsZXRvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIAotYXNzZXJ0ID0gewotICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChpbnB1
dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKLSAgICB9
Ci19OworZnVuY3Rpb24gdGVzdE9uZU11bCh4LCB5LCB6KSB7CisgICAgbGV0IHJlc3VsdCA9IHgg
KiB5OworICAgIGlmIChyZXN1bHQgIT09IHopCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29t
cHV0aW5nICIgKyB4ICsgIiAqICIgKyB5ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBp
bnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgeik7Cit9CiAKIGZ1bmN0aW9uIHRlc3RNdWwoeCwg
eSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAqIHksIHosIHggKyAiICogIiArIHkgKyAi
ID0gIiArIHopOwotICAgIGFzc2VydC5zYW1lVmFsdWUoeSAqIHgsIHosIHkgKyAiICogIiArIHgg
KyAiID0gIiArIHopOworICAgIHRlc3RPbmVNdWwoeCwgeSwgeik7CisgICAgdGVzdE9uZU11bCh5
LCB4LCB6KTsKIH0KIAogdGVzdE11bCgweEZFRENCQTk4NzY1NDMyMTBuLCAweEZFRENCQTk4NzY1
NDMyMTBuLCAweEZEQkFDMDk3QzhEQzVBQ0NERUVDNkNEN0E0NEE0MTAwbik7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKaW5kZXggNGU1OGNhNjA3NDAu
LmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNo
aWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1n
ZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgSm9z
aCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBi
eSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vIE1vZGlmaWVk
IGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsKLSAg
ICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworZnVu
Y3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZhciBy
ZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1bHRl
ZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAotYXNz
ZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAg
ICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2Fn
ZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRTaGlm
dCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwg
LTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZu
LCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRl
c3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZu
LCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jhbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEy
OW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7CisgICAg
dGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIDNu
LCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0xbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI3
biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZu
LCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAtMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdo
dFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIC0w
eDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVWYWx1
ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIx
MDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09PSAw
YjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4sICIw
YjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+
IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
MGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOG4s
IDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjhu
ID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIweDI0
Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMy
biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAg
IjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09IDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAot
ICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAx
MjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJuLAot
ICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0g
MHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4gPj4g
LTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4sICIt
NW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwgLTB4
MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAx
biwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDJu
LCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gM24s
IC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAtMTI4
biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4biA9
PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZh
bHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgyNDZu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZu
ID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMHgy
NDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4g
Pj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAw
MDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02
NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1biIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwKLSAg
Ii0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09IC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhu
LCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEyY24s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9
PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92
ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRmZDYgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcworKysgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMKQEAgLTEsOCArMSw4IEBACiAv
L0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFs
c2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBhc3NlcnQoaW5wdXQsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5jdGlvbiBmb28obykgewpAQCAt
MTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9JbmxpbmUoZm9vKTsKIAogZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGZvbygzbikgPT09ICIzIik7
CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUt
bnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4uODI1ZTg1ZDZiNjEgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIuanMKQEAgLTU5LDE3ICs1OSwx
NyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsKICAgICAgICAgICAgIG5vSW5s
aW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KTsKIAogICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgICAgICAgICAgICAg
IGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9KSAh
PSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljJHt0
ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpYyR7dGVzdENhc2VJ
bmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9t
b3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT0gJHtsbGludFJl
c3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7
dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RD
YXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhp
Y1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0pICE9ICR7bGxpbnRSZXN1bHR9
KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNSaWdodENvbnN0YW50JHt0ZXN0
Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUlu
ZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RQb2x5bW9ycGhpYygke2xl
ZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAgICAgICAgICAgICAgICAgICB0
aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9KSI7CisgICAgICAgICAgICAg
ICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0sICR7b3BlcmF0
b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50UmVzdWx0fSkiOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICArK3Rlc3RDYXNlSW5kZXg7CiAg
ICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMK
aW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTgzLDcgKzgzLDgg
QEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0
Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAo
Y2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVxdWFsT3V0
cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVmdENhc2VJbmRl
eF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkzLDcgKzk0LDggQEAgZnVuY3Rp
b24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0
ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4
XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTogIiAr
IGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1z
dHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4OSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAgLTMw
LDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZhciBy
ZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9IGlu
ZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09IGV4
cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cisg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4cGVj
dGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlzc2lu
Zy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9t
aXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVhN2Q3
M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhj
ZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21p
c3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEsOCBA
QAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScp
OworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScp
OwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJvcGUK
KyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU4YzFkOGUxZGNjLi40ZjE0NWVmZTg2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTg2LDYgKzk4Niw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmgKICAgICBydW50aW1lL1Njb3BlT2Zmc2V0LmgKICAgICBydW50
aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKKyAgICBydW50aW1lL1NjcmliYmxlLmgKICAgICBy
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZmYyNGZjMmE2ZTIuLmNiODE2ZWEzNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzODcgQEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24g
aW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0byBv
cHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFsbCAo
MzIgYml0IG9yIGxlc3MpLgorICAgICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGludG8g
SlNWYWx1ZSBvbiA2NC1iaXQgcGxhdGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBvZiBh
IEpTQmlnSW50LgorICAgICAgICBUaGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhYWDpY
WFhYOjAwMTIKKyAgICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9mIHRo
ZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRo
IGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAtIEl0
IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBi
aXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNl
ZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQgdG8g
ZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJl
Y2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1
c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisKKyAg
ICAgICAgVGhpcyBlbnRpcmUgY2hhbmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRvIG1h
a2UgaXQgZWFzaWVyIHRvIGRpc2FibGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4KKyAg
ICAgICAgSXQgc2hvdWxkIGFsc28gbWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYgYSBn
aXZlbiBidWcgY29tZXMgZnJvbSBpdCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAg
IE5vdGUgdGhhdCBpbiB0aGlzIHBhdGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMgd2hl
biBwYXJzaW5nIEJpZ0ludCBjb25zdGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4gQWRk
IG9yIEJpdE9yKSBwcm9kdWNlIGEgQmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5kcyBh
cmUgQmlnSW50MzIsCisgICAgICAgIGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIgZnJv
bSBmb3IgZXhhbXBsZSB0aGUgc3Vic3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBoZWFw
LWFsbG9jYXRlZCBKU0JpZ0ludHMsIGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJpdHMu
CisgICAgICAgIEFzIGEgcmVzdWx0LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJlIGhl
YXAtYWxsb2NhdGVkIG9yIGlubGluZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbmNsdWRlcyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBwYXRo
cywgd2hpY2ggYXJlIG5vdyBncm91cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAgICAg
ICBCZWNhdXNlIHRoaXMgaW5jcmVhc2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWduaWZp
Y2FudGx5LCBJIHNwbGl0IHRoZSBwYXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9ubHkg
dXNlZCBieSB0aGUgR0MgaW50byBTY3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21waWxl
IHRpbWVzLgorCisgICAgICAgIEluIHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVzZUtp
bmRzIGZvciBCaWdJbnRzOiBIZWFwQmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55QmlnSW50
VXNlLgorICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIGtub3cgdGhhdCB3ZSBh
cmUgcmVjZWl2aW5nIEJpZ0ludHMsIGJ1dCBzcGVjdWxhdGlvbiBpbmRpY2F0ZXMgYSBtaXggb2Yg
aGVhcC1hbGxvY2F0ZWQgYW5kIHNtYWxsIChpbmxpbmVkKSBiaWctaW50cy4KKworICAgICAgICBV
bmZvcnR1bmF0ZWx5LCBhIG5haXZlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgcGF0Y2ggc2lnbmlm
aWNhbnRseSByZWdyZXNzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIFN0cmljdEVxIChhbmQgaXRzIHZh
cmlhbnRzKSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHRydWUgdGhhdCBhIGNlbGwgYW5kIGEgbm9uLWNl
bGwgY2Fubm90IGJlIGVxdWFsLgorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGNvZGUg
d2FzIGp1bXBpbmcgdG8gYSBzbG93IHBhdGggaWYgZWl0aGVyOgorICAgICAgICAtIGF0IGxlYXN0
IG9uZSBvcGVyYW5kIGlzIGEgZG91YmxlCisgICAgICAgIC0gb3IgYm90aCBvcGVyYW5kcyBhcmUg
Y2VsbHMKKyAgICAgICAgTm93LCBpdCBhbHNvIG5lZWRzIHRvIGp1bXAgdG8gdGhlIHNsb3cgcGF0
aCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLgorICAgICAgICBUbyByZWNvdmVyIHRoaXMgcGVy
Zm9ybWFuY2UgY29zdCwgSSBzaWduaWZpY2FudGx5IHJld3JvdGUgdGhpcyBjb2RlLCBmcm9tCisg
ICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSB7CisgICAgICAgICAg
ICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoISBsZWZ0IGlz
IEludDMyKSB7CisgICAgICAgICAgICBpZiAobGVmdCBpcyBOdW1iZXIpCisgICAgICAgICAgICAg
IGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCEgcmlnaHQgaXMgSW50
MzIpIHsKKyAgICAgICAgICAgIGlmIChyaWdodCBpcyBOdW1iZXIpCisgICAgICAgICAgICAgIGdv
dG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQK
KyAgICAgICAgVG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICBpZiAobGVmdCBpcyBEb3VibGUg
fHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAg
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
aWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93
UGF0aAorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgdG8g
YmUgZmFzdGVyIHRoYW4ganVzdCByZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSBieSBhbiB8fCwgYmVjYXVzZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChsZWZ0
IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVjZSB0
aGUgcHJlc3N1cmUgb24gdGhlIGJyYW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpldFN0
cmVhbTIgdGVzdHMgYXBwZWFyIHRvIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdobHkg
bmV1dHJhbCB3aGlsZSBpdCB3YXMgYSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0aGlz
IHRyaWNrLCBidXQgdGhlIG51bWJlcnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRvIGRv
IG1vcmUgbWVhc3VyZW1lbnRzIGJlZm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAg
SSBkb24ndCB5ZXQgaGF2ZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9uIGEg
QmlnSW50IGJlbmNobWFyaywgSSB3aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWluZyB0
byBsYW5kIGl0LCBidXQgSSdkIGxpa2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5
cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAg
IChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29uc3Qp
OgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0
aFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlTm9u
SW50MzIpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQp
OgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAgICAg
IChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAg
IChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3Vs
YXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAg
ICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6Cisg
ICAgICAgIChKU0M6OmxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRp
b25zKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlND
Ojppc0JpZ0ludDMyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dD
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cFRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051bWVy
aWMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFu
ZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJ
bnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgor
ICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmlj
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRF
cXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50
MzJPcGVyYW5kOjplZGdlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6Om5vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJp
Z0ludDMyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQz
Mk9wZXJhbmQ6OnVzZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlQmlnSW50MzJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVG
aWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAg
ICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9u
VmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFs
dWVzLmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0
UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFy
aXRoQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVZhbHVlQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUJpdFVSU2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlSXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpsb3dIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bG93QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjppc0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
aXNOb3RCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnVu
Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hC
aWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QW55
QmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50
VW5rbm93bldoZXRoZXJDZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNOb3RIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGls
ZVN0dWIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAg
IChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmg6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJn
cyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJLbm93
bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZkhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5ib3hC
aWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX25lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVt
cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2Jp
Z19pbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6
CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAg
ICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9C
aWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAgICAg
KEpTQzo6Y2FsbEJpZ0ludENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9C
aWdJbnRPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OnRvVGhpc0JpZ0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJv
dG9GdW5jVG9TdHJpbmdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBkYXRl
QXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQ
cm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5nVG9C
aWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmRlYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjplcXVhbHNUb051bWJlcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb0lu
dDMyKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFzSGVh
cEJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnRvT2JqZWN0U2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Ro
aXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90
b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1p
bmdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFja3Ry
YWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hlYXBC
aWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6aXNQcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVyaWMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Qcmlt
aXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvQm9v
bGVhbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0
b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlw
ZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6
OmNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29t
cGFyZSk6CisgICAgICAgIChKU0M6OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0VxKToK
KyAgICAgICAgKEpTQzo6YXJpdGhtZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNTdWIp
OgorICAgICAgICAoSlNDOjpqc011bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAgICAg
KEpTQzo6anNSZW1haW5kZXIpOgorICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChKU0M6
OmpzSW5jKToKKyAgICAgICAgKEpTQzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VO
b3QpOgorICAgICAgICAoSlNDOjpzaGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToKKyAg
ICAgICAgKEpTQzo6anNSU2hpZnQpOgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3ApOgor
ICAgICAgICAoSlNDOjpqc0JpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VPcik6
CisgICAgICAgIChKU0M6OmpzQml0d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3JpYmJs
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuaC4KKyAgICAgICAgKEpTQzo6c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlNDOjpp
c1NjcmliYmxlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JMb29r
dXBQcmltaXRpdmVJbXBsKToKKwogMjAyMC0wNC0xNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0VDTUEtNDAyXSBFeHRlbnNpb24gdmFsdWVzIHNo
b3VsZCBkZWZhdWx0IHRvIHRydWUsIGNhbm9uaWNhbGl6ZSB3aXRob3V0ICItdHJ1ZSIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI1MDE5ZmQ5MDUuLjZhYWIxMjAwZWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY3LDYgKzg2Nyw3IEBACiAJCTJBRDg5MzJC
MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAv
KiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQz
NDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8q
IFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAw
QUEzNENFIC8qIFNjcmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVh
ZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
OTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJ
CTMzQTkyMEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEy
QzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3
OSAvKiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmgg
Ki87IH07CkBAIC0zNTE0LDYgKzM1MTUsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVE
RjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzM3NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2
ZUV4cHJlc3Npb25UcmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2Np
YXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2
NEEyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMu
aDsgcGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNF
bGltaW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU2Miw2ICs3NTY0LDcgQEAKIAkJ
CQkwRkUwNTAyMDFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywK
IAkJCQkwRkUwNTAyMTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJ
CTBGRTA1MDIyMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTEx
QjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNF
OTYwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAy
RDc5MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQy
Mzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTI4LDYgKzg5MzEsNyBAQAog
CQkJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxv
Y2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRD
RSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYz
OTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEw
NjMyMDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
MENCNUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5k
ZXggYzEwMDI0MDRlZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1t
ZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBo
YXMgYmVlbiBlbWl0dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVu
ZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAg
ICAgIC8vIFRoZSB3cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRl
cnMgYWJvdmUgd2lsbCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlh
dGU4KGludCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJpdGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFBy
b2ZpbGUuY3BwCmluZGV4IGZlYTY2NzQ1YjYyLi5mMmMwNTg0ZDQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJl
c3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9k
ZSBtb2RlKQordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1
bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBU
YWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkg
JiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkK
KyAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVy
aWMoKSAmJiAhc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0lu
dDMyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9u
ZTsKQEAgLTQ4LDkgKzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVt
aXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3RE
b3VibGUubGluaygmaml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90QmlnSW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVy
KHJlZ3MsIHRlbXBHUFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBw
ZW5kKGppdC5qdW1wKCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAg
ICh2b2lkKSB0ZW1wR1BSOworI2VuZGlmCisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RDZWxsKHJlZ3MsIG1vZGUpKTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGpp
dCk7CisgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdz
LnBheWxvYWRHUFIoKSkpOworICAgIGVtaXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5h
cHBlbmQoaml0Lmp1bXAoKSk7CiAKICAgICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwx
OSArOTcsMzkgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51
bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJp
dGZpZWxkVHlwZT4KLWJvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQoKSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldEJpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0Zmll
bGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9i
aXRzICYgbWFzaykgIT0gbWFzazsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRm
aWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlw
ZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRz
ICYgbWFzaykgIT0gbWFzazsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgot
dm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBl
cnMmIGppdCkgY29uc3QKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRI
ZWFwQmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0
U2V0QmlnSW50KCkpCi0gICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRS
ZXN1bHRzOjpCaWdJbnQpOworICAgIGlmIChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAg
ICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0lu
dCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5
cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0Nh
bGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigp
KQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6Qmln
SW50MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxs
SGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgs
MTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJv
ZmlsZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1
Mk92ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQu
cHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2Vy
dmVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFw
QmlnSW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5w
cmludChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwi
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwy
NCBAQCBwdWJsaWM6CiAgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAg
IEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAx
IDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBC
aWdJbnQgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYs
CiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAg
ICBPYnNlcnZlZFJlc3VsdHMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1
bHRzKHVpbnQ4X3QgYml0cykKICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29s
IGRpZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1pl
cm9Eb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9v
bCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3Vi
bGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYg
Tm9uTnVtZXJpYzsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0
cyAmIEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0
cyAmIChIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJp
Z0ludCgpIHsgcmV0dXJuIG1fYml0cyAmIEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2Vy
dmVCaWdJbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRP
YnNlcnZlSW50MzJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0K
ICAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50
NTJPdmVyZmxvdzsgfQogCkBAIC0xMDksMTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBk
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygp
LmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1l
cmljKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVy
aWMoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2Vy
dmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhl
YXBCaWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVh
cEJpZ0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVy
biBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5k
aWRPYnNlcnZlSW50MzJPdmVyZmxvdygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92
ZXJmbG93KCk7IH0KIAogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBz
ZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0
T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJv
RG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2Jz
ZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2Vy
dmVkSGVhcEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0K
KyAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6
OkJpZ0ludDMyKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2
ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93
KTsgfQogCkBAIC0xMjcsOCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUy
T3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJl
c3VsdHM6Ok5lZ1plcm9Eb3VibGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0
cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50
MzIoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZh
bHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1
bHRzOjpIZWFwQmlnSW50OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwy
MiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93
IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBp
dCBzZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9u
LW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1Zh
bHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQg
ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1w
R1BSLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRz
IChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlKS4KICAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2
b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5v
bk51bWVyaWMKICAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNl
dHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0Owot
ICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1p
dFNldEhlYXBCaWdJbnQoKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxs
SGVscGVycyYpIGNvbnN0OworCisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25z
dDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0Nh
bGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpA
QCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90
OwogY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0
aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4g
YSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9
IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5
cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHBy
IFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0
aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBl
U2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6
IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0
UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2Zp
bGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fz
c2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQg
KyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBp
biB0aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFz
dFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhC
aXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRl
cnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lh
bEZhc3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlB
cml0aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBi
aXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJl
IGEgaGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCmluZGV4IDFmNTY2OTRjZTcwLi4yZWMzNzg2ZjllMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMjksNiArMzI5
LDcgQEAgb3BfZ3JvdXAgOlVuYXJ5T3AsCiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwK
ICAgICAgICAgOmlzX2Jvb2xlYW4sCiAgICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19i
aWdfaW50LAogICAgICAgICA6aXNfb2JqZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGws
CiAgICAgICAgIDppc19mdW5jdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmlu
ZGV4IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5k
ZXggNjdmMmNlYzBhODAuLmVlYTVmYTRjM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJl
Z2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJh
bmQpCiAgICAgVVNFUyhPcElzQm9vbGVhbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIs
IG9wZXJhbmQpCisgICAgVVNFUyhPcElzQmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09i
amVjdCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAg
VVNFUyhPcElzQ2VsbFdpdGhUeXBlLCBvcGVyYW5kKQpAQCAtNDIzLDkgKzQyNCwxMCBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNE
c3QpCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRz
dCkKLSAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRl
ZmluZWRPck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhP
cElzTnVtYmVyLCBkc3QpCisgICAgREVGUyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElz
T2JqZWN0LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhP
cElzQ2VsbFdpdGhUeXBlLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwLi4zZmZjMmMzOTljZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTYwLDcgKzYwLDYgQEAK
ICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVE1hdGhJQy5oIgotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1
ODhkYmZmNi4uMjA3NWRhNzA1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EYXRhRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RhdGFGb3JtYXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NCwxMiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWlu
dDhfdCB7CiAgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0g
NiwKICAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAg
ICBEYXRhRm9ybWF0QmlnSW50MzIgPSA4LAorICAgIERhdGFGb3JtYXRKUyA9IDE2LAogICAgIERh
dGFGb3JtYXRKU0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLAogICAgIERh
dGFGb3JtYXRKU0RvdWJsZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsCiAgICAg
RGF0YUZvcm1hdEpTQ2VsbCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLAogICAgIERh
dGFGb3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwKLSAg
ICAKKyAgICBEYXRhRm9ybWF0SlNCaWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRC
aWdJbnQzMiwKKwogICAgIC8vIE1hcmtlciBkZWxpbWluYXRpbmcgb3JkaW5hcnkgZGF0YSBmb3Jt
YXRzIGFuZCBPU1Itb25seSBkYXRhIGZvcm1hdHMuCiAgICAgRGF0YUZvcm1hdE9TUk1hcmtlciA9
IDMyLCAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODli
OS4uODMwZjZkNjc1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3
ICs0Niw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZv
aWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAordm9pZCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICBjYXNlIE5vbmU6CkBAIC02NywxMiArNjcsMTIg
QEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0Nh
bGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVW5h
cnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0
T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAg
IHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQ
UiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIEJpbmFyeUFyaXRo
UHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2
ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUuYmlu
YXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCmluZGV4IGU4YjY1ZWFkNDZlLi4zYWJhMWEzMmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVJbmRleC5oIgogI2lu
Y2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlRhZ1Jl
Z2lzdGVyc01vZGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgzLDcgKzg0LDggQEAgcHVi
bGljOgogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X2tpbmQgIT0gTm9uZTsgfQogCi0gICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJz
JiwgSlNWYWx1ZVJlZ3MpIGNvbnN0OworICAgIC8vIFRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgaXMg
b25seSBuZWVkZWQgb24gNjQtYml0cyBidWlsZHMgKGZvciB0ZXN0aW5nIEJpZ0ludDMyKS4KKyAg
ICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVn
IHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggMTA1M2JhNTJi
NTQuLjc3MWM3OWI4NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzksMTEgKzIzOSw2IEBAIHZvaWQgZHVtcFNwZWN1
bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
ICAgICAgICAgc3RyT3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaXNUb3AgPSBmYWxzZTsKLQotICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50KQotICAg
ICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgaXNUb3AgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVlID09IFNwZWNJbnQz
Mk9ubHkpCkBAIC0yNzgsNyArMjczLDIzIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3Ry
ZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KLSAgICAKKworICAgIGlmICgodmFsdWUgJiBT
cGVjQmlnSW50KSA9PSBTcGVjQmlnSW50KQorICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICYgU3Bl
Y0JpZ0ludDMyKQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlmICh2YWx1ZSAm
IFNwZWNIZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmlnSW50Iik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgfQorI2VuZGlm
CisKICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQogICAgICAgICBzdHJPdXQu
cHJpbnQoIkRvdWJsZUltcHVyZU5hTiIpOwogICAgIApAQCAtNDMxLDcgKzQ0Miw3IEBAIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbykKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5m
byA9PSBKU0JpZ0ludDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAg
ICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFs
T2JqZWN0OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC00OTks
OCArNTEwLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBpZiAoc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4g
U3BlY1N5bWJvbDsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJ
bnRUeXBlKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKKyAgICAgICAgcmV0dXJuIFNwZWNI
ZWFwQmlnSW50OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2
ZWRBcnJheVR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVy
biBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01
MzYsNiArNTQ3LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1
ZSB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAg
IHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0lu
dDMyKCkpCisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2Vs
bCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7
CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQpAQCAtNTk1LDggKzYwOCw4IEBAIE9wdGlvbmFs
PFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAg
ICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIGNhc2UgU3ltYm9sVHlwZToKICAgICAgICAgcmV0
dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgotICAgICAgICByZXR1cm4gU3Bl
Y0JpZ0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0hl
YXBCaWdJbnQ7CiAgICAgY2FzZSBBcnJheVR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjQXJyYXk7
CiAgICAgY2FzZSBEZXJpdmVkQXJyYXlUeXBlOgpAQCAtNjMyLDYgKzY0NSwxMCBAQCBTcGVjdWxh
dGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhT
cGVjdWxhdGVkVHlwZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0
eXBlIHw9IFNwZWNTdHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAg
IHR5cGUgfD0gU3BlY0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0
ODJkLi5kZjBiOTFhNzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC05OCwxMiArOTgsMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PAogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhl
ciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3Bl
Y01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090
aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZp
bmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVt
cHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jp
Z0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Rh
dGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNIZWFwQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAKK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludDMyICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHNtYWxsIEJpZ0ludCB0
aGF0IGlzIGlubGluZSB0aGUgSlNWYWx1ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JpZ0ludDMyIHwg
U3BlY0hlYXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRh
Vmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
UHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1i
b2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3Mg
YW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8
IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJl
Y3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNw
ZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3Bl
Y01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFr
U2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmpl
Y3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5n
IGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNP
YmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmln
SW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2Vs
bCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRo
ZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFO
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwg
U3BlY0NlbGxPdGhlciB8IFNwZWNIZWFwQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNwZWNCeXRlY29k
ZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0
IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3Zl
LCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJl
c3BvbmRzIHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNCeXRlY29kZVRvcCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJdCBjYW4gYmUg
YW55dGhpbmcgdGhhdCBieXRlY29kZSBjb3VsZCBzZWUgcGx1cyBleG90aWMgZW5jb2RpbmdzIG9m
IG51bWJlcnMuCiAKQEAgLTE4NSw5ICsxODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1N5
bWJvbDsKIH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisKK2lu
bGluZSBib29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSGVhcEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wg
aXNCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY0JpZ0ludDsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVj
QmlnSW50KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2M2QzNjJjYWMxOS4uNDRl
MTVjMjA2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzAzLDcgKzE3MDMsMTEgQEAgYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgewogICAgICAgICAgICAgICAgIHJl
d2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0
LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUpOworI2Vsc2UKKyAg
ICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1
ZSwgSGVhcEJpZ0ludFR5cGUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKQEAg
LTI5MTEsNyArMjkxNSw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENv
bnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ4CiAgICAgcmV0dXJuIG1f
YmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgs
IHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWduID8gSlNCaWdJbnQ6OlBhcnNl
SW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQ7Ci0gICAg
ICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2
bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2Rl
OjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAgICAgIEpTVmFsdWUgYmlnSW50
SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJp
bmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBw
YXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAg
ICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ1MzRj
ZDgyOGFhLi40MDM3NGUxNWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA5MCw3ICsxMDkwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3Vi
bGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1h
cDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OwotICAg
ICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwg
SlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8
QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+PjsKICAg
ICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCAwYTRhMTFmOWI0MC4uZThmMmM5N2E5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUg
IlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCkBAIC0yMTUsNyAr
MjE0LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBF
Q01BTW9kZSBlY21hTW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNU
b1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2go
WyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5m
byB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUu
aXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09
IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CisgICAgICAgICAgICBB
U1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlw
ZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSk7
CiAgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKQEAgLTUwMyw3
ICs1MDIsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2Rl
LCBTcGVjQmlnSW50MzIpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpA
QCAtNTMzLDcgKzU0MCwxNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAo
aGFuZGxlQ29uc3RhbnRCaW5hcnlCaXR3aXNlT3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAg
ICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIGJpbmFyeVVzZUtpbmQgbWVhbnMgdGhhdCB3ZSBjYW5u
b3Qgc3BlY2lhbGl6ZSB0byAoZm9yIGV4YW1wbGUpIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQg
YW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisjZWxzZQorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZv
ck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkBAIC03MjMsMTEgKzczOSwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogCiAgICAgY2FzZSBWYWx1ZVN1YjoKICAgICBjYXNlIFZhbHVlQWRkOiB7Ci0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRV
c2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0gICAgICAgIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICBjbG9iYmVyV29y
bGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCBTcGVjU3RyaW5n
IGhlcmUgZm9yIFZhbHVlU3ViPyBJdCBzZWVtcyBsaWtlIHdlIG9ubHkgbmVlZCBpdCBmb3IgVmFs
dWVBZGQuCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5nIHwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CkBAIC04ODcsNiArOTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgVmFsdWVOZWdhdGU6IHsKKyAgICAgICAgLy8gRklYTUU6IHdlIGNvdWxk
IGRvIG11Y2ggc21hcnRlciB0aGluZ3MgZm9yIEJpZ0ludHMsIHNlZSBWYWx1ZUFkZC9WYWx1ZVN1
Yi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICBicmVhazsKQEAgLTk1
OSw3ICs5NzksMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CiAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgdHlwZU9m
RG91YmxlSW5jT3JEZWMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJp
Z0ludFVzZToKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAg
ICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNCaWdJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC05NzUs
NyArOTk5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNWYWx1ZSBjaGls
ZFkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGRY
ICYmIGNoaWxkWSAmJiBjaGlsZFguaXNOdW1iZXIoKSAmJiBjaGlsZFkuaXNOdW1iZXIoKSkgewog
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIGBkaWRGb2xkQ2xvYmJlcldvcmxkYCBoZXJl
IGJlY2F1c2UgdGhpcyBwYXRoIGlzIG9ubHkgcG9zc2libGUKLSAgICAgICAgICAgIC8vIHdoZW4g
bm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBCaWdJbnRVc2UsIGNo
aWxkcmVuIHdpbGwgYmUKKyAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5
cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBBbnlCaWdJbnRVc2Ugb3IgZnJpZW5kcywgY2hpbGRyZW4g
d2lsbCBiZQogICAgICAgICAgICAgLy8gY2xlYXJlZCBieSBgQWJzdHJhY3RJbnRlcnByZXRlcjo6
ZXhlY3V0ZUVmZmVjdHNgLgogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOwogICAg
ICAgICAgICAgLy8gT3VyIGJveGluZyBzY2hlbWUgaGVyZSBtYXRjaGVzIHdoYXQgd2UgZG8gaW4g
b3BlcmF0aW9uVmFsdWVQb3cuCkBAIC05ODMsNyArMTAwNyw5IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShu
b2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTMsNyArMTAxOSwx
MCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2UgVmFsdWVNdWw6
IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAg
ICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBWYWx1ZVN1Yj8K
KyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBl
bHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZCgpOwpAQCAtMTA1Nyw3ICsxMDg2LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OwpAQCAtMTM4MSw2ICsxNDEyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1i
ZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBj
YXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC0xNDA5LDYgKzE0NDEs
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgY2FzZSBJc051bWJlcjoK
ICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUo
KS5pc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IElzQmlnSW50OgorICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihj
aGlsZC52YWx1ZSgpLmlzQmlnSW50KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChjaGlsZC52
YWx1ZSgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2Myw3ICsxNTk4LDIyIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgaWYg
KCEoY2hpbGQubV90eXBlICYgflNwZWNCaWdJbnQpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICBjb25zdGFudFdh
c1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNCaWdJbnQpKSB7CisgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CisgICAgICAgICAgICAg
ICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogaWYgdGhlIFNwZWN1bGF0ZWRUeXBlIGlu
Zm9ybXMgdXMgdGhhdCB3ZSB3b24ndCBoYXZlIGEgQmlnSW50MzIgKG9yIHRoYXQgd2Ugd29uJ3Qg
aGF2ZSBhIEhlYXBCaWdJbnQpLCB0aGVuIHdlIGNhbiB0cmFuc2Zvcm0gdGhpcyBub2RlIGludG8g
YSBJc0NlbGxXaXRoVHlwZShIZWFwQmlnSW50VHlwZSkgKG9yIGEgaHlwb3RoZXRpY2FsIElzQmln
SW50MzIgbm9kZSkuCiAKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjoKICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5
KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7
CkBAIC0xOTM3LDEzICsxOTg3LDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgY2hlY2sg
aGVyZSwgYW5kIG5vdCBsYXRlciAoYWZ0ZXIgdGhlIHR5cGUtYmFzZWQgcmVwbGFjZW1lbnQgYnkg
ZmFsc2UpLgorICAgICAgICAvLyBTYWFtIHNlZW1zIHRvIGFncmVlIHRoYXQgdGhlIHR3byBjaGVj
a3MgY291bGQgYmUgc3dpdGNoZWQsIEknbGwgdHJ5IHRoYXQgaW4gYSBzZXBhcmF0ZSBwYXRjaAog
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJp
Z0ludCB0byBKU0MuCi0gICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50ID0g
W10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFs
dWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIGlzTm9u
U3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJp
bmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAg
ICAgICBpZiAoaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25TdHJpbmdDZWxs
Q29uc3RhbnQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdPckJpZ0ludENl
bGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KHJpZ2h0
KSkgewogICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5n
KHRydWUpOwogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
Qm9vbGVhbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTU4LDE5ICsyMDA5LDI0IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKSA9PSBub2RlLT5jaGlsZDIoKSkgewotICAgICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUt
PmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN5bWJvbFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
aXNjVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFyVXNlKSB8fAotICAgICAgICAg
ICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50
VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2Us
IFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBh
bnkgY2FzZSBub3QgaW52b2x2aW5nIE5hTiB3aGVyZSB4ID09PSB4IGlzIG5vdCBndWFyYW50ZWVk
IHRvIHJldHVybiB0cnVlPworICAgICAgICAgICAgLy8gSWYgbm90IEkgbWlnaHQgc2xpZ2h0bHkg
c2ltcGxpZnkgdGhhdCBjaGVjay4KKyAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQm9vbGVhblVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUy
UmVwVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50
VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2Up
CisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVz
ZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwg
TWlzY1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5n
SWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkKKyAgICAgICAgICAg
ICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNlKQorICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBTdHJpbmdV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNl
KQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDk5N2JhYjA1MjUuLmM0
ODY0M2ViYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtNTY2Niw2ICs1NjY2LDE3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19u
dW1iZXIpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9pc19iaWdfaW50OiB7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRv
R3JhcGgoSXNCaWdJbnQsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19i
aWdfaW50KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworI2VuZGlmCisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBl
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNv
ZGUubV9vcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Yy4uMDNlODliMjZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkX29yX251bGw6
CiAgICAgY2FzZSBvcF9pc19ib29sZWFuOgogICAgIGNhc2Ugb3BfaXNfbnVtYmVyOgorICAgIGNh
c2Ugb3BfaXNfYmlnX2ludDoKICAgICBjYXNlIG9wX2lzX29iamVjdDoKICAgICBjYXNlIG9wX2lz
X29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDYyYmIxMjU4ZDUwLi5kMjY4
MWRiYjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzUsNiArMTc1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIElzVW5k
ZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6Cisg
ICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElz
T2JqZWN0OgogICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKQEAgLTI2MCw3ICsyNjEsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFZhbHVl
Qml0Tm90OgotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVz
ZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02ODAsNyAr
NjgxLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBJbnQzMlVzZToK
ICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0g
ICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAg
ICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNhc2UgVW50eXBlZFVzZToKQEAgLTcwMiw3ICs3MDUsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgVmFsdWVQb3c6CiAgICAgY2FzZSBWYWx1ZUJpdExTaGlmdDoKICAgICBj
YXNlIFZhbHVlQml0UlNoaWZ0OgotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIHNpbmdsZS1hcmd1bWVu
dCBpc0JpbmFyeVVzZUtpbmQgd291bGQgcHJldmVudCB1cyBmcm9tIHNwZWNpYWxpemluZyAoZm9y
IGV4YW1wbGUpIGZvciBhIEhlYXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJp
Z2h0LW9wZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50
VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShu
b2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZmI0
NTcwOWZlNTEuLjdhOTQ5NjZjOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTQ3LDkgKzE0Nyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgY2hpbGQxQ29uc3RhbnQgPSBtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKS52YWx1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGNoaWxkMkNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpLm5vZGUoKSkudmFsdWUoKTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
UmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9
IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmln
SW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXND
ZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAg
ICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmlu
Z09yQmlnSW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDkyYzAzOGYwNTkwLi44MTAyYmEwNDMzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1
ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMTQ3LDYgKzE0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNh
c2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAg
ICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNP
YmplY3RPck51bGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCAxYTRkZWNkYTBjMi4uODA3MzA4MzhkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMiwxNCArMjAyLDM0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVz
ZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVz
ZXMgdG8gY29tcGlsZSBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1p
Z2h0IG9wdGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3Rl
YWQgaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/
IFZhbHVlQWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNIZWFwQmlnSW50
LCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmhl
YXBCaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAv
LyBIZWFwQmlnSW50cyBhcmUgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBp
cyBnb29kIGhlcmUKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7CisgICAgICAg
ICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2lu
ZGV4SW5CbG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5m
byhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDEpKSkpOworICAg
ICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFudE9u
ZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2Qg
ZW5vdWdoIGZvciBub3cuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGhhdmlu
ZyBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIHNtYWxsIEJpZ0ludHMgaW5zdGVhZC4KICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBh
cHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQg
aXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNh
bGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3Ag
PT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7Ci0gICAgICAgICAgICAgICAgbm9kZUNvbnN0
YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0Jp
Z0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUodm0o
KS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3Rh
bnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmln
SW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIC8vIEJp
Z0ludHMgYXJlIGN1cnJlbnRseSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpT
IGlzIGdvb2QgaGVyZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0
SlMgaXMgZ29vZCBoZXJlCisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IEFyaXRoQWRkIDogQXJpdGhTdWIpOwog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7
CkBAIC0yMzUsMTIgKzI1NSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgY2hpbGQx
ID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDIgPSBub2RlLT5jaGls
ZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQo
Y2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmln
SW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihjaGlsZDIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorI2Vu
ZGlmCisKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJp
dGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtMjY4LDggKzI5NiwyMSBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRB
bmQ6IHsKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTMsNyArMzU0LDE3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVz
dEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4ob3BlcmFuZEVk
Z2UpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRn
ZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50MzJVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0lu
dFVzZT4ob3BlcmFuZEVkZ2UpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIGlmIChv
cGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JCaXRPcHMoKSkKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG9wZXJhbmRFZGdlKTsKICAgICAgICAg
ICAgIGVsc2UgewpAQCAtNDU4LDkgKzUwOSwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihjaGlsZDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoY2hpbGQxLm5vZGUoKSwg
Y2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMik7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChjaGlsZDEu
bm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihj
aGlsZDIpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlw
ZWRVc2U+KGNoaWxkMik7CkBAIC01NDYsOCArNjA1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50MzIobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJp
Z0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNl
bmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC01ODgsMTIgKzY2MCwy
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQx
KCk7CiAgICAgICAgICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAg
ICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5u
b2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisj
aWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJp
Z0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obGVmdENoaWxkKTsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlC
aWdJbnRVc2U+KGxlZnRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRV
c2U+KHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11
c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICAgfQorI2Vu
ZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJp
dGhtZXRpYyhsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGxlZnRDaGlsZCk7CkBAIC02NTcsMTIgKzczNywy
MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBWYWx1ZVBvdzogeworICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxVbnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTQ0LDYgKzI2MzIs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgICAgICBj
YXNlIElzQm9vbGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAgY2FzZSBJc0Jp
Z0ludDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1bmN0
aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTI4ODUsNyArMjk3
NCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjk1OCw3ICsz
MDU2LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICAvLyBJZiB0aGUgcHJlZGljdGlvbiBv
ZiB0aGUgY2hpbGQgaXMgQmlnSW50LCB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgVG9OdW1lcmljIHRv
IElkZW50aXR5LCBzaW5jZSBpdCBjYW4gb25seSByZXR1cm4gYSBCaWdJbnQgd2hlbiBmZWQgYSBC
aWdJbnQuCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbHNlCisgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzQ1MiwxMyArMzU1OSwxNSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFN0cmluZ1VzZToKICAgICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICAgICAgY2Fz
ZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0
cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgaWYgKGFsd2F5c1VuYm94U2ltcGxl
UHJpbWl0aXZlcygpCiAgICAgICAgICAgICAgICAgfHwgaXNDZWxsU3BlY3VsYXRpb24odmFyaWFi
bGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdl
ZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiB3aGF0IHNob3VsZCB3ZSBkbyBhYm91dCBCaWdJ
bnQzMlVzZSBhbmQgQW55QmlnSW50VXNlID8KKyAgICAgICAgLy8gQWxzbyBtb3JlIGJyb2FkbHks
IHdoYXQgYWJvdXQgYWxsIG9mIHRoZSBVc2VLaW5kcyB3aGljaCBhcmUgbm90IGxpc3RlZCBpbiB0
aGF0IHN3aXRjaD8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0zOTcyLDEyICs0MDgxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBub2RlLT5z
ZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5v
ZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RF
cSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBu
b2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVTdHJpbmdJZGVudCgpKSB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApp
bmRleCAxY2NhOGIyYWM0MS4uNzcwZDlkNTdlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgi
CiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR051bGxBYnN0cmFjdFN0YXRlLmgi
Ci0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMGI4NTBmMGM4MDcuLjhi
NTVhMzQ0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2MjIsNiAr
MjYyMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaXNTeW1ib2xTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBib29s
IHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0JpZ0lu
dDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CisjZW5kaWYKKworICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNIZWFw
QmlnSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBz
aG91bGRTcGVjdWxhdGVCaWdJbnQoKQogICAgIHsKQEAgLTI4MjIsNyArMjgzNCwxOSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSAm
JiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpOwogICAgIH0KLSAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihOb2RlKiBv
cDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpOworICAgIH0KKyNl
bmRpZgorCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChOb2RlKiBv
cDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0
ZUhlYXBCaWdJbnQoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKTsKKyAgICB9
CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlKiBvcDEs
IE5vZGUqIG9wMikKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKaW5kZXggN2U5NmEyNjg0Y2UuLmIwYmE2
YmI3ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFn
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKQEAgLTU0
LDYgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2Rl
TWF5TmVnWmVyb0luQmFzZWxpbmUgICAgICAgICAweDAwMjAwCiAjZGVmaW5lIE5vZGVNYXlOZWda
ZXJvSW5ERkcgICAgICAgICAgICAgIDB4MDA0MDAKICNkZWZpbmUgTm9kZU1heUhhdmVOb25OdW1l
cmljUmVzdWx0ICAgICAgMHgwMDgwMAorLy8gRklYTUU6IHdlIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGZsYWdzIGZvciBIZWFwQmlnSW50IGFuZCBCaWdJbnQzMiwgY3VycmVudGx5IHByZWRpY3Rpb24g
cHJvcGFnYXRpb24gd2lsbCBwZXNzaW1pemUgdGhpbmdzLgogI2RlZmluZSBOb2RlTWF5SGF2ZUJp
Z0ludFJlc3VsdCAgICAgICAgICAweDAxMDAwCiAjZGVmaW5lIE5vZGVNYXlIYXZlTm9uSW50UmVz
dWx0ICAgICAgICAgIChOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCB8IE5vZGVNYXlIYXZlTm9uTnVt
ZXJpY1Jlc3VsdCB8IE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRl
eCA3ODM1MjhlYTU0NS4uMGRmYTAyZGRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKQEAgLTM5Niw2ICszOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oSXNVbmRlZmluZWRPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBc
CiAgICAgbWFjcm8oSXNCb29sZWFuLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElz
TnVtYmVyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIC8qIElzQmlnSW50IGlzIG9ubHkgdXNl
ZCB3aGVuIFVTRV9CSUdJTlQzMi4gT3RoZXJ3aXNlIHdlIGVtaXQgSXNDZWxsV2l0aFR5cGUgKi9c
CisgICAgbWFjcm8oSXNCaWdJbnQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTnVt
YmVySXNJbnRlZ2VyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0LCBO
b2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0T3JOdWxsLCBOb2RlUmVzdWx0
Qm9vbGVhbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXgg
YTg1MmRiZGQ5YjkuLmY2MzcyYWRkNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKQEAgLTM4MywxMCArMzgzLDEzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QK
ICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBiZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHNwYXJl
IHJlZ2lzdGVyLiBTbyB1c2UgdGhlIG51bWJlclRhZ1JlZ2lzdGVyLAogICAgICAgICAgICAgICAg
IC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCiAgICAgICAgICAgICAgICAgaml0
LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNB
ZGRyZXNzKCkpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOworICAgICAgICAgICAgICAgIC8vIFdlIGFsc28gdXNlIHRoZSBub3RDZWxs
TWFza1JlZ2lzdGVyIGFzIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLCBmb3IgdGhlIHNhbWUgcmVhc29u
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBmaW5kIGEgbGVzcyBncm9zcyB3YXkgb2YgZG9p
bmcgdGhpcywgbWF5YmUgdGhyb3VnaCBkZWxheWluZyB0aGVzZSBvcGVyYXRpb25zIHVudGlsIHdl
IGFjdHVhbGx5IGhhdmUgc29tZSBzcGFyZSByZWdpc3RlcnMgYXJvdW5kPworICAgICAgICAgICAg
ICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsK
KyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
ciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSwgR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
ICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAgICAgICAgICAg
ICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgpAQCAtMzk4LDcgKzQwMSw3
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBz
Y3JhdGNoKHNjcmF0Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVz
cygpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShq
aXQsIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgc2NyYXRjaCwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBqaXQu
cG9wVG9SZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKQEAgLTQwNywxMCArNDEwLDEwIEBAIHZvaWQg
T1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NS
RXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNo
VGFnKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwogICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNl
LnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCB2YWx1ZSwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9y
ZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKKyAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVl
U291cmNlLnJlZ3MoKSwgSW52YWxpZEdQUlJlZyk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5k
ZXggOWU5YmNlYTQ4MWMuLmUwZTg3MjFlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IGNjNTc4MDk3Yjc0Li40NDBjOWI4MjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcsNyArODcsNiBAQAogI2luY2x1ZGUgIlR5
cGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoSklU
KQogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjIyLDU2ICsyMjEsNiBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbAogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwg
cHV0VmFsdWUsIHNsb3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24s
IHR5cGVuYW1lIE51bWJlck9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50
T3BlcmF0aW9uJiYgYmlnSW50T3AsIE51bWJlck9wZXJhdGlvbiYmIG51bWJlck9wLCBjb25zdCBj
aGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBh
dXRvIGxlZnROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHRO
dW1lcmljID0gb3AyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9wKFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgSW50MzJPcGVyYXRp
b24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3Ao
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJ
bnRPcCwgSW50MzJPcGVyYXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
Ci17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0g
b3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3Ay
LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpKSk7
Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGludDMyT3AoV1RGOjpnZXQ8aW50MzJfdD4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSkpOwotfQotCiBzdGF0
aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBwYXJzZUludFJlc3VsdChkb3VibGUgaW5w
dXQpCiB7CiAgICAgaW50IGFzSW50ID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1dCk7CkBAIC00NzEs
NzEgKzQyMCwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TW9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRv
IG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0g
ICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRP
cCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVt
YWluZGVyIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUmVtYWlu
ZGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmlj
KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9w
ZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
b3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91Ymxl
PihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2
YWx1ZSArIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzSW5jKGdsb2JhbE9iamVj
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBv
cDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RG
OjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcih2YWx1ZSAtIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRGVj
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAK
LSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJp
YykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
QmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKH5X
VEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3ApKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU0NCwxNSArNDU2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+
IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBs
ZWZ0ICYgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFs
T2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVy
YXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZUFuZChnbG9i
YWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTYxLDE1ICs0NjUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmln
aHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0
dXJuIGxlZnQgfCByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicg
b3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VPcihn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU3OCwxNSArNDc0
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10g
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCog
cmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZVhv
cihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAg
IHJldHVybiBsZWZ0IF4gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGlu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAn
eG9yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lz
ZVhvcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU5
NSwxNSArNDgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJ
bnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwg
SlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0
byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7
Ci0gICAgICAgIHJldHVybiBsZWZ0IDw8IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0xTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikKQEAgLTYxMiwxNSArNDkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qg
cmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA+PiAocmlnaHQgJiAweDFm
KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9u
LiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JTaGlmdChnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRV
UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NTgsMTUgKzUzMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGxlZnQg
LyByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0s
IGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVyYXRpb24uIik7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RpdihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikKQEAgLTY3NSwxNSArNTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0aFBvdyhsZWZ0
LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiJf
cyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1BvdyhnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9
CiAKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCkBAIC0xNDgwLDcgKzEz
MzYsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcmVnZXhwLT50ZXN0KGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0KIAotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE0
OTIsNyArMTM0OCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmln
SW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXROb3RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3AxKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTAzLDcgKzEzNTks
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lz
ZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUxNSw3ICsxMzcxLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5
KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAgICAgCi1KU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTUyNyw3ICsxMzgzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4g
SlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJh
bmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTUzOSw3ICsxMzk1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU1MSw3ICsxNDA3LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxP
YmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU2
Myw3ICsxNDE5LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NzUsNyArMTQzMSw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDCiAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkSGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1ODcsNyArMTQ0Myw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFs
T2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE1OTksNyArMTQ1NSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRS
U2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0dXJu
IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJp
Z2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYxMSw3ICsxNDY3LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCoKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmpl
Y3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYyOSw3
ICsxNDg1LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
Q2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAgcmV0dXJuIEpT
VmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7
CisgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCBv
cDEsIG9wMik7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBhcmcxLCBFbmNvZGVk
SlNWYWx1ZSBhcmcyKQpAQCAtMTY3NCwxMCArMTUzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gdmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPih2YXJpYW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXVEY6OmdldDxK
U0JpZ0ludCo+KHZhcmlhbnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KFdURjo6Z2V0PGRvdWJsZT4odmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwYzg3M2Ri
ZTVmZS4uNTMyYzYyYTdkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTgxLDE4ICsxODEsMTggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEoKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoSlNHbG9iYWxPYmplY3QqLCBS
ZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
QWN0aXZhdGlvbkRpcmVjdChWTSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSos
IEVuY29kZWRKU1ZhbHVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHMoVk0qLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90
IG1pbkNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDMuLmQ0
ZTM2NGY0ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTMyLDcgKzUzMiwxOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjU3ltYm9sKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50MzIpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjQmlnSW50KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDA0
LDYgKzEwMTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgog
ICAgICAgICBjYXNlIElzQm9vbGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAg
Y2FzZSBJc0JpZ0ludDoKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgIGNh
c2UgSXNPYmplY3Q6CiAgICAgICAgIGNhc2UgSXNPYmplY3RPck51bGw6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGQ2ZTdjOWUzMDg1Li42ZGE2
YmMxYzM1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTc5LDcgKzc5LDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAg
ICAgICAgY2FzZSBTdHJpbmdPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAg
ICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAg
IGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKQEAgLTI2Myw2ICsyNjUsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAg
Y2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50Ogog
ICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJ
c09iamVjdE9yTnVsbDoKQEAgLTY3NywxMCArNjgwLDEwIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBp
Z25vCiAgICAgY2FzZSBWYWx1ZURpdjoKICAgICBjYXNlIFZhbHVlTW9kOgogICAgIGNhc2UgVmFs
dWVQb3c6Ci0gICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKTsK
KyAgICAgICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAgICAgcmV0dXJu
IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2U7CisgICAgICAgIHJldHVybiBu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZTsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBkN2ViNmEwNTVkMy4uNjk3OTEwZGRlMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTcwNiw2ICsxNzA2LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJy
YW5jaChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMy
VXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24g
PT0gTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9s
ZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9k
ZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1MzcsNDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRn
ZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
ZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBU
aGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlv
biBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0
cyBhcm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0g
MHgxMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4
ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmln
SW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEo
SlNWYWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJp
Z0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsK
ICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFw
QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVl
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7Cisg
ICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0
aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJh
bmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICsz
NjA1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5v
ZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0
aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9
IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
IAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENo
aWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAg
ICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51
bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBA
IC0zNjMwLDExICszNjYxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0
T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgp
IHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXND
b25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAg
ICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFu
eUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
fQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBs
YWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdo
dFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDMs
ODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMy
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7
CisKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAg
ICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZh
bHVlQml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1
ZUJpdFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9y
LCBvcGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVy
ZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQo
cmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVy
YXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJm
ZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0
KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBz
byB3ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAg
ICAgIG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9q
aXQub3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFT
U0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0g
ICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBw
b3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxl
ZnRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBzcGVj
dWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChv
cCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9y
QW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4o
bm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3Bl
cmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1
ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0
T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47
CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChO
b2RlKiBub2RlKQpAQCAtMzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9y
QmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25f
R0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlm
dAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRV
UlNoaWZ0OwpAQCAtMzc2NSw5ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0g
bm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwog
Ci0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5v
dE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8
fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1
OSwyNyArMzkyNiwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRP
cChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAg
IEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50
MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAg
R1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSBy
aWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BS
KTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVu
dHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0
Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2Vu
ZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyAr
Mzk1NCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdl
JiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxl
ZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIo
KTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAg
ICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRP
cChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSog
bm9kZSkKQEAgLTM5MTgsNyArMzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
aGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmln
aHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDE1
LDY3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxs
eSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/
CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNr
cyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3Vs
dEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94Qmln
SW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGlt
aW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNo
ZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRH
UFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVy
ZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIG1faml0LmJveEJpZ0lu
dDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBy
aWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVS
ZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdz
KCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2FsbCBhIG1vcmUgc3BlY2lh
bGl6ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5v
dE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdz
LCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMs
IHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJp
Z0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRD
aGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwg
bGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwpAQCAtNDAwNiw0NCArNDEyMSw5MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVTdWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNT
Y3JhdGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQ
UlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKLSNl
bmRpZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJp
Z2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVh
bGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0
ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJp
Y2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOwogCi0gICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwotICAgICAgICBhdXRv
IHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7Ci0gICAgICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgICAg
IG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hC
aWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1w
R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBj
b21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcsIG5lZWRzU2NyYXRj
aEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOworICAg
ICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hl
Y2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BS
KTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0lu
dAogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0
Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21w
aWxlVmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3Qg
VmFsdWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2Up
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFu
eUJpZ0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGls
ZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwor
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0g
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQ
UlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5n
cHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVl
U3ViLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICBzcGVjdWxh
dGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRD
aGlsZCwgcmlnaHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKIAotICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7
CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKLSAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3Jh
dGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwor
I2Vsc2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVk
c1NjcmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5j
b2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMo
bm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUg
Tm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYyOCw2ICs0Nzg5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAgIC8vIEZJWE1FOiBhZGQg
YSBmYXN0IHBhdGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHByb2JhYmx5IGFsc28gZm9y
IEhlYXBCaWdJbnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9q
aXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5i
eXRlY29kZUluZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CkBAIC00ODA4LDI5ICs0OTcwLDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlm
IChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUg
YmV0d2VlbiBjb21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29tcGlsZVZhbHVl
TXVsIGZvciBCaWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8gZ2V0IHJpZCBv
ZiB0aGUgZHVwbGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2Ug
cmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3Jp
Z2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIg
dHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5i
b3hCaWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRv
IGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJl
c3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94
QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBm
b3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhl
YXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBH
UFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQs
IHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENo
aWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1Zh
bHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51
bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9k
ZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGls
ZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTUwMTAsMjkgKzUyMDQsMzMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAg
RWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9
IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1F
OiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0
aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4K
KworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EaXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93
bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgp
KSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJV
c2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQp
OwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAt
NTA0Niw2ICs1MjQ0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5v
ZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5k
PiBsZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NSwy
OSArNTQ5NSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJp
Z0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9m
IGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJp
Z2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxl
ZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0
Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBE
RkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7
CisgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJl
Z3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpz
VmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4NTksMzAgKzYwNjMsMzMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAg
RWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9
IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50
MzIgZm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcg
bGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdw
cigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBv
d0hlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2Ug
fHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBz
cGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAg
SlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMCw2
ICs2MjM3LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUo
bm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpA
QCAtNjA1OCw2ICs2MjcxLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBu
b2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhl
cmUuCisgICAgLy8gTm90IGhhdmluZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJlIHdpbGwgbm90
IGJlIGZ1c2VkIHdpdGggdGhlIGJyYW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
Qm9vbGVhblVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFyZShub2RlLCBj
b25kaXRpb24pOwpAQCAtNjEzNiw3ICs2MzUyLDI0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVuc2lnbmVkIGJy
YW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChi
cmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5j
aE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICB1c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFu
Y2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVCaWdJ
bnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFu
Y2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJh
bmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTgzLDggKzY0MTYsOCBAQCBib29s
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGls
ZUhlYXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAKQEAgLTYyNzgsOCArNjUxMSw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxp
dHkobm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CiAgICAg
cmV0dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEwNTM4LDE4ICsx
MDc3MSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdl
KQogICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVn
IGNlbGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Y2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZO
b3RCaWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2pp
dC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFu
ZC5ncHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpT
VmFsdWVSZWdzIHJlZ3MpCkBAIC0xMDcxOSw4ICsxMDk1MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAg
ICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJp
Z0ludFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1
bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIEhl
YXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJp
bmdPYmplY3QoZWRnZSk7CkBAIC0xMzA2NywxNyArMTMzMDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIGFyZ3Vt
ZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOwor
ICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUgKGFuZCBmb3Ig
dHlwZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVkIGluIHRoaXMg
ZmlsZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1
bWVudFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQo
YXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlz
QmlnSW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBub3RDZWxs
LmxpbmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVt
YmVyKGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGluaygmbV9qaXQp
OworICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVn
cyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmljLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CkBAIC0xMzk2
Niw5ICsxNDIwOCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhv
bGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1cnJlbnROb2Rl
ID0gYnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludEVx
dWFsaXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0lu
dEVxdWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0g
Q3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNl
CisgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNp
b24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
bGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmln
aHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5ODAsOCArMTQyMjIsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKICAgICBsZWZ0
LnVzZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNo
aWxkMSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJp
Z2h0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BS
KTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAK
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFuY2hQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiZmIxODQ4MTViMy4uZGIx
N2E3MDdkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3Vs
YXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYKICAgICBHZW5l
cmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqKTsKIAog
ICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21waWxl
UGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
LCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlvbl9HSkopOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5v
ZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQ
ZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGls
ZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBp
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNo
KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsK
ICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFu
Y2hOb2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVN
aXNjU3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9k
ZSopOwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
U3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGls
ZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlw
ZWRFZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNv
bXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91
YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21waWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0
R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAgICB2b2lk
IGVtaXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVudHlwZWRS
aWdodFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0
U2hpZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZVNoaWZ0T3AoTm9kZSopOwpAQCAtMTU3Miw2ICsxNTgxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNwZWN1bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZURv
dWJsZVJlcEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lmIFVTRShC
SUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZvaWQgc3Bl
Y3VsYXRlQW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICB2b2lk
IHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRn
ZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYyMSw4ICsx
NjM0LDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3Qo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAg
IHZvaWQgc3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVk
Z2UsIEdQUlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2
b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwg
SlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjAw
LDYgKzI2MTMsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9Owog
CisjaWYgVVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYgKGppdC0+
aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKworICAgIH5TcGVj
dWxhdGVCaWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZh
bGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZh
bGlkKTsKKyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIoZWRnZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZvaWQgdXNl
KCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJl
ZyBtX2dwck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAjZGVmaW5l
IERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5
cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3Vy
Y2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4OWNjOWVmM2ZlMy4uODg4YmQ1MDZjOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDE4Niw3ICs0MTg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAgICBERkdf
Q1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkgdXNlZCBp
biA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgSXNC
aWdJbnQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNCaWdJbnQg
aXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0cnVlIGlu
IDY0IGJpdCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGFjODhmZjgzMjA3Li5kNjg1NDFlZDlhMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4
LDcgKzEzOCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdl
KQogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3Vi
bGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9v
bGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0JpZ0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAg
ICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEo
Tm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAg
ICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNT
RVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAg
R1BSUmVnIGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcsNjcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUq
IG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihp
bnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRH
UFIsIHRha2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFy
ZzJHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0
d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAgICAgCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJn
MUdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFu
Y2hJZk51bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQ
Uik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNo
SWZOdW1iZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotICAgICAg
ICAKLSAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklU
Q29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAgIGp1bXAo
bm90VGFrZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nhc2UubGlu
aygmbV9qaXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICdp
bnZlcnQnIHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYgKGxlZnQg
aXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAg
ICAgICAgIGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1w
bGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmds
ZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQg
aWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8vIFRoZSB0
cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkg
dG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAor
ICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwg
YmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVz
IGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2Ny
YXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BS
LCByZXN1bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGln
aEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNsb3dQYXRo
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAgICAgICAg
IGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8g
bm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxpbmsoJm1f
aml0KTsKLSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAg
ICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIAorICAg
ICAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGgg
aWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmln
SW50MzIpCisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkg
aGF2ZSB0byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9y
IEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAgICAg
ICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9u
ZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdo
dCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAg
ICAgLy8gICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAgLy8gMi4g
U2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwg
cmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkK
KyAgICAgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2ls
bCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElmIGF0IGxl
YXN0IG9uZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAg
ICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVy
JyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIp
OworI2Vsc2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIp
OworI2VuZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2Vs
bChyZXN1bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4s
IEZvcmNlSnVtcCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAg
ICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6
Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChub3RU
YWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhv
bGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTogc29t
ZSBvZiB0aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZlUGVl
cGhvbGVTdHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAg
IEpTVmFsdWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVS
ZWdzIGFyZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BSID0g
YXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwpAQCAtNDI4LDMzICs0NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAg
ICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAg
IG1faml0Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOwor
ICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFs
c2UpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
IGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChy
ZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0
IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4g
cmVzdWx0OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNl
czsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElm
Q2VsbChyZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQu
YnJhbmNoSWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0subGlu
aygmbV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJ
ZkludDMyKGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk51bWJlcihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygmbV9q
aXQpOwotCi0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVh
bCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCBy
ZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
LQotICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwg
YXJnMlJlZ3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQg
aXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3Rl
YWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJh
bmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEg
SlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0
IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5v
dCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBz
ZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJl
c3VsdEdQUik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICBt
X2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3Vs
dEdQUik7CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGln
aEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJl
c3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9m
SGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBtX2pp
dC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklU
Q29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0IEJp
Z0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQg
aXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2UgZG9u
J3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlm
IGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBh
bmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNo
ZXMsIHdlIGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8gMS4g
KGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCBy
aWdodCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAw
IgorICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVm
dCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmln
aHQpIGlzIENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9w
IGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAgSWYg
YXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgor
ICAgIC8vICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhl
cicgdGFnIHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShC
SUdJTlQzMikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOwor
I2Vsc2UKKyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5k
aWYKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BS
KSk7CiAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVydCks
IHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7
CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywg
dGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9q
aXQpOwogCisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQUik7
CisKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwNCw2ICsxMDU5LDggQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVk
Z2UsIERhdGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50
MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFk
IGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMTg0LDYgKzEyNDEs
OCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkK
ICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkpIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGVzZSBjYXNlcyBsb29rIGxpa2UgdGhleSBj
b3VsZCBzaGFyZSBjb2RlLgorICAgIC8vIExvb2sgYXQgZmlsbFNwZWN1bGF0ZUludDMySW50ZXJu
YWwgZm9yIGFuIGV4YW1wbGUuCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewogICAgICAgICBH
UFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTIzNSw2ICsxMjk0LDggQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRh
Rm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNl
IERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0
OgpAQCAtMTMxMiw2ICsxMzczLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMy
OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBk
YXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMyMCw2ICsxMzgzLDEx
MyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRn
ZSkKICAgICB9CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAoU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOworICAg
IC8vIEkgaW5saW5lZCBzcGVjdWxhdGVIZWFwQmlnSW50IGJlY2F1c2UgaXQgd291bGQgYmUgaW5j
b3JyZWN0IHRvIGNhbGwgaXQgaGVyZSBpZiBpdCBkaWQgSlNWYWx1ZU9wZXJhbmQgLyBTcGVjdWxh
dGVYWFhPcGVyYW5kLAorICAgIC8vIGFzIGl0IHdvdWxkIGNvbmZ1c2UgdGhlIERGRyByZWdpc3Rl
ciBhbGxvY2F0b3IuCisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwodmFsdWVSZWdzLmdwcigpKSwgZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0lu
dCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KHZhbHVlUmVncy5ncHIoKSkpOworICAgIG5v
dENlbGwubGluaygmbV9qaXQpOworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywg
ZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSkuZ3ByKCk7Cit9CisKK0dQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBBYnN0
cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFs
dWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgeworICAgICAgICBp
ZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Cisg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKKyAgICBjYXNl
IERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisg
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpz
VmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3By
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBBU1NF
UlQoanNWYWx1ZS5pc0JpZ0ludDMyKCkpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKSksIGdwcik7Cisg
ICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNC
aWdJbnQzMik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisKKyAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwor
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKKworICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBE
YXRhRm9ybWF0SlMpOworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUgdGhhdCBmb2xsb3dzIGNv
dWxkIG1heWJlIGJlIHNoYXJlZCB3aXRoIHRoZSBEYXRhRm9ybWF0SlMgY2FzZS4KKyAgICAgICAg
aWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdw
cikpOworICAgICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2pp
dC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAg
ICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1
cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7
CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQor
CisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3By
KCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNC
aWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAg
IEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJ
bnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRl
bXBHUFIpOworICAgICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBn
cHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisK
KyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVh
bjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2Vs
bDoKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
KyAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgor
ICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3Jy
dXB0IGRhdGEgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0K
K30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQp
CiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAg
LTE1NTYsNiArMTcyNiw1NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJ
bnQ1MkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90
VGFrZW4pOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgb3AxLCBvcDIpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAg
ICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFy
ZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigp
LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5i
b3hCaWdJbnQzMih0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlv
biwgcmVzdWx0LmdwcigpLCB0ZW1wLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAg
IC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5n
cHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERh
dGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21w
aWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29u
ZGl0aW9ucyB3b3VsZCByZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVj
dCByZXN1bHRzIG9uIG5lZ2F0aXZlIG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEo
KS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5i
cmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVj
dGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMg
bmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25k
aXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2Nr
KCkpIHsKKyAgICAgICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24p
OworICAgICAgICBCYXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RU
YWtlbjsKKyAgICAgICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChj
b25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtl
bik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNDA4Nyw2ICs0MzA2LDMxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBJc0JpZ0ludDogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZS5ncHIoKSk7CisKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYW5kNjQodmFsdWUu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxl
cjo6RXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udGludWF0aW9uID0gbV9q
aXQuanVtcCgpOworCisgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIG1faml0LmNv
bXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihIZWFwQmlnSW50VHlwZSksIHJlc3VsdEdQUik7CisKKyAgICAgICAgY29udGludWF0aW9uLmxp
bmsoJm1faml0KTsKKyAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjogewog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
CmluZGV4IDc1ZjNhMDZiMGZjLi42YTI1NGNlN2MyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0xMjUs
NyArMTI1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBj
YXNlIFZhbHVlQml0QW5kOgogICAgICAgICBjYXNlIFZhbHVlQml0WG9yOiB7Ci0gICAgICAgICAg
ICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAg
Ly8gRklYTUU6IHdlIHNob3VsZCBtYXliZSBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvcGVy
YW5kIGlzIGFsd2F5cyBIZWFwQmlnSW50IGFuZCB0aGUgb3RoZXIgaXMgYWx3YXlzIEJpZ0ludDMy
PworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNv
bW11dGF0aXZpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNzUsNyAr
Mzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkK
KyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8
fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlIHx8IG1fbm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21t
dXRhdGl2aXR5KCk7CiAKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5jcHAKaW5kZXggOGVmNzNiNmYyZTguLmFiNjMxYzljZGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDUsOCArMTQ1LDE0IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2VLaW5kIHVzZUtpbmQpCiAg
ICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIG91dC5wcmludCgiU3ltYm9sIik7CiAgICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJCaWdJbnQi
KTsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJBbnlCaWdJbnQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgb3V0
LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJpZ0ludDMy
VXNlOgorICAgICAgICBvdXQucHJpbnQoIkJpZ0ludDMyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgb3V0LnByaW50KCJTdHJpbmdPYmplY3Qi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKaW5kZXggOWMxM2M1YmNkMzUu
LmY0ZjdiMzNiYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY2LDcgKzY2LDkgQEAgZW51bSBVc2VLaW5kIHsKICAgICBLbm93blN0cmluZ1VzZSwKICAgICBL
bm93blByaW1pdGl2ZVVzZSwgLy8gVGhpcyBiaXphcnJlIHR5cGUgYXJpc2VzIGZvciBvcF9zdHJj
YXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2RlIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgb25seSBzZWUg
cHJpbWl0aXZlcyAoaS5lLiBub3Qgb2JqZWN0cykuCiAgICAgU3ltYm9sVXNlLAotICAgIEJpZ0lu
dFVzZSwKKyAgICBBbnlCaWdJbnRVc2UsCisgICAgSGVhcEJpZ0ludFVzZSwKKyAgICBCaWdJbnQz
MlVzZSwKICAgICBEYXRlT2JqZWN0VXNlLAogICAgIE1hcE9iamVjdFVzZSwKICAgICBTZXRPYmpl
Y3RVc2UsCkBAIC0xNTIsOCArMTU0LDEyIEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmls
dGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAgICAgcmV0dXJuIFNwZWNIZWFwVG9wICYgflNw
ZWNPYmplY3Q7CiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OwotICAgIGNhc2UgQmlnSW50VXNlOgorICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAgICBy
ZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHJldHVy
biBTcGVjSGVhcEJpZ0ludDsKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICByZXR1cm4g
U3BlY0JpZ0ludDMyOwogICAgIGNhc2UgUHJvbWlzZU9iamVjdFVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNQcm9taXNlT2JqZWN0OwogICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKQEAgLTIxMiwyNCAr
MjE4LDYgQEAgaW5saW5lIGJvb2wgbWF5SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCiAgICAg
cmV0dXJuICFzaG91bGROb3RIYXZlVHlwZUNoZWNrKGtpbmQpOwogfQogCi1pbmxpbmUgYm9vbCBp
c051bWVyaWNhbChVc2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2Fz
ZSBJbnQzMlVzZToKLSAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6
Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgY2Fz
ZSBEb3VibGVSZXBVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgotICAgIGNhc2UgQW55
SW50VXNlOgotICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiBpbmxp
bmUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBA
IC0yNjEsNyArMjQ5LDcgQEAgaW5saW5lIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKICAgICBj
YXNlIFN0cmluZ1VzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgIGNhc2UgU3ltYm9s
VXNlOgotICAgIGNhc2UgQmlnSW50VXNlOgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICBj
YXNlIFN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgog
ICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBlMWY1ODlmMjczNC4uYjI1ZTc5Zjg0M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI2MSw2ICsy
NjEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2Ug
SXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoK
ICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC00ODQsNyAr
NDg1LDkgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAg
ICAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3Ry
aW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBBbnlC
aWdJbnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAg
ICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBEYXRlT2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgU2V0T2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21t
b25WYWx1ZXMuY3BwCmluZGV4IDViNDkyNWNmZmJjLi5jMGY0ZjJiMDY1YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcApAQCAtNTgsNiArNTgsOSBA
QCB2b2lkIENvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyhCMzo6UHJvY2VkdXJlJiBw
cm9jLCBCMzo6QmFzaWNCbG9jayogYmxvYwogICAgIGludFB0clRocmVlID0gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMyk7CiAgICAgaW50UHRyRWlnaHQg
PSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA4KTsKICAg
ICBkb3VibGVaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMC4pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBiaWdJbnQzMlplcm8gPSBibG9j
ay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAppbmRleCBjMWQ2ZDVhNTUxZC4u
MzFhMzkzMjkwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1
ZXMuaApAQCAtNTYsNyArNTYsMTAgQEAgcHVibGljOgogICAgIExWYWx1ZSBpbnRQdHJUaHJlZSB7
IG51bGxwdHIgfTsKICAgICBMVmFsdWUgaW50UHRyRWlnaHQgeyBudWxscHRyIH07CiAgICAgTFZh
bHVlIGRvdWJsZVplcm8geyBudWxscHRyIH07Ci0gICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IExWYWx1ZSBiaWdJbnQzMlplcm8geyBudWxscHRyIH07CisjZW5kaWYKKwogICAgIGNvbnN0IHVu
c2lnbmVkIHJhbmdlS2luZCB7IDAgfTsKICAgICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAg
fTsKICAgICBjb25zdCBMVmFsdWUgYnJhbmNoV2VpZ2h0cyB7IG51bGxwdHIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBiOWZkZWMwMzcx
Ny4uODg5YWEzMTg2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTEzNTYsNiArMTM1Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SXNOdW1iZXI6CiAgICAgICAgICAgICBjb21waWxlSXNOdW1iZXIoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgY29tcGlsZUlzQmlnSW50
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAg
ICAgICAgICAgICBjb21waWxlTnVtYmVySXNJbnRlZ2VyKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTIxMzksMTEgKzIxNDIsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hl
ZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRS
aWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiBy
ZXN1bHQgPSBtX291dC5zcGVjdWxhdGVBZGQodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7Cisg
ICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwg
bnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBi
b3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkSGVh
cEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0yMTYwLDExICsyMTgwLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94
ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVk
UmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSog
cmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRlU3ViKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOwor
ICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCks
IG51bGxwdHIsIG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0g
Ym94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uU3ViQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvblN1YkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjE4MSwxMSArMjIxOCwyOCBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBM
VmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAg
IENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZU11bCh1bmJveGVkTGVmdCwgdW5i
b3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxv
dywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBi
b3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVl
KGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKElu
dDY0LCBvcGVyYXRpb25NdWxCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJh
dGlvbk11bEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjI4OSw3ICsyMzQzLDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
aWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSBy
ZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIElDIHlldC4K
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CiAKQEAgLTI1NTgsMTEgKzI2MjYs
MTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZURpdigpCiAgICAgewogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9y
IEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkRpdkJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25EaXZIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI2MzcsMTggKzI3
MDYsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1vZCgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBhIEJpZ0ludDMy
IGZhc3QgcGF0aCBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobV9u
b2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJh
dGlvblZhbHVlTW9kLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC0yODEzLDE3ICsyODg1LDIxIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVQb3coKQogICAgIHsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogbWF5YmUgYWRkIGEgZmFzdCBwYXRo
IGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dCaWdJbnQsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uUG93SGVhcEJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBBU1NFUlQobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVQ
b3csIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KQEAgLTMyMDQsOSArMzI4MCwyMyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0Tm90KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25CaXROb3RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIG9wZXJhbmQpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBv
cGVyYW5kID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBU
aGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlv
biBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0
cyBhcm91bmQuCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyVGFn
ID09IDB4MTIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMk1h
c2sgPT0gMHhmZmZlMDAwMDAwMDAwMDEyKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tGb3JC
aWdJbnQzMkJpdHMgPSAweDAwMDBmZmZmZmZmZjAwMDA7CisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQuYml0WG9yKG9wZXJhbmQsIG1fb3V0LmNvbnN0SW50NjQobWFza0ZvckJpZ0lu
dDMyQml0cykpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJh
bmQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKICAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzIyNCwx
MSArMzMxNCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0QW5kKCkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgLy8gTm8gbmVlZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVj
dGVkIGJ5IGJpdEFuZAorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdEFuZChs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRB
bmRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0
QW5kSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwog
ICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0zMjQ0LDExICszMzQ2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
VmFsdWVCaXRPcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNpbmNlIHRoZSB0YWdn
aW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSBtX291dC5iaXRPcihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25C
aXRPckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzI2NCwxMSArMzM3OCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZVZhbHVlQml0WG9yKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRY
b3JCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHRNaXNzaW5nVGFnID0gbV9vdXQu
Yml0WG9yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5i
aXRPcihyZXN1bHRNaXNzaW5nVGFnLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMy
VGFnKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyODQsMTEg
KzM0MTAsMjkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdCgpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBkbyBzb21ldGhpbmcgc21hcnRlciBoZXJlCisgICAgICAgICAgICAvLyBUaGluZ3MgYXJlIGEg
Yml0IHRyaWNreSBiZWNhdXNlIGEgcmlnaHQtc2hpZnQgYnkgYSBuZWdhdGl2ZSBudW1iZXIgaXMg
YSBsZWZ0LXNoaWZ0IGZvciBCaWdJbnRzLgorICAgICAgICAgICAgLy8gU28gZXZlbiBhIHJpZ2h0
IHNoaWZ0IGNhbiBvdmVyZmxvdy4KKworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJp
dFJTaGlmdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMzMwMCwyNCArMzQ0NCwyNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgc2V0SW50MzIobV9vdXQuYVNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQy
KCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChs
b3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJ
WE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1
ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlQXJpdGhCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9vdXQu
c2hsKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAg
ICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50
MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsg
dGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGlj
cyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdExT
aGlmdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1F
OiBjb25zaWRlciBhZGRpbmcgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUuCisgICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzM0LDcgKzM0NzksNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxTaHIoCiAgICAgICAgICAg
ICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChs
b3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAg
ICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNv
bnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQg
aXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIz
CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKCkKQEAgLTczNzIs
NiArNzUxNyw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0Jp
Z0ludCkpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlciA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Qmln
SW50MzIgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBpc0NlbGxQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC03MzgxLDEwICs3NTI5LDE0IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIC8vIG5vdE51bWJlciBjYXNlLgogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdW1iZXIsIGNvbnRpbnVhdGlv
bik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50
MzIodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0
aW9uKSwgdW5zdXJlKG5vdEJpZ0ludDMyKSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhu
b3RCaWdJbnQzMik7CisjZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsUGF0aCksIHVu
c3VyZShzbG93UGF0aCkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxQYXRo
KTsKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZSht
X25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgp
KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQ
YXRoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
KTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgc2V2ZXJhbCBhdHRlbXB0cyB0byByZW1vdmUgVG9O
dW1lcmljLiBCdXQgVG9OdW1lcmljIHN0aWxsIGV4aXN0cy4KQEAgLTg0NDMsNyArODU5NSwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVh
blVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkK
ICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKQot
ICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgeworICAg
ICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAg
ICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAgICAgICAgICB8
fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgfHwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgY29t
cGlsZUNvbXBhcmVTdHJpY3RFcSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC04NDg2LDcgKzg2NDEsOTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5lcXVh
bChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHNpbmNlIHRoZSB0YWcg
Yml0cyBhcmUgdGhlIHNhbWUgb24gYm90aCBzaWRlcworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4ocmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IHdlIGNhbm5vdCBzdGFydCB3aXRoIGlmIChsZWZ0ID09IHJpZ2h0KSwgYmVjYXVzZSB3ZSBt
dXN0IGluc2VydCB0aGUgcmlnaHQgY2hlY2tzIChzZWUgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
IGFib3ZlKQorICAgICAgICAgICAgLy8gVGhlIGNvZGUgdGhhdCB3ZSBnZW5lcmF0ZSBsb29rcyBs
aWtlIHRoZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAgICAgICAgICAvKgorICAgICAgICAg
ICAgIGlmIChpc0JpZ0ludDMyKGxlZnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQmlnSW50
MzIocmlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodDsKKyAg
ICAgICAgICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihyaWdodCwgdW5ib3hlZChsZWZ0
KSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChsZWZ0
KSkKKyAgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIobGVmdCwgdW5ib3hlZChy
aWdodCkpOworICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAg
ICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHMobGVmdCwgcmlnaHQpKTsKKyAgICAg
ICAgICAgICovCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNCaWdJbnQzMiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBib3RoQXJlQmlnSW50MzIgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgb25seUxlZnRJc0JpZ0lu
dDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc05v
dEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxl
ZnRFcXVhbHNSaWdodCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBsZWZ0SXNIZWFwQmlnSW50ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIHJpZ2h0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayByaWdodElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIobGVmdCwgcHJvdmVuVHlwZShtX25vZGUt
PmNoaWxkMSgpKSksIHVuc3VyZShsZWZ0SXNCaWdJbnQzMiksIHVuc3VyZShsZWZ0SXNOb3RCaWdJ
bnQzMikpOworCisgICAgICAgICAgICAvLyBGSVhNRTogc2V0IHRoZSBvcmRlciBvZiB0aGUgYmxv
Y2tzIHRvIG1heGltaXplIGZhbGx0aHJvdWdoCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhs
ZWZ0SXNCaWdJbnQzMik7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdo
dCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShib3RoQXJlQmlnSW50MzIp
LCB1bnN1cmUob25seUxlZnRJc0JpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGJvdGhBcmVCaWdJbnQzMik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRC
b3RoQXJlQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8ob25seUxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgcmVzdWx0TGVmdElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQu
bm90TnVsbCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0lu
dFRvSW50MzIsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHJpZ2h0LCB1bmJveGVkTGVmdCkp
KTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0LCByaWdodCksIHVuc3VyZShsZWZ0RXF1
YWxzUmlnaHQpLCB1bnN1cmUobGVmdElzSGVhcEJpZ0ludCkpOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhsZWZ0RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
cmVzdWx0TGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obGVmdElzSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNCaWdJbnQzMihyaWdodCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShy
aWdodElzQmlnSW50MzIpLCB1bnN1cmUocmlnaHRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNCaWdJbnQzMik7CisgICAgICAgICAgICBMVmFsdWUg
dW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayByZXN1bHRSaWdodElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVs
bCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50
MzIsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHVuYm94ZWRSaWdodCkpKTsKKyAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8ocmlnaHRJc05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnRVbmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAv
LyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBz
dHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgcmVzdWx0Qm90aEhlYXBCaWdJbnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsK
KyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCByZXN1bHRCb3RoQXJlQmln
SW50MzIsIHJlc3VsdExlZnRJc0JpZ0ludDMyLCByZXN1bHRMZWZ0RXF1YWxzUmlnaHQsIHJlc3Vs
dFJpZ2h0SXNCaWdJbnQzMiwgcmVzdWx0Qm90aEhlYXBCaWdJbnQpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1
MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIo
bV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CkBAIC04NTY5LDExICs4ODExLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3Qg
ZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50
XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50
cwogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjg5NQotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVh
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTg2NTksNiArODkwMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2Ug
Y2FuIGRvIHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIgaGVyZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2
ZUpJVCBhcHByb2FjaCBpbiBlLmcuIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlU3RyaWN0RXEKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwg
bV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkpOwogICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBh
cmUoCiAgICAgICAgICAgICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKQEAgLTEw
NjIyLDcgKzEwODY1LDM2IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwg
dHJ1ZVJlc3VsdCwgZmFsc2VSZXN1bHQsIHBhdGNocG9pbnRSZXN1bHQpKTsKICAgICB9Ci0gICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsK
KyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKwor
ICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSks
IHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKworICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90Q2VsbENhc2UsIGlzQ2Vs
bENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGlzQ2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxS
ZXN1bHQgPSBtX291dC5hbmNob3IoaXNDZWxsV2l0aFR5cGUodmFsdWUsIG1fbm9kZS0+cXVlcmll
ZFR5cGUoKSwgbV9ub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCksIHByb3ZlblR5cGUobV9u
b2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2VsbFJlc3VsdCwgY2VsbFJlc3VsdCkpOwor
ICAgIH0KKyNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCisgICAgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBBTFdBWVNfSU5MSU5FIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAg
IC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIEJpZ0ludDMyLCB3ZSBzaG91bGQganVzdCBl
bWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQpIGluc3RlYWQuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorI2VuZGlmCiAgICAgdm9pZCBjb21waWxlSXND
ZWxsV2l0aFR5cGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpIHsKQEAgLTE0MzQ2LDkgKzE0NjE4LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBlbWl0QmluYXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5j
dGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVj
dWxhdGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUo
bm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25p
cHBldE9wZXJhbmQgbGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5y
ZXN1bHRUeXBlKCkpOwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQ0MTQsOCArMTQ2
ODgsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBTbmlw
cGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJl
c3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNTAyNyw3ICsxNTMw
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMg
dGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYg
KHZhbHVlIGlzIGNlbGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3Ry
aW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3Vs
dCA9ICEhdmFsdWUtPmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAg
ICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVk
CkBAIC0xNTAzNyw2ICsxNTMxNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVz
dWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1
ZSBpcyBudW1iZXIpIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91Ymxl
KHZhbHVlKQorICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgewor
ICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAg
ICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0g
anNUcnVlCiAgICAgICAgICAgICAvLyB9CkBAIC0xNTA0NCwxMyArMTUzMjMsMTcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmln
SW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RD
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQz
MkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50
MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJs
ZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91
YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgYmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5k
aWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4gcmVz
dWx0czsKQEAgLTE1MDY0LDIwICsxNTM0NywyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwg
cHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAg
ICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2UpKTsK
KyAgICAgICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAo
U3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBCaWdJ
bnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFrUG9p
bnRlcihqc0VtcHR5U3RyaW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRD
YXNlLCBub3RTdHJpbmdPckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aGVhcEJpZ0ludENhc2UsIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAg
IExWYWx1ZSBub25aZXJvQmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0aCkp
OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJbnQp
KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RDZWxs
Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmlnSW50
Q2FzZSwgbm90Q2VsbENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0Owog
ICAgICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCkpCiAgICAgICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFuVHJ1
ZTsKQEAgLTE1MTIwLDggKzE1NDAzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5i
b3hEb3VibGUodmFsdWUpLCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVu
VHlwZShlZGdlKSAmIH5TcGVjQ2VsbCksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMy
Q2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oYmlnSW50MzJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZhbHVl
IGJpZ0ludDMyTm90WmVybyA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0
KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoYmlnSW50MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJp
Z0ludDMyQ2FzZSwgY29udGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhub3REb3VibGVDYXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAgICBM
VmFsdWUgbWlzY0lzVHJ1dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUs
IG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAg
LTE1NzI2LDEzICsxNjAyMywxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0KICAg
ICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAg
cmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAg
ICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAg
ICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAg
ICAgICAgcmV0dXJuIHN5bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVsc2Ug
aWYgKGlzIG51bWJlcikgewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAgICAv
LyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50
CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0dXJu
IG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NzYwLDYg
KzE2MDU5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJ
bnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdE51bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYm9v
bGVhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRlZmlu
ZWRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1ODEyLDcgKzE2MTE0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsK
ICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3Zl
blR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKKyAg
ICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0Nl
bGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJpZ0lu
dENhc2UpLCB1bnN1cmUoc3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJp
Z0ludENhc2UsIHN5bWJvbENhc2UpOwpAQCAtMTU4MjgsOCArMTYxMzAsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJlckNh
c2UpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBu
b3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwg
cHJvdmVuVHlwZShjaGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3Vy
ZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQz
MkNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51
bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwog
ICAgICAgICBpZiAocHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBp
c051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1
ZU51bGwpKTsKQEAgLTE2NTI3LDE1ICsxNjgzNiwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisg
ICAgTFZhbHVlIGxvd0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2Uu
dXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJp
Z0ludFVzZSk7CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7
Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOwor
CisgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNL
KGpzVmFsdWVWYWx1ZShyZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIo
cmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVy
bWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVybzsK
KyAgICB9CisjZW5kaWYKKwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwg
T3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9u
KQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY3MjEs
NyArMTcwNDgsNzIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5hZGQo
bV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAgIAor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1ZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAg
ICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJp
Z0ludDMyTWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJ
bnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNWYWx1
ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQorICAg
ICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAor
ICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1ZSBq
c1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxT
aHIoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVlIGJv
eEJpZ0ludDMyKExWYWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LmJpdE9yKAorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1ZSwg
QjM6OkludDY0KSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RB
bnlCaWdJbnQoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRv
cCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBl
LCB+U3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIC8v
IGlmIChpc0JpZ0ludDMyKQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAvLyBp
ZiAoIWlzQ2VsbCkKKyAgICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0dXJu
ICFpc0hlYXBCaWdJbnQKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBlKSwg
dW5zdXJlKGlzQmlnSW50MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZyb21C
bG9jayByZXR1cm5GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNOb3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUs
IHR5cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHJldHVyblRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXND
ZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0ludCA9
IG1fb3V0LmFuY2hvcihpc05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRy
dWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVu
ID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTcw
MzMsOCArMTc0MjUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAg
ICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsK
KyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAgY2Fz
ZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAg
ICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MjIwLDE4ICsxNzYyMCwz
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0
cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUg
Y2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05v
dEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9
IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAgIGlm
IChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0VG9G
YWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5i
cmFuY2goaXNDZWxsKHZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29u
dGludWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBy
ZXR1cm5Gb3JDZWxsID0gbV9vdXQuYW5jaG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5waGkoSW50MzIsIGRlZmF1bHRUb0ZhbHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1ZSBj
ZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0hl
YXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1f
b3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5iaWdJ
bnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZhbHVl
IGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNI
ZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAm
IFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAg
cmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAg
bV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3Njg5
LDE2ICsxODEwOSwzNSBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwg
bG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBl
ZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdl
LCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7Cisg
ICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewotICAg
ICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQs
IGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBs
b3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVk
Z2UpCisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVkZ2Ug
ZWRnZSkKICAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2Up
KTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxs
KHZhbHVlKSk7CiAgICAgfQogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRl
QmlnSW50MzIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNW
YWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9D
SEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50
MzIodmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVk
Z2UpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7CisgICAg
fQorI2VuZGlmCisKICAgICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBM
VmFsdWUgY2VsbCkKICAgICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShj
ZWxsKSwgZWRnZSwgU3BlY09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IGQzNzIyNzdm
YzA2Li4zYzkxMzdlZjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0
JiBleGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFs
dWVQcm9maWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAg
ICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVl
KGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAg
fQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXplIGFu
IG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggYWIzZTljNjI5YWQuLjI1ODllMmNmYzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtNDIyLDcgKzQyMiw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1
bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAgICAg
dm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0g
MDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNC
aWdJbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5j
ZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8
fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGViYjQ0
Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJT
YW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0NjlmZTY5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJc29D
ZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4
MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAt
MTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAvLyBC
aWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICByZXN1
bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwgMTAp
OworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJpbmcg
PSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzRkOWM3MjdlMDcuLmFkNGIyMTVjNTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAgIGNh
c2UgQmlnSW50VHlwZToKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBh
cmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKaW5kZXggZTMwOWVjZmM1NTEuLmM4OWY2ODVmZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC02ODgsNyArNjg4LDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmUKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcg
Y29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
IC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAg
ICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8v
ICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAt
Njk4LDYgKzY5OCw4IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9C
b29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJl
cikgewogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZh
bHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAgLTcwNiw3ICs3MDgsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZQogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsK
ICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsK
LSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsK
KyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewog
ICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzI5LDcgKzczMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlCiAgICAgY29tcGFyZVB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5w
YXlsb2FkR1BSKCksIHJlc3VsdCwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwog
Ci0gICAgaXNCaWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsK
ICAgICBsb2FkMzIoQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgcmVzdWx0KTsKICAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKQEAgLTc1Miw2ICs3NTQsMTUgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRD
b252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAg
ICBkb25lLmFwcGVuZChqdW1wKCkpOwogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50
MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdw
cigpLCByZXN1bHQpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOwor
ICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0KTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RC
aWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQpA
QCAtNzY3LDcgKzc3OCw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAgICAgLy8gSW1w
bGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYg
KHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1
ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMg
SGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAg
IC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVy
YWRlcy1hcy11bmRlZmluZWQKQEAgLTc3Nyw2ICs3ODgsOCBAQCBBc3NlbWJseUhlbHBlcnM6Okp1
bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdz
IHZhbAogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERv
dWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAg
Ly8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2Ugewog
ICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03ODYsNyAr
Nzk5LDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5n
KHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50
KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhl
YXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgxNyw3ICs4MzAs
NyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZW
YWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoUHRy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZElt
bVB0cihqc0VtcHR5U3RyaW5nKHZtKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0g
ICAgaXNCaWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAg
ICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwog
ICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTg0Miw2ICs4NTUsMTUgQEAgQXNzZW1ibHlI
ZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBK
U1ZhbHVlUmVncyB2YWwKICAgICB9CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQz
Mktub3duTm90TnVtYmVyKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVlLmdw
cigpLCBzY3JhdGNoKTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaCk7
CisgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8s
IHNjcmF0Y2gpKTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQz
Mi5saW5rKHRoaXMpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwg
dmFsdWUuZ3ByKCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUp
KSkpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAppbmRleCAzZDdlZjdjNzcyNy4uNTEwMTQ5NTgyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyOSw3ICs5MjksMzcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIp
OwogI2VuZGlmCiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEp1bXAgYnJh
bmNoSWZCaWdJbnQzMihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9k
ZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICB7CisgICAgICAgIEp1bXAgbnVtYmVyID0g
YnJhbmNoSWZOdW1iZXIoZ3ByLCBtb2RlKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5j
aElmQmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICBudW1iZXIu
bGluayh0aGlzKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BS
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVh
bCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQor
ICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJl
Z3MsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qmln
SW50MzJLbm93bk5vdE51bWJlcihyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVt
cCBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRl
bXBHUFIpCisgICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsK
KyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0
KE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsK
KyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0
aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJl
IGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDgoCkBAIC05NTEsMTMgKzk4MSwxNCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9
Ci0gICAgCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhh
dCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNo
SWZTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBT
dHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1
bXAgYnJhbmNoSWZTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShj
ZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVn
IGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsg
fQotICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmVHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJ
bnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJ
bnRUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7
IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAgSnVt
cCBicmFuY2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVu
Y3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1
bmN0aW9uVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0K
ICAgICAKQEAgLTEzNTYsNiArMTM4NywxOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBk
b25lLmxpbmsodGhpcyk7CiAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgdm9pZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgewor
ICAgICAgICB1cnNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsK
KyAgICB9CisKKyAgICB2b2lkIGJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAg
ICBsc2hpZnQ2NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAg
ICBvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQog
I2VuZGlmCiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTcxNSw3ICsxNzU5LDcgQEAgcHVi
bGljOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMg
c3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAg
ICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMg
aGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAg
Ly8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcy
Niw2ICsxNzcwLDggQEAgcHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAg
ICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBi
b29sZWFuCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8g
ICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJl
dHVybiB1bmRlZmluZWQKICAgICAgICAgLy8gfQpAQCAtMTc1NywxMCArMTgwMywxMCBAQCBwdWJs
aWM6CiAKICAgICAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RC
aWdJbnQgPSBicmFuY2hJZk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFw
QmlnSW50ID0gYnJhbmNoSWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9y
KFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRo
aXMpOworICAgICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3Io
VHlwZW9mVHlwZTo6U3ltYm9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxp
bmsodGhpcyk7CkBAIC0xNzc2LDYgKzE4MjIsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5v
dEJvb2xlYW4gPSBicmFuY2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1
bmN0b3IoVHlwZW9mVHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxp
bmsodGhpcyk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIEp1bXAgbm90QmlnSW50MzIg
PSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAg
ICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBmYWxzZSk7CisgICAgICAgIG5vdEJpZ0lu
dDMyLmxpbmsodGhpcyk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGZ1bmN0b3IoVHlwZW9m
VHlwZTo6VW5kZWZpbmVkLCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggYzZlNjFiODliZjkuLmQ1ZWE5OWYzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0zNzAsNiArMzcwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfdW5kZWZpbmVkX29yX251bGwpCiAgICAgICAgIERF
RklORV9PUChvcF9pc19ib29sZWFuKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfbnVtYmVyKQor
ICAgICAgICBERUZJTkVfT1Aob3BfaXNfYmlnX2ludCkKICAgICAgICAgREVGSU5FX09QKG9wX2lz
X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2NlbGxfd2l0aF90eXBlKQogICAgICAg
ICBERUZJTkVfT1Aob3BfamVxX251bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MDcz
NTVjNmQ3MS4uZDA0M2ZjZWIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI4LDYg
KzUyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZp
bmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lz
X2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251
bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2lu
dChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlw
ZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwCmluZGV4IDc3ODY3M2UxOGFjLi42N2IwMGIwYTAwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NzYsNiArNDc2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsK
ICAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQ
cm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlv
biwgbmVnYXRlSUMpOworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0
aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmln
SW50CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KTsKIH0KIApAQCAtNDg0LDYgKzQ4NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IGJpdHdpc2Vf
Y2FzdDxKSVROZWdJQyo+KG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5nZXQoY3VycmVudEluc3RydWN0
aW9uKSk7CisgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9w
ZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAg
ICBlbWl0TWF0aElDU2xvdzxPcE5lZ2F0ZT4obmVnSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3Bl
cmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVBy
b2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZmM5NGNhMzcyNDkuLmNlYjYwMGU3ZjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxw
YXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4Myw2ICsyODMsMzcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCisjaWYgVVNF
KEJJR0lOVDMyKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3Bl
cmFuZDsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICBK
dW1wIGlzQ2VsbCA9IGJyYW5jaElmQ2VsbChyZWdUMCk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spLCByZWdUMSk7CisgICAgYW5kNjQocmVnVDEsIHJlZ1Qw
KTsKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qmln
SW50MzJUYWcpLCByZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisKKyAgICBpc0NlbGwubGluayh0aGlz
KTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihIZWFwQmlnSW50VHlwZSksIHJlZ1QwKTsKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworCisgICAgZG9uZS5saW5r
KHRoaXMpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKyNlbHNlIC8vIGlm
ICFVU0UoQklHSU5UMzIpCitOT19SRVRVUk4gdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChj
b25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgLy8gSWYgd2Ugb25seSBoYXZlIEhlYXBCaWdJbnRz
LCB0aGVuIHdlIGVtaXQgaXNDZWxsV2l0aFR5cGUgaW5zdGVhZCBvZiBpc0JpZ0ludC4KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorI2VuZGlmCisKIHZvaWQgSklUOjplbWl0
X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0Nl
bGxXaXRoVHlwZT4oKTsKQEAgLTU3MCwxMiArNjAxLDUzIEBAIHZvaWQgSklUOjpjb21waWxlT3BT
dHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BT
dHJpCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7Ci0gICAgCisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWlu
ZyAndHlwZScgdG8gYmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQg
PT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAo
bGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7Cisg
ICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCisKKyAgICAvLyBUaGlzIGZyYWdt
ZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGgg
YSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJl
cXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRo
ZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8
NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQg
MAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBi
ZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92
ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShyZWdU
MSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJp
dHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdUNSwg
cmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9yNjQo
cmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJl
Z1QzLCByZWdUNSkpOworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgcmVnVDEsIHJlZ1Q1
KTsKKyAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDUpOworCisgICAg
bW92ZShyZWdUMCwgcmVnVDIpOworICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMg
YSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwg
cmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNl
OiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93
IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChy
ZWdUMikpOworCisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGlmICh0eXBlID09IENvbXBpbGVP
cFN0cmljdEVxVHlwZTo6TlN0cmljdEVxKQorICAgICAgICB4b3I2NChUcnVzdGVkSW1tNjQoMSks
IHJlZ1Q1KTsKKyAgICBib3hCb29sZWFuKHJlZ1Q1LCBKU1ZhbHVlUmVncyB7IHJlZ1Q1IH0pOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUNSk7CisjZWxzZSAvLyBpZiAhVVNF
KEJJR0lOVDMyKQogICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIg
c3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1Qy
KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKLSAgICAKKwogICAgIC8v
IEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBp
bnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CiAgICAgLy8gaWYgaXQncyBhIGRv
dWJsZS4KICAgICBKdW1wIGxlZnRPSyA9IGJyYW5jaElmSW50MzIocmVnVDApOwpAQCAtNTkyLDYg
KzY2NCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpCiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
KTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjE0LDYgKzY4Nyw0NSBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIENvbXBpbGVPcAogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAs
IHNyYzIsIHJlZ1QxKTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICAvKiBBdCBhIGhpZ2ggbGV2
ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQg
aXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgIGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMg
Q2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBu
b3RUYWtlbjsKKyAgICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0
IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0
ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJy
YW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBh
IEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBp
dCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBu
b3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQg
c2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisg
ICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOworICAgIGFk
ZDY0KHJlZ1Q1LCByZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBsc2hpZnQ2
NChUcnVzdGVkSW1tMzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsKKworICAg
IEp1bXAgYXJlRXF1YWwgPSBicmFuY2g2NChFcXVhbCwgcmVnVDAsIHJlZ1QxKTsKKyAgICBpZiAo
dHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQorICAgICAgICBhZGRKdW1w
KGFyZUVxdWFsLCB0YXJnZXQpOworCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIC8vIEp1
bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBC
aWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3Vs
ZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwg
d2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOworCisgICAgaWYgKHR5cGUgPT0gQ29t
cGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpIHsKKyAgICAgICAgYWRkSnVtcChqdW1wKCks
IHRhcmdldCk7CisgICAgICAgIGFyZUVxdWFsLmxpbmsodGhpcyk7CisgICAgfQorI2Vsc2UgLy8g
aWYgIVVTRShCSUdJTlQzMikKICAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRv
IGNvdmVyIHN0cmluZ3MpLgogICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKICAgICBvcjY0KHJlZ1Qx
LCByZWdUMik7CkBAIC02MjcsMTEgKzczOSwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0
RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcAog
ICAgIEp1bXAgcmlnaHRPSyA9IGJyYW5jaElmSW50MzIocmVnVDEpOwogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTnVtYmVyKHJlZ1QxKSk7CiAgICAgcmlnaHRPSy5saW5rKHRoaXMpOwotCiAgICAg
aWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKICAgICAgICAgYWRk
SnVtcChicmFuY2g2NChFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBlbHNlCiAg
ICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdldCk7
CisjZW5kaWYKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02ODYsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVtcCBp
c05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmln
SW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2Vs
bC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCmluZGV4IDFjMzA3NzY5ZGFhLi40ODQwMzAwYjI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMjg4LDYgKzI4OCwxMiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQogCitOT19SRVRVUk4g
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAg
Ly8gV2UgZW1pdCBpc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkLCBzaW5jZSBCaWdJbnQzMiBpcyBu
b3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtODY2LDcg
Kzg3Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAK
ICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJ
Zk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAg
ICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCA3YWUxNTBjYzY2MS4uNDA4MThmYmFjNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTMxNSw2ICsxMzE1LDE5
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVx
dWFsKGdsb2JhbE9iamVjdCwgc3JjMSwgc3JjMik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGhlYXBCaWdJbnQsIGludDMyX3Qg
c21hbGxJbnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBB
U1NFUlQoaGVhcEJpZ0ludC0+aXNIZWFwQmlnSW50KCkpOworCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTQmlnSW50Kj4oaGVhcEJpZ0ludCktPmVxdWFsc1RvSW50MzIoc21hbGxJbnQpOworfQor
I2VuZGlmCisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlX
aXRoUHJvZmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4MzgsNiArMjg1MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CiAKKy8vIEZJWE1FOiBp
dCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2lu
Y2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTI4NTAsOCArMjg2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZh
bHVlKSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigp
OworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAg
ICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFw
QmlnSW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTI4NTksNiArMjg4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQog
CisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFs
dWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpA
QCAtMjg3MywxMCArMjg5NiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFs
dWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJ
TlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3Vs
dChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2
YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkg
eworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHBy
aW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJl
c3VsdChyZXN1bHQpOwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICB9CiAKQEAgLTI4ODcsNiArMjkyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291
bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRo
ZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTA3LDkgKzI5NDEsMjAg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlz
QmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1p
bnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJp
bVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikg
eworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAg
fQorICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOwor
ICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUu
YXNIZWFwQmlnSW50KCkpOwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAg
LTI5MjEsNiArMjk2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVy
IHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNh
biBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjk0MCw5ICsyOTg2LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1W
YWx1ZSkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhp
cyBmdW5jdGlvbiBwcm9maWxlIHRoZSBhcmd1bWVudCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHBy
aW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4p
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlN
aW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVy
ID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IDhlZmI1YjVhYzk4Li40M2I5YTBhODY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNiw2ICsyMDYsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogaGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lOVEVSTkFMOwogI2Vs
c2UKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogbGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgKaW5kZXggNTI0MzVhNjYxMjAuLjJhMmJiOTlmOTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xMzYs
NiArMTM2LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAwCiAjZW5kaWYKIAor
I2lmIFVTRShCSUdJTlQzMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAorI2VuZGlmCisKICNpZiBDUFUoQUREUkVT
UzY0KQogI2RlZmluZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBi
NTY5OWMzMGQyYy4uNmZmMTk3YjIzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5Niw2ICsxOTYsMTEgQEAgaWYg
SlNWQUxVRTY0CiAgICAgY29uc3QgVmFsdWVOdWxsICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6
OlZhbHVlTnVsbAogICAgIGNvbnN0IFRhZ051bWJlciAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVl
OjpOdW1iZXJUYWcKICAgICBjb25zdCBOb3RDZWxsTWFzayAgICAgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6Tm90Q2VsbE1hc2sKKyAgICBpZiBCSUdJTlQzMgorICAgICAgICBjb25zdCBUYWdCaWdJbnQz
MiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMlRhZworICAgICAgICBjb25zdCBNYXNrQmln
SW50MzIgPSBjb25zdGV4cHIgSlNWYWx1ZTo6QmlnSW50MzJNYXNrCisgICAgZW5kCisgICAgY29u
c3QgTG93ZXN0T2ZIaWdoQml0cyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRz
CiBlbHNlCiAgICAgY29uc3QgSW50MzJUYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6SW50MzJUYWcK
ICAgICBjb25zdCBCb29sZWFuVGFnID0gY29uc3RleHByIEpTVmFsdWU6OkJvb2xlYW5UYWcKQEAg
LTUyMSw2ICs1MjYsNyBAQCBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0ZXhwciBKU0Z1bmN0
aW9uVHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29uc3QgRGVy
aXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCiBjb25zdCBQcm94eU9i
amVjdFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmplY3RUeXBlCitjb25zdCBIZWFwQmlnSW50VHlw
ZSA9IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBu
ZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBt
YW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0
X2J5X3ZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjEuLjU4YmYxZjY2MWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMTMwNiw2ICsxMzA2LDEyIEBAIGxsaW50T3BXaXRoUmV0dXJu
KG9wX2lzX251bWJlciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKIGVuZCkKIAogCisjIE9uIDMyLWJpdCBwbGF0Zm9ybXMgQklHSU5UMzIgaXMgbm90IHN1
cHBvcnRlZCwgc28gd2UgZ2VuZXJhdGUgb3BfaXNfY2VsbF93aXRoX3R5cGUgaW5zdGVhZCBvZiBv
cF9pc19iaWdfaW50CitsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVu
dXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgbm90U3VwcG9ydGVkKCkKK2VuZCkKKworCiBsbGlu
dE9wV2l0aFJldHVybihvcF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCwgdDMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGFlMmUzNzczZmZkLi5mOTVlN2M0NzJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NDQsMjQgKzg0NCw0OCBAQCBs
bGludE9wV2l0aFJldHVybihvcF9pc191bmRlZmluZWRfb3JfbnVsbCwgT3BJc1VuZGVmaW5lZE9y
TnVsbCwgbWFjcm8gKHNpemUsIGdldAogZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmljdEVxT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBjcmVhdGVCb29sZWFuKQogICAgIGxsaW50T3BXaXRo
UmV0dXJuKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQwKQogICAgICAgICBnZXQobV9s
aHMsIHQyKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAg
ICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCisKKyAgICAgICAgIyBB
dCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmln
aHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIHJl
c3VsdCA9IChsZWZ0ID09IHJpZ2h0KTsKKyAgICAgICAgIyBpZiAocmVzdWx0KQorICAgICAgICAj
ICAgICBnb3RvIGRvbmU7CisgICAgICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBD
ZWxsKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGRvbmU6CisgICAg
ICAgICMgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50
cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFu
Y2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2Ug
dXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlz
IHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3
aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAg
ICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBv
bmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9y
IGVxdWFsIDE8PDUwLgorICAgICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBtb3ZlIHQxLCB0Mwor
ICAgICAgICBtb3ZlIExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisg
ICAgICAgIGFkZHEgdDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAx
LCB0NQorICAgICAgICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgY3FlcSB0MCwgdDEs
IHQ1CisgICAgICAgIGJ0cW56IHQ1LCB0NSwgLmRvbmUgI2lzIHRoZXJlIGEgYmV0dGVyIHdheSBv
ZiBjaGVja2luZyB0NSAhPSAwID8KKwogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEg
dDEsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicgaWYgbm90IGZvciBC
aWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2VsbCB0byBiZSBzdHJp
Y3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6
IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxl
ZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5sZWZ0T0s6Ci0g
ICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAgIGJ0cW56IHQxLCBu
dW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFsaXR5T3BlcmF0aW9u
KHQwLCB0MSwgdDApCi0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgICAgICByZXR1cm4o
dDApCisKKyAgICAuZG9uZToKKyAgICAgICAgY3JlYXRlQm9vbGVhbih0NSkKKyAgICAgICAgcmV0
dXJuKHQ1KQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVv
cGNvZGVOYW1lJSkKQEAgLTg3MSwzMyArODk1LDUzIEBAIGVuZAogCiAKIHN0cmljdEVxT3Aoc3Ry
aWN0ZXEsIE9wU3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxZXEg
bGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9wZXJhbmQpIHhvcnEgVmFsdWVG
YWxzZSwgb3BlcmFuZCBlbmQpCiAKIAogc3RyaWN0RXFPcChuc3RyaWN0ZXEsIE9wTnN0cmljdGVx
LAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcW5lcSBsZWZ0LCByaWdodCwgcmVz
dWx0IGVuZCkKKyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZVRydWUsIG9wZXJhbmQgZW5k
KQogCiAKLW1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgZXF1YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcXVhbGl0eUp1bXBPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIGp1bXBJZkVxdWFsLCBqdW1wSWZOb3RFcXVhbCkKICAgICBsbGlu
dE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBn
ZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBnZXQo
bV9yaHMsIHQzKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkK
ICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MywgdDEpCisKKyAgICAgICAg
IyBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUgfHwg
cmlnaHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAj
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAjICAgICBnb3RvIGp1bXBUYXJnZXQ7CisgICAg
ICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAjICAgICBn
b3RvIHNsb3dQYXRoOworICAgICAgICAjIGdvdG8gb3RoZXJKdW1wVGFyZ2V0CisKKyAgICAgICAg
IyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERv
dWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBi
ZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJl
cgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGws
IHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgIyBMZWF2
aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAgICAgICAgbW92ZSB0MCwg
dDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBtb3ZlIHQxLCB0MworICAgICAgICBtb3Zl
IExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisgICAgICAgIGFkZHEg
dDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAxLCB0NQorICAgICAg
ICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgYnFlcSB0MCwgdDEsIC5lcXVhbAorCisg
ICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicg
aWYgbm90IGZvciBCaWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2Vs
bCB0byBiZSBzdHJpY3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0Mgog
ICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51
bWJlclRhZywgLmxlZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAg
IC5sZWZ0T0s6Ci0gICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAg
IGJ0cW56IHQxLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFs
aXR5T3BlcmF0aW9uKHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKIAot
ICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCisgICAgICAgIGp1
bXBJZk5vdEVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQorCisgICAgLmVxdWFs
OgorICAgICAgICBqdW1wSWZFcXVhbChqdW1wLCBtX3RhcmdldExhYmVsLCBkaXNwYXRjaCkKIAog
ICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2Rl
TmFtZSUpCkBAIC05MDcsMjYgKzk1MSwyOCBAQCBlbmQKIAogCiBzdHJpY3RFcXVhbGl0eUp1bXBP
cChqc3RyaWN0ZXEsIE9wSnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBicWVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQotCisgICAgbWFjcm8gKGp1bXAsIHRhcmdl
dExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJlbCkgZW5kLAorICAgIG1hY3JvIChqdW1w
LCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogCiBzdHJpY3RFcXVhbGl0
eUp1bXBPcChqbnN0cmljdGVxLCBPcEpuc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJxbmVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQorICAgIG1hY3JvIChqdW1w
LCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kLAorICAgIG1hY3JvIChqdW1w
LCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGp1bXAodGFyZ2V0TGFiZWwpIGVuZCkKIAogbWFjcm8g
cHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQogICAgIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyB1cGRh
dGVBcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0
MV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJp
dGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAgZW5kCiAK
ICAgICAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0
MwotICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4gdDEsIHNy
Y0RzdCBpbiB0MwotICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAgICAgaW50
ZWdlck9wZXJhdGlvbih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAg
ICAgIHN0b3JlcSB0MywgW2NmciwgdDAsIDhdCisgICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwg
dDEKKyAgICAgICAgbWV0YWRhdGEodDIsIHQzKQorICAgICAgICAjIHNyY0RzdCBpbiB0MSwgbWV0
YWRhdGEgaW4gdDIKKyAgICAgICAgIyBGSVhNRTogdGhlIG5leHQgbGluZSBqdW1wcyB0byB0aGUg
c2xvdyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNhdGVk
IHBhdGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93
CisgICAgICAgIGludGVnZXJPcGVyYXRpb24odDEsIC5zbG93KQorICAgICAgICBvcnEgbnVtYmVy
VGFnLCB0MQorICAgICAgICBzdG9yZXEgdDEsIFtjZnIsIHQwLCA4XQogICAgICAgICB1cGRhdGVB
cml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQogICAgICAgICBkaXNwYXRjaCgpCiAKQEAgLTkz
NCw2ICs5ODAsNyBAQCBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVn
ZXJPcGVyYXRpb24pCiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1l
JSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKKwogZW5kCiAKIGxsaW50T3BXaXRoUHJv
ZmlsZShvcF90b19udW1iZXIsIE9wVG9OdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCkBAIC0xMjc5LDYgKzEzMjYsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
bnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIHJldHVybih0MSkKIGVuZCkKIAoraWYgQklHSU5UMzIKKyAgICBsbGludE9wV2l0aFJldHVy
bihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCBy
ZXR1cm4pCisgICAgICAgIGdldChtX29wZXJhbmQsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICAgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAu
bm90Q2VsbENhc2UKKyAgICAgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEhlYXBCaWdJbnRU
eXBlLCB0MQorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKKyAgICAgICAgcmV0dXJuKHQxKQor
ICAgIC5ub3RDZWxsQ2FzZToKKyAgICAgICAgYW5kcSBNYXNrQmlnSW50MzIsIHQwCisgICAgICAg
IGNxZXEgdDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAg
ICAgICAgcmV0dXJuKHQwKQorICAgIGVuZCkKK2Vsc2UKKyMgaWYgQklHSU5UMzIgaXMgbm90IHN1
cHBvcnRlZCB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lz
X2JpZ19pbnQKKyAgICBsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVu
dXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZW5kKQor
ZW5kCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdp
dGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldHUoc2l6
ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggODRmZTM5OWNkOGMuLjRiOTQ0NTA1ZTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtODMs
NiArODMsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50
RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICBpZiAocmFkaXggPT0gMTAp
CiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50
KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9y
UGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2ln
bmVkKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworCiAgICAgLy8gRklYTUU6IFdl
IGFyZSBhbGxvY2F0aW5nIGEgSlNCaWdJbnQganVzdCB0byBiZSBhYmxlIHRvIHVzZQogICAgIC8v
IEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcgd2hlbiByYWRpeCBpcyBub3QgMTAuCiAgICAgLy8gVGhp
cyBjcmVhdGVzIHNvbWUgR0MgcHJlc3N1cmUsIGJ1dCBzaW5jZSB0aGVzZSBpZGVudGlmaWVycwpA
QCAtOTAsMTEgKzk0LDE1IEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFr
ZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgLy8gaXQgd29u
dCBiZSBtdWNoIHByb2JsZW1hdGljLCBnaXZlbiBzdWNoIGNhc2VzIGFyZSB2ZXJ5IHJhcmUuCiAg
ICAgLy8gVGhlcmUgaXMgYSBsb3Qgb2Ygb3B0aW1pemF0aW9ucyB3ZSBjYW4gYXBwbHkgaGVyZSB3
aGVuIG5lY2Vzc2FyeS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NjI3Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
Ci0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwg
aWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhy
b3dFeGNlcHRpb25zLCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBiaWdJbnQsIDEw
KSkpOworICAgIEpTQmlnSW50KiBoZWFwQmlnSW50OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgaGVhcEJpZ0ludCA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UKKyNlbmRp
ZgorICAgICAgICBoZWFwQmlnSW50ID0gYmlnSW50LmFzSGVhcEJpZ0ludCgpOworCisgICAgbV9p
ZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJbnQ6OnRy
eUdldFN0cmluZyh2bSwgaGVhcEJpZ0ludCwgMTApKSk7CiAgICAgcmV0dXJuIG1faWRlbnRpZmll
cnMubGFzdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggZTk4MDMzYTJiYTYuLjJiYmI2YzM0ZGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC00Myw3
ICs0Myw2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDc3ZDhjYWYyMzY4
Li44ZWQxNGFhOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDE4ICs3NSw2IEBAIHZvaWQgQmlnSW50Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5
cGUpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBib29sIGlzU2FmZUludGVnZXIoSlNWYWx1
ZSBhcmd1bWVudCkKLXsKLSAgICBpZiAoYXJndW1lbnQuaXNJbnQzMigpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGlmICghYXJndW1lbnQuaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgZG91YmxlIG51bWJlciA9IGFyZ3VtZW50LmFzRG91YmxlKCk7Ci0gICAg
cmV0dXJuIHRydW5jKG51bWJlcikgPT0gbnVtYmVyICYmIHN0ZDo6YWJzKG51bWJlcikgPD0gbWF4
U2FmZUludGVnZXIoKTsKLX0KLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgQVNTRVJU
KGFyZ3VtZW50LmlzUHJpbWl0aXZlKCkpOwpAQCAtOTQsMjAgKzgyLDI0IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGFyZ3VtZW50KQogICAgIAogICAgIGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKLSAgICAKKworICAgIGlmIChhcmd1bWVu
dC5pc0Jvb2xlYW4oKSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVh
bigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOworI2VuZGlmCisgICAgfQorCisg
ICAgaWYgKGFyZ3VtZW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nVmll
dyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCB2aWV3KSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIEFTU0VSVChhcmd1bWVudC5p
c1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNT
eW1ib2woKSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IAotICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3Vt
ZW50LmFzQm9vbGVhbigpKSkpOwotICAgIAotICAgIGlmIChhcmd1bWVudC5pc1VuZGVmaW5lZE9y
TnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFs
aWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwotICAgIAotICAgIEFT
U0VSVChhcmd1bWVudC5pc1N0cmluZygpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKLSAgICB9KSk7CisgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBU
b0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzExMSwyMiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewotICAgICAgICBpZiAo
IWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJO
b3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIo
KSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOwor
I2VuZGlmCisgICAgfQogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHBy
aW1pdGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJsZSgpKSB7Cisg
ICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAgICAgICAgaWYg
KHRydW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBtYXhTYWZlSW50
ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUgaW50ZWdlciJf
cykpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmln
SW50MzIodm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwog
ICAgIH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KGdsb2Jh
bE9iamVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYuLmU2MTk4MmI5
M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8
dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzcsNyArMzcsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
QmlnSW50T2JqZWN0KTsKIGNvbnN0IENsYXNzSW5mbyBCaWdJbnRPYmplY3Q6OnNfaW5mbyA9IHsg
IkJpZ0ludCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoQmlnSW50T2JqZWN0KSB9OwogCiAKLUJpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0Ojpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogYmln
SW50KQorQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJpZ0ludE9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50T2JqZWN0Pih2bS5o
ZWFwKSkgQmlnSW50T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJpZ0ludE9iamVjdFN0cnVjdHVy
ZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnQpOwpAQCAtNDksNyAr
NDksNyBAQCBCaWdJbnRPYmplY3Q6OkJpZ0ludE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogfQogCi12b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0JpZ0ludCogYmlnSW50KQordm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCmluZGV4IDg0NzY3MTBmMjMyLi5kZWE4MWQyMmUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGlt
YUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyAr
MjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTEgKzQwLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLmJpZ0ludE9iamVjdFNwYWNlPG1vZGU+KCk7
CiAgICAgfQogCi0gICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU0JpZ0ludCopOworICAgIHN0YXRpYyBCaWdJbnRPYmplY3QqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
Ci0gICAgSlNCaWdJbnQqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc0JpZ0ludChK
U1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7IH0KKyAgICBKU1ZhbHVlIGludGVybmFs
VmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKTsg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTcs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3Qg
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQmlnSW50Kik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTVmFsdWUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEJpZ0ludE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogfTsKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKEJpZ0ludE9iamVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAK
aW5kZXggM2VmZDQxZDdkYzMuLjlhMTRmNjZhODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTgxLDEyICs4MSwyNCBAQCB2
b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShW
TSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBG
SVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJl
LWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0
aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVl
LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0
aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVl
LmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2Fz
dDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAg
ICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJ
bnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1
ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIo
KSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNiw2ICsxMjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKIH0KIAorLy8gRklYTUU6IHRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNh
bmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmln
SW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKaW5kZXggYjhkZTk2NTU4MmYuLjI2NjUyMGVjZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw2IEBA
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2OSwxMyArNDY4LDggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BJbmM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVz
dWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNJbmMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNCaWdJ
bnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkp
OwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihy
ZXN1bHRWYXJpYW50KSArIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0
ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNDg0LDEzICs0NzgsOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcERlYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0
ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91Ymxl
PiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBK
U0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJp
YW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3Vi
bGU+KHJlc3VsdFZhcmlhbnQpIC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RP
TShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcsNyArNDk2LDE1
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0
ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiAgICAgVW5hcnlBcml0aFByb2ZpbGUmIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKICAgICBwcm9maWxlLm9ic2VydmVBcmcob3Bl
cmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0JpZ0ludCgp
KTsKLSAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKKworICAgIGlmIChyZXN1bHQuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCisgICAgZWxzZSB7CisgICAg
ICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50
MzIoKSkgewogICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNJbnQzMigpKQogICAgICAgICAgICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCk7CkBAIC01MjcsMTAgKzUyNCw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0
ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUu
c2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2Vy
dmVkQmlnSW50KCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVt
ZXJpYygpOworICAgIH0KIH0KICNlbHNlCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9
CkBAIC01NDUsOCArNTM5LDIxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAg
ICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0g
cHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01J
TikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7
CisgICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKG1ldGFk
YXRhLCByZXN1bHQsIG9wZXJhbmQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsK
KyAgICB9CisjZW5kaWYKKworICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFs
dWUuYXNIZWFwQmlnSW50KCkpOwogICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0
LCB7CiAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRh
dGEsIHJlc3VsdCwgb3BlcmFuZCk7CiAgICAgICAgIH0pOwpAQCAtNTg0LDggKzU5MSwxMiBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiBjb2RlQgogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkSW50NTJPdmVyZmxvdygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmIChyZXN1bHQuaXNCaWdJbnQoKSkKLSAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJp
Z0ludCgpOworICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBl
bHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVk
QmlnSW50MzIoKTsKKyNlbmRpZgogICAgIGVsc2UgCiAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2
ZWROb25OdW1lcmljKCk7CiB9CkBAIC02MDcsMTMgKzYxOCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90b19udW1lcmljKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcFRvTnVtZXJpYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNv
ZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4g
cmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0g
V1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkpOwogICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCkBAIC02NDksNyArNjU1LDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2FkZCkKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBhcml0aG1ldGljIGFu
ZCBiaXR3aXNlIG9wZXJhdGlvbnMgbmVlZCB0byBiZSBzdXJlIHRvIHJ1bgotLy8gdG9OdW1iZXIo
KSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdG9OdW1iZXIoKSBpcyBp
ZGVtcG90ZW50CisvLyB0b051bWVyaWMvdG9CaWdJbnRPckludDMyKCkgb24gdGhlaXIgb3BlcmFu
ZHMgaW4gb3JkZXIuICAoQSBjYWxsIHRvIHRoZXNlIGlzIGlkZW1wb3RlbnQKIC8vIGlmIGFuIGV4
Y2VwdGlvbiBpcyBhbHJlYWR5IHNldCBvbiB0aGUgQ2FsbEZyYW1lLikKIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX211bCkKQEAgLTY3MSwyNCArNjc3LDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3N1YikKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU3ViPigpOwogICAgIEpT
VmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0
TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N1YihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1
bHQsIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9w
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3Vi
dHJhY3Rpb24uIikpOwotICAgIH0KLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
YykpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRl
QXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMs
IHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzAwLDI2ICs2OTAsOCBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BE
aXY+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUo
KTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsK
LSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGl2KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxl
ZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iKSk7Ci0gICAgfQotCi0gICAgZG91YmxlIGEgPSBXVEY6
OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJs
ZT4ocmlnaHROdW1lcmljKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGEgLyBiKTsK
ICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgIHVwZGF0ZUFyaXRo
UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1
bHQsIGxlZnQsIHJpZ2h0KTsKICAgICB9KTsKQEAgLTczMSwyNCArNzAzLDkgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX21vZCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTW9kPigp
OwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAg
ICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAg
YXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUmVtYWluZGVyKGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIAotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBS
RVRVUk4ocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
cmVtYWluZGVyIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRvdWJsZSBhID0gV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBXVEY6OmdldDxkb3Vi
bGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgUkVUVVJOKGpzTnVtYmVyKGpzTW9kKGEsIGIpKSk7Cisg
ICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCkBA
IC03NTcsMjUgKzcxNCw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcFBvdz4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhi
eXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1BvdyhnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENF
UFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmV4cG9uZW50
aWF0ZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAg
IFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiIpKTsKLSAgICB9
Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAg
ICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLQotICAgIFJFVFVS
Tihqc051bWJlcihvcGVyYXRpb25NYXRoUG93KGEsIGIpKSk7CisgICAgUkVUVVJOKHJlc3VsdCk7
CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCkBAIC03ODQsMjIgKzcyNSwx
MCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BMc2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IHJpZ2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6bGVm
dFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iKSk7
Ci0gICAgfQotCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+
KGxlZnROdW1lcmljKSA8PCAoV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSAmIDMxKSkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCkBAIC04MDgsMjIgKzczNywx
MCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BSc2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IHJpZ2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c2ln
bmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAg
ICAgICAgfQogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0
IG9wZXJhdGlvbi4iX3MpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIo
V1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpID4+IChXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1JTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQp
CkBAIC04NDksNzkgKzc2Niw0NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0bm90KQog
ewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdG5vdD4oKTsK
LSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1Zh
bHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmRO
dW1lcmljKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VO
b3QoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSk7Ci0g
ICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKLSAgICB9CisgICAgYXV0byBvcGVyYW5kID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCk7CiAKLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIofldURjo6Z2V0PGludDMy
X3Q+KG9wZXJhbmROdW1lcmljKSkpOworICAgIGF1dG8gcmVzdWx0ID0ganNCaXR3aXNlTm90KGds
b2JhbE9iamVjdCwgb3BlcmFuZCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQp
CiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0YW5kPigp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgp
LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKS50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVj
dCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQorICAgIGF1
dG8gbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdo
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBSRVRVUk5fUFJPRklM
RUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpICYgV1RGOjpnZXQ8aW50
MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNlQW5k
KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
IFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0b3IpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0
b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1Zh
bHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQorICAgIGF1dG8gbGVm
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJP
RklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIHwgV1RGOjpnZXQ8
aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNl
T3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9iaXR4b3IpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
Qml0eG9yPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocyku
anNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKGds
b2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iKSk7Ci0gICAg
fQorICAgIGF1dG8gbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAg
YXV0byByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBSRVRV
Uk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIF4gV1RG
OjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNC
aXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfdHlwZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
Y3BwCmluZGV4IDljMzQ1NDQyZjU0Li4xYzIzOWNiZmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEpTQmlnSW50
Ojppbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZSBpbml0VHlwZSkKIAogU3RydWN0dXJlKiBK
U0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmlnSW50VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEhlYXBCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYg
dm0pCkBAIC0xNDIsOCArMTQyLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShW
TSYgdm0sIGludDY0X3QgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVplcm8odm0pOwotICAgIAotICAgIGlmIChzaXplb2YoRGlnaXQpID09IDgpIHsKKwor
ICAgIC8vIFRoaXMgcGF0aCBpcyBub3QganVzdCBhbiBvcHRpbWl6YXRpb246IGJlY2F1c2Ugd2Ug
ZG8gbm90IGNhbGwgcmlnaHRUcmltIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwKKyAgICAv
LyBpdCB3b3VsZCBiZSBhIGJ1ZyB0byBjcmVhdGUgYSBCaWdJbnQgd2l0aCBsZW5ndGg9MiBpbiB0
aGlzIGNhc2UuCisgICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCB8fCAodmFsdWUgPD0gSU5UX01B
WCAmJiB2YWx1ZSA+PSBJTlRfTUlOKSkgewogICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3Jl
YXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgICAgIGlmICh2YWx1ZSA8IDApIHsK
ICAgICAgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRp
Y19jYXN0PHVpbnQ2NF90PigtKHZhbHVlICsgMSkpICsgMSkpOwpAQCAtMTg4LDM0ICsxOTAsMjEg
QEAgSlNWYWx1ZSBKU0JpZ0ludDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4o
dGhpcyk7CiB9CiAKLU9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVl
Rm9yU3RyaW5nKCkKLXsKLSAgICBpZiAoaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiAwOwotICAg
IAotICAgIGlmIChsZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKLSAgICAgICAgRGlnaXQgckRp
Z2l0ID0gZGlnaXQoMCk7Ci0gICAgICAgIGlmIChyRGlnaXQgPD0gOSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihyRGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4geyB9
OwotfQotCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKK0pTVmFs
dWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmlu
Z1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQo
KSkKICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzOCgp
LCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNC
aWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2Vy
TW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCBy
YWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCiB7CiAg
ICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHZtLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBz
aWduLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCBy
YWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5n
KTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50OjpzdHJpbmdU
b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCiB7CiAg
ICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcywgRXJyb3JQYXJzZU1vZGU6Oklnbm9y
ZUV4Y2VwdGlvbnMpOwogfQpAQCAtNDU0LDE2ICs0NDMsMjMgQEAgSlNCaWdJbnQqIEpTQmlnSW50
OjpyZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpT
QmlnSW4KIAogSlNCaWdJbnQqIEpTQmlnSW50OjppbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIHgpCiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBz
b21ldGhpbmcgYSBmYWlyIGJpdCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJ
bnRDb25zdGFudE9uZS5nZXQoKSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVy
biBhYnNvbHV0ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlVuc2lnbmVkKTsK
KyAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4
LT5sZW5ndGgoKSk7CisgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8g
c29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwgeCwgdm0uYmln
SW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICh4LT5pc1plcm8oKSkgeworICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gY3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAg
ICAgICByZXN1bHQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xv
YmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGds
b2JhbE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmln
SW50OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmln
SW50KiB5KQpAQCAtNTMyLDcgKzUyOCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAg
aWYgKHgtPnNpZ24oKSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHgg
JiAoLXkpID09IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHgg
JiB+KHktMSkKICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3Qs
IHksIHktPmxlbmd0aCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKICAgICByZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTY0
MCw3IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5n
R2VuZXJpYyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4
LCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBv
ZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJp
bmc7CiAKICAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcg
KzE3OTgsNyBAQCBib29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFy
c2VNb2RlIGVycm9yUGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgs
IEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKIApAQCAtMTgxMCw3ICsxODA2LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50Ojpw
YXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVu
c2kKICAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAg
ICAgICAgICsrcDsKIAotICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycwor
ICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYg
ZGF0YVtwXSA9PSAnMCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
ZGF0YVtwICsgMV0sICdiJykpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50
U2lnbjo6VW5zaWduZWQsIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0x
ODI0LDI0ICsxODIwLDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUlu
dFNpZ24gc2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgp
IHsKLSAgICAgICAgaWYgKGRhdGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAg
ICBlbHNlIGlmIChkYXRhW3BdID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScp
IHsKICAgICAgICAgICAgIHNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAg
ICsrcDsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAg
ICAgICAgICAgKytwOwogICAgIH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChn
bG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2ln
bik7Ci0KLSAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1
bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5n
dGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQ
YXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNW
YWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50
U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGgg
Pj0gMCk7CiAgICAgdW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4NDIsNyBA
QCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2Vw
dGlvbnMpCiAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBC
aWdJbnQiKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgIH0KIAogICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjYsNDQg
KzE4NTYsODQgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKIAogICAgIGxlbmd0aCA9IGVuZElu
ZGV4ICsgMTsKIAotICAgIGlmIChwID09IGxlbmd0aCkKKyAgICBpZiAocCA9PSBsZW5ndGgpIHsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmln
SW50MzIsIDApOworI2Vsc2UKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotCi0gICAg
dW5zaWduZWQgbGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1
bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRB
ID0gJ0EnICsgKHJhZGl4IC0gMTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRl
Rm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51
bGwgaWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVG
b3IgY2Fubm90IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1
bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKElu
aXRpYWxpemF0aW9uVHlwZTo6V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsg
aSA8IGxlbmd0aDsgaSsrLCBwKyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAg
IGlmIChkYXRhW2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGln
aXQgPSBkYXRhW2ldIC0gJzAnOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBk
YXRhW2ldIDwgbGltaXRhKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7
Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0g
ICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3Rh
dGljX2Nhc3Q8RGlnaXQ+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisjZW5k
aWYKICAgICB9CiAKLSAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNp
Z25lZCA/IHRydWUgOiBmYWxzZSk7Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1
cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhl
IGxhcmdlc3QgbnVtYmVyIHN1Y2ggdGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMy
IDw9IElOVDMyX01BWAorICAgIHVuc2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAg
c3dpdGNoIChyYWRpeCkgeworICAgIGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJ
bnQzMiA9IDMwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExp
bWl0Rm9yQmlnSW50MzIgPSAxMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAg
ICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MTY6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwog
Ci0gICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVy
cm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQg
dG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICB1bnNpZ25lZCBsaW1pdDAgPSAnMCcg
KyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyAr
IChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRB
ID0gJ0EnICsgKHN0YXRpY19jYXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25l
ZCBpbml0aWFsTGVuZ3RoID0gbGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgewor
ICAgICAgICBpbnQzMl90IGRpZ2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFz
aE9uT3ZlcmZsb3c+IG11bHRpcGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsK
KyAgICAgICAgICAgIGRpZ2l0ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSBy
YWRpeDsKKyAgICAgICAgICAgIGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQw
KQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBl
bHNlIGlmIChkYXRhW3BdID49ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAg
ICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGFbcF0gPj0gJ0EnICYmIGRhdGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQg
Kz0gZGF0YVtwXSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMp
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhF
cnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVy
LnVuc2FmZUdldCgpKTsKKworICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAg
IGlmIChwID09IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50
U2lnbjo6U2lnbmVkKQorICAgICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJ
bnQzMiwgZGlnaXQpOworI2Vsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRnJvbSh2
bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZGlnaXQpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaGVhcFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJh
ZGl4LCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CisgICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwg
aWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3Ig
Y2Fubm90IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICBpZiAo
IWhlYXBSZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAg
ICAgIGhlYXBSZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7
CisgICAgICAgIH0KKyAgICAgICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRp
Y19jYXN0PERpZ2l0PihtdWx0aXBsaWVyLnVuc2FmZUdldCgpKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+
KGRpZ2l0KSk7CisgICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+
c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJl
c3VsdC0+cmlnaHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0lu
dDo6ZGlnaXQodW5zaWduZWQgbikKQEAgLTE5MjcsMTggKzE5NTcsMjAgQEAgYm9vbCBKU0JpZ0lu
dDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFs
dWUuaXNOdW1iZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAg
ICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0
aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAo
dGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0
PGludDY0X3Q+KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAK
ICAgICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21w
YXJlVG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQog
Citib29sIEpTQmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhp
cy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRo
aXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxp
bnQ2NF90Pih2YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmln
SW50Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRo
aXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4u
OGUyYzE0OGU2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNh
aW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgy
LDYgKzgyLDE3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CiAKKyAgICBzdGF0aWMgSlNWYWx1ZSBtYWtlSGVhcEJpZ0ludE9yQmln
SW50MzIoVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQorICAgIHsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmICh2YWx1ZSA8PSBJTlRfTUFYICYmIHZhbHVlID49IElOVF9NSU4pCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQz
Ml90Pih2YWx1ZSkpOworI2VuZGlmCisKKyAgICAgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgdmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShzdGF0aWNfY2FzdDxK
U0NlbGwqPihwdHIpKTsKKyAgICB9CisKICAgICBlbnVtIGNsYXNzIEVycm9yUGFyc2VNb2RlIHsK
ICAgICAgICAgVGhyb3dFeGNlcHRpb25zLAogICAgICAgICBJZ25vcmVFeGNlcHRpb25zCkBAIC05
MCwxMyArMTAxLDEyIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERp
c2FsbG93RW1wdHlTdHJpbmcsIEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBh
cnNlSW50U2lnbiB7IFVuc2lnbmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCog
cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgs
IEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJ
bnRTaWduID0gUGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBw
YXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJy
b3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJp
bmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJh
ZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBh
cnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVl
IHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBF
cnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJp
bmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0
cmluZyB0cnlHZXRTdHJpbmcoVk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAg
IE9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJp
bmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAg
ZW51bSBjbGFzcyBDb21wYXJpc29uTW9kZSB7CkBAIC0xMTMsNiArMTIzLDcgQEAgcHVibGljOgog
ICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCos
IEpTQmlnSW50Kik7CiAgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENv
bXBhcmlzb25SZXN1bHQgY29tcGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAg
Ym9vbCBnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwg
SlNWYWx1ZSYgcmVzdWx0KSBjb25zdDsKQEAgLTIyMiwxMCArMjMzLDEwIEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0Jp
Z0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFy
c2VNb2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMg
SlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJy
b3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUlu
dE1vZGUgPSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1Zh
bHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJz
ZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUg
PSBQYXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50
KiBhbGxvY2F0ZUZvcihKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2ln
bmVkIGNoYXJjb3VudCk7CiAKQEAgLTI1OCw5ICsyNjksOSBAQCBwcml2YXRlOgogICAgIENhZ2Vk
VW5pcXVlUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxp
bmUgSlNCaWdJbnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFz
SGVhcEJpZ0ludChKU1ZhbHVlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+
aXNCaWdJbnQoKSk7CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7
CiAgICAgcmV0dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1ZGI3Y2Qz
ZmQxOS4uM2FjOWM2ODBjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAtNzEsNiArNzIsMTQgQEAgZG91Ymxl
IEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICBBU1NFUlQoIWlzSW50MzIoKSAmJiAhaXNEb3VibGUoKSk7CiAgICAgaWYgKGlz
Q2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQu
Il9zKTsKKyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoaXNUcnVl
KCkpCiAgICAgICAgIHJldHVybiAxLjA7CiAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFO
IDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCkBAIC0xMDEsNiArMTEw
LDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xv
YmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAg
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFs
T2JqZWN0LCBhc1ZhbHVlKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQz
MigpKQorICAgICAgICByZXR1cm4gQmlnSW50T2JqZWN0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgKnRoaXMpOworI2VuZGlmCiAKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0xMTgsNiArMTMxLDEzIEBAIEpTVmFsdWUg
SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNN
QU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2Jq
ZWN0LCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0
LCBhc1ZhbHVlKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7
CisgICAgICAgIEpTQ2VsbCogaGVhcEJpZ0ludCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KEpTQmln
SW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdC0+dm0oKSwgYmlnSW50MzJBc0ludDMyKCkpKTsK
KyAgICAgICAgcmV0dXJuIGhlYXBCaWdJbnQtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
fQorI2VuZGlmCisKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwogfQpAQCAtMTMwLDcgKzE1MCw3IEBAIEpTT2Jq
ZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygp
KQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7Ci0g
ICAgICAgIGlmIChpc0JpZ0ludCgpKQorICAgICAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKICAgICAgICAg
QVNTRVJUKGlzU3ltYm9sKCkpOwogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQ
cm90b3R5cGUoKTsKQEAgLTE0MCw2ICsxNjAsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRo
ZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bnVtYmVyUHJvdG90eXBlKCk7CiAgICAgaWYgKGlzQm9v
bGVhbigpKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5ib29sZWFuUHJvdG90eXBlKCk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOworI2VuZGlmCiAKICAgICBBU1NFUlQo
aXNVbmRlZmluZWRPck51bGwoKSk7CiAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7CkBAIC0y
ODYsNiArMzEwLDggQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1
cmUoCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN5bWJvbDogIiwgUmF3UG9pbnRlcihhc0NlbGwo
KSkpOwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNz
T2YoU3RydWN0dXJlOjppbmZvKCkpKQogICAgICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmU6
ICIsIGluQ29udGV4dCgqanNDYXN0PFN0cnVjdHVyZSo+KGFzQ2VsbCgpKSwgY29udGV4dCkpOwor
ICAgICAgICBlbHNlIGlmIChpc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIG91dC5wcmludCgi
QmlnSW50W2hlYXAtYWxsb2NhdGVkXTogYWRkcj0iLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihKU09i
amVjdDo6aW5mbygpKSkgewogICAgICAgICAgICAgb3V0LnByaW50KCJPYmplY3Q6ICIsIFJhd1Bv
aW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgICAgIG91dC5wcmludCgiIHdpdGggYnV0dGVyZmx5
ICIsIFJhd1BvaW50ZXIoYXNPYmplY3QoYXNDZWxsKCkpLT5idXR0ZXJmbHkoKSkpOwpAQCAtMzA1
LDYgKzMzMSwxMCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVy
ZSgKICAgICAgICAgb3V0LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQo
KSkKICAgICAgICAgb3V0LnByaW50KCJVbmRlZmluZWQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgZWxzZSBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBvdXQucHJpbnRmKCJCaWdJbnRbaW5s
aW5lXTogJWQiLCBiaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAg
IG91dC5wcmludCgiSU5WQUxJRCIpOwogfQpAQCAtMzQ3LDYgKzM3NywxMCBAQCB2b2lkIEpTVmFs
dWU6OmR1bXBGb3JCYWNrdHJhY2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0
LnByaW50KCJOdWxsIik7CiAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgb3V0
LnByaW50KCJVbmRlZmluZWQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAoaXNC
aWdJbnQzMigpKQorICAgICAgICBvdXQucHJpbnRmKCJCaWdJbnRbaW5saW5lXTogJWQiLCBiaWdJ
bnQzMkFzSW50MzIoKSk7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIG91dC5wcmludCgiSU5W
QUxJRCIpOwogfQpAQCAtMzg0LDE4ICs0MTgsMjUgQEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3Ry
aW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCByZXR1cm5FbXAK
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5udWxsU3RyaW5nKCk7CiAgICAgaWYgKGlz
VW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3Ry
aW5nKCk7Ci0gICAgaWYgKGlzU3ltYm9sKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIl9z
KTsKLSAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBhdXRvIGludGVnZXIgPSBiaWdJbnQzMkFzSW50
MzIoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnRlZ2VyKSA8PSA5KQor
ICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmco
aW50ZWdlciArICcwJyk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZt
Lm51bWVyaWNTdHJpbmdzLmFkZChpbnRlZ2VyKSk7CiAgICAgfQotICAgIGlmIChpc0JpZ0ludCgp
KSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0JpZ0ludCgqdGhpcyk7Ci0gICAgICAg
IGlmIChhdXRvIGRpZ2l0ID0gYmlnSW50LT5zaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygq
ZGlnaXQgKyAnMCcpOwotICAgICAgICBKU1N0cmluZyogcmV0dXJuU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApKTsKKyNlbmRp
ZgorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0g
YXNIZWFwQmlnSW50KCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcmF0aGVyIGhhdmUg
dHdvIGNhc2VzIGhlcmU6IG9uZS1jaGFyYWN0ZXIgc3RyaW5nIHZzIGpzTm9uVHJpdmlhbFN0cmlu
ZyBmb3IgZXZlcnl0aGluZyBlbHNlLgorICAgICAgICBKU1N0cmluZyogcmV0dXJuU3RyaW5nID0g
SlNTdHJpbmc6OmNyZWF0ZSh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKS5y
ZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlcnJvclZhbHVlKCkpOwogICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwog
ICAgIH0KKyAgICBpZiAoaXNTeW1ib2woKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3Mp
OworICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIH0KIAogICAgIEFTU0VSVChpc0Nl
bGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIFByZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2QuLjg3MmMzNjM5OTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xNzcsNiArMTc3LDkgQEAgcHVibGlj
OgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsg
SlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcgeyBKU0JpZ0ludDMyIH07CisjZW5kaWYK
ICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKIAogICAgIEpT
VmFsdWUoKTsKQEAgLTE4Niw2ICsxODksOSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNl
VGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2Vs
bCogcHRyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBp
bnQzMl90KTsKKyNlbmRpZgogCiAgICAgLy8gTnVtYmVycwogICAgIEpTVmFsdWUoRW5jb2RlQXNE
b3VibGVUYWcsIGRvdWJsZSk7CkBAIC0yMTksNiArMjI1LDkgQEAgcHVibGljOgogICAgIGRvdWJs
ZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91
YmxlIGFzTnVtYmVyKCkgY29uc3Q7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGludDMyX3QgYmln
SW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qgb25seSBiZSBjYWxsZWQgb24gYSBCaWdJbnQz
MgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBhc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0
OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBidXQgb3RoZXJ3aXNlIGxpa2UgYXNJbnQzMigp
LgogCkBAIC0yMzgsNiArMjQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25z
dDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0
OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludDMyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUo
KSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CkBAIC0yNDYsNyArMjU3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBj
b25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBj
b25zdDsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb09yTnVsbChWTSYpIGNvbnN0Owot
ICAgICAgICAKKwogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgogICAgIGJvb2wgZ2V0U3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiwgV1RGOjpTdHJpbmcmKSBjb25zdDsKICAgICBXVEY6OlN0cmlu
ZyBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90
IGEgc3RyaW5nCkBAIC0yNjUsOSArMjc2LDEwIEBAIHB1YmxpYzoKICAgICAvLyB0b051bWJlciBj
b252ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhjZXB0
aW9uIGhhcwogICAgIC8vIGJlZW4gc2V0IGluIHRoZSBDYWxsRnJhbWUgYWxyZWFkeS4KICAgICBk
b3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAKLSAgICBWYXJpYW50
PEpTQmlnSW50KiwgZG91YmxlPiB0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAg
ICBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CisKKyAgICBKU1ZhbHVlIHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNv
bnN0OworICAgIEpTVmFsdWUgdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CisgICAgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludCgpIGNvbnN0OwogCiAgICAgLy8gdG9OdW1iZXIg
Y29udmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0IHNpZGUgZWZmZWN0cy4KICAgICBP
cHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0OwpAQCAtMzE2LDgg
KzMyOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWxT
bG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwog
ICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmlj
dEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2Mik7CiAgICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJp
Y3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29u
c3Q7CkBAIC00MTUsMTEgKzQyNiwyMCBAQCBwdWJsaWM6CiAgICAgICogVGhlc2UgdmFsdWVzIGhh
dmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogICAgICAqIC0gQml0IDEgKE90aGVyVGFnKSBp
cyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBiZQog
ICAgICAqICAgcXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1ZXMs
IGluY2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgotICAgICAqIC0gV2l0aCBiaXQgMyBp
cyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUK
KyAgICAgKiAtIFdpdGggYml0IDMgbWFza2VkIG91dCAoVW5kZWZpbmVkVGFnKSwgVW5kZWZpbmVk
IGFuZCBOdWxsIHNoYXJlIHRoZQogICAgICAqICAgc2FtZSB2YWx1ZSwgYWxsb3dpbmcgbnVsbCAm
IHVuZGVmaW5lZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgogICAgICAqCiAgICAgICogTm8gdmFs
aWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4MCwgdGhpcyBpcyB1c2VkIHRv
IHJlcHJlc2VudCBhcnJheQogICAgICAqIGhvbGVzLCBhbmQgYXMgYSBDKysgJ25vIHZhbHVlJyBy
ZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2YWx1ZSBvZiAwKS4KKyAgICAg
KgorICAgICAqIFdoZW4gVVNFKEJJR0lOVDMyKSwgd2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50
YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBhcmUgc21hbGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAg
KiAgICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdv
cmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3Qg
YmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJp
dHMKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENl
bGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fu
bm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdo
aWNoIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGgg
dHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fu
bm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0
byB0cnVlCiAgICAgICovCiAKICAgICAvLyBUaGlzIHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5j
b2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQy
OSwxMSArNDQ5LDE5IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBh
cmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKICAgICAvLyBpZiBhbnkg
YnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1i
ZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJlclRhZyA9IDB4ZmZmZTAwMDAw
MDAwMDAwMGxsOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RhbnQgaXMgdXNlZCBmb3IgYSB0
cmljayBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RyaWN0RXEsIHRvIGRldGVjdCBpZiBlaXRo
ZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRvdWJsZQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsKKyAgICBzdGF0aWNfYXNzZXJ0KExv
d2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcpOworICAgIHN0YXRpY19hc3NlcnQoISgoTG93ZXN0
T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJUYWcpKTsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAo
Ym9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgogICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50MzJfdCBPdGhlclRhZyAgICAgICA9IDB4MjsKICAgICBzdGF0aWMg
Y29uc3RleHByIGludDMyX3QgQm9vbFRhZyAgICAgICAgPSAweDQ7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRhZyAgID0gMHg4OworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50MzJUYWcgICAgPSAweDEyOworICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1hc2sgICA9IE51bWJlclRhZyB8IEJpZ0lu
dDMyVGFnOworI2VuZGlmCiAgICAgLy8gQ29tYmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51
bWVyaWMgaW1tZWRpYXRlcy4KICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVGYWxz
ZSAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHBy
IGludDMyX3QgVmFsdWVUcnVlICAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5k
ZXggNWIzZmY4YWM0NGUuLmJlMGYzOWM1MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMjksNiArMzI4LDEyIEBA
IEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHUuYXNCaXRzLnBheWxvYWQpOwogfQogCitBTFdB
WVNfSU5MSU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAg
IEFTU0VSVChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNC
aWdJbnQqPih1LmFzQml0cy5wYXlsb2FkKTsKK30KKwogQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpK
U1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKIHsKICAgICBBU1NFUlQoIWlzSW1w
dXJlTmFOKGQpKTsKQEAgLTUyMiw4ICs1MjcsMjIgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpT
VmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHUucHRyOwogfQogCitBTFdBWVNfSU5M
SU5FIEpTQmlnSW50KiBKU1ZhbHVlOjphc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIEFTU0VS
VChpc0hlYXBCaWdJbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odS5w
dHIpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAorI2lmIFVTRShCSUdJTlQzMikK
K2lubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QgdmFsdWUpCit7
CisgICAgLy8gVGhlICYgfk51bWJlclRhZyBwYXJ0IGlzIGZvciBuZWdhdGl2ZSBudW1iZXJzLCBv
dGhlcndpc2UgdGhleSBnZXQgc2lnbi1leHRlbmRlZC4KKyAgICB1LmFzSW50NjQgPSAoKHN0YXRp
Y19jYXN0PGludDY0X3Q+KHZhbHVlKSA8PCAxNikgJiB+TnVtYmVyVGFnKSB8IEJpZ0ludDMyVGFn
OworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogaW5saW5lIGludDY0X3QgdHJ5Q29udmVy
dFRvSW50NTIoZG91YmxlIG51bWJlcikKIHsKICAgICBpZiAobnVtYmVyICE9IG51bWJlcikKQEAg
LTYxMCw5ICs2MjksMzEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAog
CiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0JpZ0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpLT5pc0JpZ0ludCgpOworICAgIHJldHVybiBpc0JpZ0ludDMyKCkg
fHwgaXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzSGVhcEJpZ0lu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0hlYXBCaWdJ
bnQoKTsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQzMigpIGNvbnN0Cit7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIHJldHVybiAodS5hc0ludDY0ICYgQmlnSW50MzJNYXNrKSA9
PSBCaWdJbnQzMlRhZzsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKKyNp
ZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjpiaWdJbnQzMkFzSW50MzIo
KSBjb25zdAoreworICAgIEFTU0VSVChpc0JpZ0ludDMyKCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQzMl90Pih1LmFzSW50NjQgPj4gMTYpOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogewogICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTeW1ib2woKTsKQEAgLTYyMCw3ICs2NjEsNyBAQCBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFs
dWU6OmlzUHJpbWl0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2Vs
bCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0Jp
Z0ludCgpOworICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwg
YXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOwogfQogCiBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0CkBAIC03NjAsOCArODAx
LDE3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51CiAgICAgICAgIHZhbHVlID0gKnRoaXM7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWQoKSk7Ci0g
ICAgbnVtYmVyID0gUE5hTjsKKyAgICBpZiAoaXNVbmRlZmluZWQoKSkgeworICAgICAgICBudW1i
ZXIgPSBQTmFOOworICAgICAgICB2YWx1ZSA9ICp0aGlzOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20g
J0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQuIl9zKTsKKyAgICBudW1iZXIgPSAw
LjA7CiAgICAgdmFsdWUgPSAqdGhpczsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3NSw0NCAr
ODI1LDQ1IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2Uo
Z2xvYmFsT2JqZWN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgZG91
YmxlPiBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b051bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICBy
ZXR1cm4gYXNJbnQzMigpOwotICAgIGlmIChpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gYXNE
b3VibGUoKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KCp0
aGlzKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkgfHwgaXNCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVy
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzRG91
YmxlKCkgfHwgcHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7
CisKICAgICBkb3VibGUgdmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBqc051bWJl
cih2YWx1ZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0ludCosIGludDMyX3Q+
IEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlmIChpc0ludDMyKCkpCi0g
ICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0JpZ0ludCgp
KQorICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgaWYgKGlzRG91YmxlKCkgJiYgY2FuQmVJbnQz
Mihhc0RvdWJsZSgpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91
YmxlKCkpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRo
aXMpOworICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3Vi
bGUoKSkpOwogCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkp
Ci0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmlt
VmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMy
X3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAK
IGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKQEAgLTEwMzIsMzcgKzEwODMsMTcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAgIGlmICh2MS5pc051
bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIo
KSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOwot
ICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMyKQot
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFs
KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYgKHYxLmlzQmlnSW50
KCkgJiYgczIpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1Rv
QmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdjIgPSBKU1ZhbHVl
KG4pOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
djEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAgLy8gR3VhcmFudGVl
aW5nIHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBzb21lIG9mIHRoZSBj
YXNlcyBiZWxvdyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAg
U3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAg
SlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0
cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0g
ICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9vbGVhbnMsIEJpZ0lu
dDMyLCBPYmplY3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9yZSB0eXBlcy4KKyAg
ICAgICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwgYmVjYXVzZSBpdCBp
cyBOT1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09IHYyKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtMTA4MCw3ICsx
MTExLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBpZiAodjEuaXNPYmpl
Y3QoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0g
djIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIEpTVmFsdWUg
cDEgPSB2MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBwMTsKQEAgLTExMDIs
NTYgKzExMzMsODQgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJ
bmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgYm9vbCBzeW0y
ID0gdjIuaXNTeW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikgewogICAgICAgICAg
ICAgaWYgKHN5bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4gYXNTeW1ib2wodjEp
ID09IGFzU3ltYm9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHYxID09
IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKKyAg
ICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChzMSkgeworICAgICAg
ICAgICAgaWYgKHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
YXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOworICAgICAg
ICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVl
ZCB0byBlbnRlciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFyaWFudCBvZiBvbmx5
IHYyIGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAgICBpZiAoczEgfHwg
czIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAg
ICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGQx
ID09IGQyOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgc3RyaW5n
IGlzIHYyICh0aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAgICBpZiAodjEuaXNC
aWdJbnQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYy
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3RyaW5n
VG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICghdjIpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodjEg
PT0gdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3IgQmlnSW50MzIK
KyAgICAgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBjb2RlIGZv
ciBjb21wYXJpbmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRoZSBCaWdJbnQzMi9C
aWdJbnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYxLmlzQm9vbGVhbigp
KTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOworICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9vbGVh
bigpKSA9PSB2Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQo
KSkgewotICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmpl
Y3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAg
IC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cK
KyAgICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRvIHJlcGFpciB0aGUg
cnVsZSB0aGF0IG9ubHkgdjIgaXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBpbiB0aGVzZSBjb21w
YXJpc29ucworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0gZWxzZSBp
ZiAodjIuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4o
djIuYXNCb29sZWFuKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgewot
ICAgICAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYy
ID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIC8vIFdl
IGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQo
KSkKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNC
aWdJbnQodjIpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlz
TnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJl
cih2Mik7CiAKLSAgICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAg
ICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAg
IGlmICh2Mi5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJ
bnQzMigpID09IHYyLmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMyQXNJ
bnQzMigpKSA9PSB2Mi5hc0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7
CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYgKHYxLmlz
SGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYy
LmFzSGVhcEJpZ0ludCgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIu
aXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+
ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYgLy8gVVNFKEJJR0lO
VDMyKQorICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7CisgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gdjEgPT0gdjI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdo
aWxlICh0cnVlKTsKIH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1Zh
bHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6
c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IHYxLCBKU0NlbGwqIHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwo
KSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlz
U3RyaW5nKCkpCisgICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAg
ICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYy
KSk7Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlm
ICh2MS0+aXNIZWFwQmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nh
c3Q8SlNCaWdJbnQqPih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE2Mywx
MCArMTIyMiwxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJl
cigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYy
LmFzTnVtYmVyKCk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAg
ICAgICAgcmV0dXJuIHYxID09IHYyOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNI
ZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFw
QmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGlmICh2
MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB2Mi5h
c0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5k
aWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxs
KCkpOwogCi0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0
LCB2MSwgdjIpOworICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNW
YWx1ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwxNSArMTI1MCwyMyBA
QCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAg
ICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAg
ICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKHYxID09IHYyKTsKLSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYg
djIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFT
dHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBT
dHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0g
ICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7Ci0gICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmlu
ZywgKnYyU3RyaW5nKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJ
bnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc0hl
YXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIGlm
ICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB0
cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50
MzIoKSkpOworI2VuZGlmCisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpIHsK
KyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0
cmluZygpKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3Ry
aW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBs
KiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAg
ICBpZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gTWl4
ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0
cmluZywgKnYyU3RyaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5p
c0hlYXBCaWdJbnQoKSAmJiB2Mi5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJpU3RhdGUoSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIu
YXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09
IHYyKTsKQEAgLTEyMDYsNiArMTI4MCwxMCBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVy
ZVRvQm9vbGVhbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFz
RG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5h
TgogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29s
ZWFuKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAg
IHJldHVybiBiaWdJbnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAx
MzkwYzc2MTlhYy4uMDY1OTc5ZTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJv
b2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkg
fHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5p
c1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBz
bG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9v
bCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+
aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAg
ICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVh
cEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRo
cm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwog
ICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShn
bG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlm
IChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmln
SW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9v
bCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
U3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwg
dmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51
bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQo
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdl
dFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIo
Z2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCBkb3Vi
bGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwot
ICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0xOTYsNyArMTk2LDcgQEAgSlNPYmplY3QqIEpT
Q2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAyYmVmNGE3ZDhlYy4uMDZlZDRl
NzA5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyAr
MTAxLDcgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgog
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7
CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApp
bmRleCAxYzlkMTMyNDhhOS4uODc5OGM1YTk3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIwNCw5ICsyMDQsOSBAQCBpbmxpbmUgYm9v
bCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5
cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJv
b2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0g
QmlnSW50VHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MCw3ICszNDAsNyBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50
KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1
cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2Jq
ZWN0KTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJl
VG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRy
aVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNI
ZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+
KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAg
aWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyMmMwMTIwNWMyZi4uN2U4YjI2MGFm
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTAzOCw2
ICsxMDM4LDEwIEBAIGlubGluZSBib29sIEpTVmFsdWU6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gYXNEb3VibGUoKSA+IDAuMCB8
fCBhc0RvdWJsZSgpIDwgMC4wOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQog
ICAgICAgICByZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gISFiaWdJ
bnQzMkFzSW50MzIoKTsKKyNlbmRpZgogICAgIHJldHVybiBpc1RydWUoKTsgLy8gZmFsc2UsIG51
bGwsIGFuZCB1bmRlZmluZWQgYWxsIGNvbnZlcnQgdG8gZmFsc2UuCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCmluZGV4IGIwMmIzNDdkNmE1Li44M2JkZDllMTBh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0
eXBlKQogICAgIENBU0UoQ2VsbFR5cGUpCiAgICAgQ0FTRShTdHJpbmdUeXBlKQogICAgIENBU0Uo
U3ltYm9sVHlwZSkKLSAgICBDQVNFKEJpZ0ludFR5cGUpCisgICAgQ0FTRShIZWFwQmlnSW50VHlw
ZSkKICAgICBDQVNFKEN1c3RvbUdldHRlclNldHRlclR5cGUpCiAgICAgQ0FTRShBUElWYWx1ZVdy
YXBwZXJUeXBlKQogICAgIENBU0UoTmF0aXZlRXhlY3V0YWJsZVR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDQ4MzZmOTFiMGJiLi43NGYzMWZmODIwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTI2LDggKzI2LDggQEAgZW51
bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBUaGUgQ2VsbFR5cGUgdmFsdWUgbXVzdCBjb21l
IGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBKU0NlbGwuCiAgICAgQ2VsbFR5cGUsCiAgICAg
U3RyaW5nVHlwZSwKLSAgICBCaWdJbnRUeXBlLAotICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1p
dGl2ZSA9IEJpZ0ludFR5cGUsCisgICAgSGVhcEJpZ0ludFR5cGUsCisgICAgTGFzdE1heWJlRmFs
c3lDZWxsUHJpbWl0aXZlID0gSGVhcEJpZ0ludFR5cGUsCiAgICAgU3ltYm9sVHlwZSwKIAogICAg
IEdldHRlclNldHRlclR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJ
bmZvLmgKaW5kZXggM2NkNzEzZDg0ZjMuLjg4ZTMwZjIwOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxh
ZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgIGJvb2wgaXNTZXRP
bkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsg
cmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIAotICAgIHVpbnQ4X3QgbV90eXBlOwor
ICAgIEpTVHlwZSBtX3R5cGU7CiAgICAgdWludDhfdCBtX2ZsYWdzOwogICAgIHVpbnQxNl90IG1f
ZmxhZ3MyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKaW5kZXggYzRlYmJlYzUwMzUuLjI3YTIy
MWMyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcApAQCAtMjYsOSArMjYsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCIKIAot
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJsZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAppbmRleCA0
OTA1ZDViYWYwNy4uNzZjYzI1MGIxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM2LDExICszNiw2IEBAIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAg
ICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwogfQog
Ci1ib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKLXsKLSAgICByZXR1cm4gc3RyaWN0RXF1
YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7Ci19Ci0KIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKICAgICAvLyBleGNlcHRpb24gZm9yIHRoZSBEYXRlIGV4
Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQpAQCAtNzMsMjEgKzY4LDIzIEBAIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmco
Z2xvYmFsT2JqZWN0LCBwMVN0cmluZywgYXNTdHJpbmcocDIpKSk7CiAgICAgfQogCi0gICAgYXV0
byBsZWZ0TnVtZXJpYyA9IHAxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBwMi50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6YWRkKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpOwotICAgIH0KLQotICAgIHJl
dHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSArIFdURjo6Z2V0PGRv
dWJsZT4ocmlnaHROdW1lcmljKSk7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVm
dCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0
OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJf
dCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2Vk
PGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQg
Kz0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKSkK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICBV
TlVTRURfUEFSQU0obGVmdCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyaWdodCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEs
IHAyLCBKU0JpZ0ludDo6YWRkLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4iX3MpKTsKIH0KIAogSlNWYWx1ZSBq
c1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdikKQEAgLTEyOCw3ICsxMjUsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlT3JOdWxs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgcmV0dXJu
IHYuaXNOdWxsKCk7CiAKICAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKLSAg
ICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09
IEJpZ0ludFR5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJv
bFR5cGUgfHwgdHlwZSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5z
dHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggNGJiZTIzYzA3MjUu
LmJkMDMxYTJhZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIzOSw2ICsyMzgsMzUgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmUKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgp
OwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVC
aWdJbnRUb090aGVyUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiB2MSwgSlNWYWx1ZSBwcmltVmFsdWUpCit7CisgICAgQVNTRVJUKHByaW1WYWx1ZS5pc1By
aW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgpKTsKKworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
SlNWYWx1ZSBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmpl
Y3QsIGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5k
ZWZpbmVkKTsKKyAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOworCisgICAgICAgIGlmIChiaWdJ
bnRWYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29t
cGFyZSh2MSwgYmlnSW50VmFsdWUuYXNIZWFwQmlnSW50KCkpOworCisgICAgICAgIEFTU0VSVChi
aWdJbnRWYWx1ZS5pc0JpZ0ludDMyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgLy8g
RklYTUU6IHVzZSBzb21ldGhpbmcgbGVzcyBoYWNreSwgZS5nLiBzb21lIGtpbmQgb2YgSlNCaWdJ
bnQ6OmNvbXBhcmVUb0ludDMyCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91
YmxlKHYxLCBzdGF0aWNfY2FzdDxkb3VibGU+KGJpZ0ludFZhbHVlLmJpZ0ludDMyQXNJbnQzMigp
KSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkKTsKKyAgICByZXR1cm4gSlNCaWdJ
bnQ6OmNvbXBhcmVUb0RvdWJsZSh2MSwgbnVtYmVyVmFsdWUpOworfQorCiBBTFdBWVNfSU5MSU5F
IGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21w
YXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGUgY29tcGFyaXNvbk1vZGUpCiB7
CiAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVz
c1RoYW4pCkBAIC0yNTUsNTAgKzI4Myw0NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgYmlnSW50Q29t
cGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICAKLSAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0Jp
Z0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29t
cGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAK
LSAgICBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYy
OwotICAgICAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIEpTQmln
SW50KiBiaWdJbnRWYWx1ZSA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3Qs
IGFzU3RyaW5nKHByaW1WYWx1ZSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFiaWdJ
bnRWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHJl
dHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwg
YmlnSW50VmFsdWUpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAo
cHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJl
c3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2MSksIGFzQmlnSW50KHByaW1WYWx1ZSkp
LCBjb21wYXJpc29uTW9kZSk7Ci0KLSAgICAgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJ
bnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MSksIG51bWJlclZhbHVlKSwgY29tcGFyaXNv
bk1vZGUpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYy
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6
OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKKyAgICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQz
MkFzSW50MzIoKSA8IHYyLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBBU1NFUlQoY29tcGFy
aXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpOwor
ICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPD0gdjIuYmlnSW50MzJBc0ludDMy
KCk7CiAgICAgfQotICAgIAotICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjE7Ci0gICAgaWYgKHBy
aW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRWYWx1ZSA9IEpT
QmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHByaW1WYWx1ZSkt
PnZhbHVlKGdsb2JhbE9iamVjdCkpOworI2VuZGlmCisKKyAgICBKU0JpZ0ludCogdjFIZWFwQmln
SW50ID0gbnVsbHB0cjsKKyAgICBKU0JpZ0ludCogdjJIZWFwQmlnSW50ID0gbnVsbHB0cjsKKyAg
ICAvLyBGSVhNRTogaGF2ZSBzb21lIGZhc3QtaXNoIHBhdGggZm9yIGEgY29tcGFyaXNvbiBiZXR3
ZWVuIGEgc21hbGwgYW5kIGEgbGFyZ2UgYmlnLWludAorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQo
KSkKKyAgICAgICAgdjFIZWFwQmlnSW50ID0gdjEuYXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGVsc2UgaWYgKHYxLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjFIZWFwQmln
SW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNl
bmRpZgorCisgICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2MkhlYXBCaWdJbnQg
PSB2Mi5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAodjIu
aXNCaWdJbnQzMigpKQorICAgICAgICB2MkhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJv
bSh2bSwgdjIuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAodjFIZWFwQmln
SW50ICYmIHYySGVhcEJpZ0ludCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQo
SlNCaWdJbnQ6OmNvbXBhcmUodjFIZWFwQmlnSW50LCB2MkhlYXBCaWdJbnQpLCBjb21wYXJpc29u
TW9kZSk7CisKKyAgICBpZiAodjFIZWFwQmlnSW50KSB7CisgICAgICAgIGF1dG8gY29tcGFyaXNv
blJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjFI
ZWFwQmlnSW50LCB2Mik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKLSAgICAgICAgaWYgKCFiaWdJbnRWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShi
aWdJbnRWYWx1ZSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOworICAgICAgICByZXR1
cm4gYmlnSW50Q29tcGFyZVJlc3VsdChjb21wYXJpc29uUmVzdWx0LCBjb21wYXJpc29uTW9kZSk7
CiAgICAgfQotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0
dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQocHJpbVZh
bHVlKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGRvdWJsZSBu
dW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAorICAgIGF1dG8gY29tcGFyaXNvblJlc3Vs
dCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgdjJIZWFwQmln
SW50LCB2MSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIC8v
IEhlcmUgd2UgY2hlY2sgaW52ZXJ0ZWQgYmVjYXVzZSBCaWdJbnQgaXMgdGhlIHYyCi0gICAgSlNC
aWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyaXNvblJlc3VsdCA9IEpTQmlnSW50Ojpjb21w
YXJlVG9Eb3VibGUoYXNCaWdJbnQodjIpLCBudW1iZXJWYWx1ZSk7CiAgICAgaWYgKGNvbXBhcmlz
b25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCiAgICAgICAgIHJl
dHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVh
dGVyVGhhbjsKLQogICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiB8fCBjb21wYXJpc29uUmVzdWx0ID09IEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKIH0KIApAQCAtMzU3LDcgKzM4Miw3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBqc0xlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MikKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogCi0gICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CisgICAg
aWYgKHdhc05vdFN0cmluZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAgICAgICBpZiAocDEuaXNC
aWdJbnQoKSB8fCBwMi5pc0JpZ0ludCgpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiaWdJbnRDb21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6Q29t
cGFyaXNvbk1vZGU6Okxlc3NUaGFuKSk7CiAKQEAgLTQwNyw3ICs0MzIsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wganNMZXNzRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MgogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAo
d2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0lu
dCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJp
c29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKSk7CiAKQEAgLTQ1Miw3MSArNDc3LDM0OSBAQCBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBqc0FkZE5vbk51bWJlcihnbG9iYWxPYmpl
Y3QsIHYxLCB2Mik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorLy8gQmlnSW50MzJP
cCBleHBlY3RzIGl0cyBvcGVyYW5kcyB1bmJveGVkLCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0IHVu
Ym94ZWQgYXMgd2VsbAordGVtcGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0ludE9wZXJhdGlvbiwgdHlw
ZW5hbWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBCaWdJbnQzMk9wPgorQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGFyaXRobWV0aWNCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYgaGVhcEJpZ0lu
dE9wLCBEb3VibGVPcGVyYXRpb24mJiBkb3VibGVPcCwgQmlnSW50MzJPcCYmIGJpZ0ludDMyT3As
IGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gdjEu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBsZWZ0TnVtZXJpYyA9IHYxLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNOdW1iZXIoKSAmJiByaWdodE51bWVy
aWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRvdWJsZU9wKGxlZnROdW1l
cmljLmFzTnVtYmVyKCksIHJpZ2h0TnVtZXJpYy5hc051bWJlcigpKSk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpZiAo
cmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVz
dWx0ID0gYmlnSW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSwgcmlnaHROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIEpTQmln
SW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1l
cmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVh
cEJpZ0ludCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gc3VidHJhY3Rpb24uIl9zKTsKKyAgICAgICAgaWYgKHJpZ2h0TnVtZXJpYy5pc0hlYXBCaWdJ
bnQoKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwg
bGVmdEhlYXBCaWdJbnQsIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBp
ZiAocmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgSlNCaWdJbnQqIHJp
Z2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmln
SW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBo
ZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmln
aHRIZWFwQmlnSW50KSk7CisgICAgICAgIH0gZWxzZSBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50
T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpKSk7CiAgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYmlnSW50
MzJPcCk7CisgICAgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpICYmIHJpZ2h0TnVtZXJp
Yy5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFw
QmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHRO
dW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworfQogCi0gICAgcmV0dXJu
IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpIC0gV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N1YihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIGxlZnQgLSByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0
ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0IC09IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFko
cmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZl
R2V0KCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVT
RURfUEFSQU0ocmlnaHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpzdWIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAK
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQg
KiByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQs
IGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
Q2hlY2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAg
cmVzdWx0ICo9IHJpZ2h0OworICAgICAgICBpZiAocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAgICAgICBVTlVT
RURfUEFSQU0obGVmdCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyaWdodCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJu
IGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6Om11bHRp
cGx5LCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmln
aHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfTsKKyAg
ICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBK
U1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICghcmlnaHQpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCBsZWZ0IC8gcmlnaHQpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxl
ZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGlj
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpkaXZpZGUsIGRvdWJsZU9w
LCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRp
dmlzaW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JlbWFpbmRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91Ymxl
IHsKKyAgICAgICAgcmV0dXJuIGpzTW9kKGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8g
YmlnSW50MzJPcCA9IFtdIChpbnQzMl90LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAg
Ly8gRklYTUU6IGRvIHNvbWV0aGluZyBtb3JlIGNsZXZlciBoZXJlLgorICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6cmVtYWluZGVyLCBkb3VibGVPcCwgYmlnSW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIuIl9z
KTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9
IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uTWF0aFBvdyhsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBhdXRvIGJpZ0lu
dDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIC8vIEV4
cG9uZW50aWF0aW9uIG9uIGludGVnZXJzIGlzIGJvdGggc29tZXdoYXQgc2xvdyBpbiB0aGUgYmVz
dCBjYXNlLCBhbmQgdmVyeSBsaWtlbHkgdG8gb3ZlcmZsb3cuCisgICAgICAgIC8vIFNvIGRvbid0
IGJvdGhlciB0cnlpbmcgdG8gYXZvaWQgYSBoZWFwIGFsbG9jYXRpb24gaW4gdGhhdCBjYXNlLgor
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRp
Y0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlLCBk
b3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBleHBvbmVudGlhdGlvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNJ
bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYg
KG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihvcGVy
YW5kTnVtZXJpYy5hc051bWJlcigpICsgMSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5ld1ZhbHVl
ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkp
ICsgMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGluZXMgbWln
aHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAg
ICBpZiAobmV3VmFsdWUgPiBJTlRfTUFYKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6
OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIG9wZXJh
bmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c0RlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBp
ZiAob3BlcmFuZE51bWVyaWMuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG9w
ZXJhbmROdW1lcmljLmFzTnVtYmVyKCkgLSAxKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAob3BlcmFuZE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3VmFs
dWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSkgLSAxOworICAgICAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5lcyBt
aWdodCBiZW5lZml0IGZyb20gYmVpbmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisgICAg
ICAgIGlmIChuZXdWYWx1ZSA8IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9Cisj
ZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgb3Bl
cmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzQml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIofm9wZXJhbmROdW1lcmljLmFzSW50MzIoKSk7CisKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgfm9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJ
bnQzMigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0lu
dCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpiaXR3aXNlTm90
KGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKK30KKworQUxX
QVlTX0lOTElORSBKU1ZhbHVlIHNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIsIGJvb2wgaXNMZWZ0KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiBsZWZ0TnVtZXJpYyA9IHYxLnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOworICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0ludE9y
SW50MzIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOworICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJ
bnQ6Om11bHRpcGx5KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7CisgICAgaWYgKGxlZnROdW1l
cmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigpKSB7CisgICAgICAgIGludDMy
X3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYXNJbnQzMigpOworICAgICAgICBpbnQzMl90IHJp
Z2h0SW50MzIgPSByaWdodE51bWVyaWMuYXNJbnQzMigpICYgMzE7CisgICAgICAgIGludDMyX3Qg
cmVzdWx0ID0gaXNMZWZ0ID8gKGxlZnRJbnQzMiA8PCByaWdodEludDMyKSA6IChsZWZ0SW50MzIg
Pj4gcmlnaHRJbnQzMik7CisgICAgICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOworICAgIH0K
KworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYm
IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBsZWZ0SW50MzIg
PSBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaW50MzJfdCByaWdodElu
dDMyID0gcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAocmlnaHRJ
bnQzMiA8IDApIHsKKyAgICAgICAgICAgIGlzTGVmdCA9ICFpc0xlZnQ7CisgICAgICAgICAgICBy
aWdodEludDMyID0gLXJpZ2h0SW50MzI7CiAgICAgICAgIH0KIAotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIG11bHRpcGxpY2F0aW9uLiJfcyk7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIC8vIFRoaXMgc3RkOjptaW4gaXMgYSBiaXQgaGFja3ksIGJ1dCByZXF1aXJlZCBiZWNhdXNl
IGluIEMrKyBpdCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgdG8gZG8gYSBzaGlmdCB3aGVyZSB0aGUg
cmlnaHQgb3BlcmFuZCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBiaXQtd2lkdGggb2YgdGhl
IGxlZnQgb3BlcmFuZC4KKyAgICAgICAgaWYgKCFpc0xlZnQpCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBsZWZ0SW50MzIgPj4gc3RkOjptaW4ocmlnaHRJ
bnQzMiwgMzEpKTsKKworICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIGxlZnQgc2hpZnQgd2Ug
Y2FuIG92ZXJmbG93LiBJIGRlYWwgd2l0aCB0aGlzIGJ5IGFsbG9jYXRpbmcgSGVhcEJpZ0ludHMu
CisgICAgICAgIC8vIEZJWE1FOiBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBkbyBzb21ldGhpbmcg
c21hcnRlciwgdHJ5aW5nIHRvIGRvIHRoZSBsZWZ0IHNoaWZ0IGFuZCBkZXRlY3Rpbmcgc29tZWhv
dyBpZiBpdCBvdmVyZmxvd2VkLgorICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdEludDMyKTsKKyAgICAgICAgSlNCaWdJbnQqIHJp
Z2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodEludDMyKTsKKyAg
ICAgICAgaWYgKGlzTGVmdCkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhl
YXBCaWdJbnQpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6
c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBC
aWdJbnQpKTsKICAgICB9CisjZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50
KCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50KCkpKSB7CisgICAgICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gaXNMZWZ0ID8gIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBs
ZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iIDogIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIg
dHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiI7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgIH0K
KworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIGNhc2UgZm9yIGxlZnQgaXMgSGVhcEJp
Z0ludCBhbmQgcmlnaHQgaXMgQmlnSW50MzIsIGl0IHNlZW1zIGZhaXJseSBsaWtlbHkgdG8gb2Nj
dXIgZnJlcXVlbnRseS4KKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNCaWdJbnQqIGxlZnRIZWFw
QmlnSW50ID0gbGVmdE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
dm0sIGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJp
Z0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNC
aWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQz
MkFzSW50MzIoKSkgOiByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZWxzZQorICAgIEpT
QmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAg
IEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7
CisjZW5kaWYKKworICAgIGlmIChpc0xlZnQpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCBy
aWdodEhlYXBCaWdJbnQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50
OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVh
cEJpZ0ludCkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNMU2hpZnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBib29s
IGlzTGVmdCA9IHRydWU7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBp
c0xlZnQpOworfQogCi0gICAgZG91YmxlIGxlZnRWYWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KGxl
ZnROdW1lcmljKTsKLSAgICBkb3VibGUgcmlnaHRWYWx1ZSA9ICBXVEY6OmdldDxkb3VibGU+KHJp
Z2h0TnVtZXJpYyk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGxlZnRWYWx1ZSAqIHJpZ2h0VmFsdWUp
OworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYm9vbCBpc0xlZnQgPSBmYWxz
ZTsKKyAgICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIGlzTGVmdCk7CiB9CiAK
LWlubGluZSBib29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBC
aWdJbnRPcGVyYXRpb24sIHR5cGVuYW1lIEludDMyT3BlcmF0aW9uPgorQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyLCBIZWFwQmlnSW50T3BlcmF0aW9uJiYgYmlnSW50T3AsIEludDMy
T3BlcmF0aW9uJiYgaW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIHJl
dHVybiBBU1NFUlRfRU5BQkxFRCB8fCBPcHRpb25zOjpzY3JpYmJsZUZyZWVDZWxscygpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAobGVmdE51
bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVy
biBqc051bWJlcihpbnQzMk9wKGxlZnROdW1lcmljLmFzSW50MzIoKSwgcmlnaHROdW1lcmljLmFz
SW50MzIoKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0Jp
Z0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgaW50MzJPcChsZWZ0TnVtZXJpYy5iaWdJbnQzMkFz
SW50MzIoKSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgLy8gRklYTUU6
IGFkZCBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIC8gSGVhcEJpZ0ludCwgYW5kIGZvciBIZWFwQmln
SW50IC8gQmlnSW50MzIKKyAgICAvLyBJbiBtYW55IGNhc2VzIHRoZXNlIGNvdWxkIGJlIG1hZGUg
bW9yZSBlZmZpY2llbnQgdGhhbiBoZWFwLWFsbG9jYXRpbmcgdGhlIHNtYWxsIGJpZy1pbnQgYW5k
IGdvaW5nIHRocm91Z2ggdGhlIGdlbmVyaWMgcGF0aC4KKyAgICAvLyBCdXQgaXQgaXMgcXVpdGUg
dHJpY2t5LCBub3QgbGVhc3QgYmVjYXVzZSBIZWFwQmlnSW50IHVzZSBhIHNpZ24gYml0IHdoZXJl
YXMgQmlnSW50MzIgdXNlIDItY29tcGxlbWVudCByZXByZXNlbnRhdGlvbi4KKyNlbmRpZgorCisg
ICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQo
KSkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBl
cnJvck1lc3NhZ2UpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0SGVh
cEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hlYXBC
aWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmlz
QmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAgICBK
U0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAg
ICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworI2VuZGlmCisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludE9wKGdsb2Jh
bE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogfQogCi0jZGVmaW5l
IFNDUklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNCaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0
ICYgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBv
ZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJhbmQiIGFuZCByZS1ib3ggdGhlbS4K
KyAgICAvLyBXZSBjb3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1
cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lz
ZUFuZCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBi
aXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworfQogCi1pbmxpbmUgYm9vbCBpc1NjcmliYmxl
ZFZhbHVlKEpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlT3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSA9PSBKU1ZhbHVlOjplbmNvZGUoYml0
d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKKyAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0
dXJuIGxlZnQgfCByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9y
IHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgIm9yIiBhbmQgcmUtYm94
IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisg
ICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6
OmJpdHdpc2VPciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKLWlubGluZSB2b2lkIHNjcmli
YmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0
d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQogewotICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KTsgaS0tOykgewotICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5z
dXJlIHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgotICAgICAgICBzdGF0aWNfY2FzdDxF
bmNvZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxK
U0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Ci0gICAgfQorICAgIGF1dG8gaW50MzJPcCA9IFtdIChp
bnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4g
bGVmdCBeIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFp
cnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAieG9yIiBhbmQgcmUtYm94IHRo
ZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUsIGFuZCBq
dXN0IHJlbWVtYmVyIHRvIGRvIGFuIG9yIHdpdGggMHgxMiBhdCB0aGUgZW5kIHRvIHJlc3RvcmUg
dGhlIHRhZworICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IEpTQmlnSW50OjpiaXR3aXNlWG9yLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi42YmRlZjFjY2RhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmliYmxlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ2Vs
bC5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBi
b29sIHNjcmliYmxlRnJlZUNlbGxzKCkKK3sKKyAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwg
T3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsKK30KKworI2RlZmluZSBTQ1JJQkJMRV9XT1JE
IHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorCitpbmxpbmUgYm9vbCBpc1Njcmli
YmxlZFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9X
T1JEKSk7Cit9CisKK2lubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXpl
KQoreworICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsg
aS0tOykgeworICAgICAgICAvLyBVc2UgYSAxNi1ieXRlIGFsaWduZWQgdmFsdWUgdG8gZW5zdXJl
IHRoYXQgaXQgcGFzc2VzIHRoZSBjZWxsIGNoZWNrLgorICAgICAgICBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSo+KGJhc2UpW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0Nl
bGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggNWZhNzAxM2NiN2YuLmYx
NmMwMmE3NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCkBAIC0yNzksNyArMjc5LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHBy
b3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
ICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKQogICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKICAgICAKLSAgICBp
ZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJbnRUeXBlKQorICAgIGlmIChz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDFhOTI5NmRhMjYwLi40NWVjMDkzY2RkNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAgICAgc2VudGluZWxNYXBCdWNrZXQo
KTsKICAgICAgICAgc2VudGluZWxTZXRCdWNrZXQoKTsKICAgICB9Ci0gICAgYmlnSW50Q29uc3Rh
bnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6Y3JlYXRlRnJvbSgqdGhpcywgMSkpOworICAgIGhl
YXBCaWdJbnRDb25zdGFudE9uZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVGcm9tKCp0aGlz
LCAxKSk7CiAKICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbVN0cmluZ1RhYmxl
KGV4aXN0aW5nRW50cnlBdG9tU3RyaW5nVGFibGUpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggZDM2NjBiYjAxNzMuLjllY2YxNmI4NDBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTcyNyw3ICs3MjcsNyBAQCBwdWJsaWM6CiAgICAgQXRvbVN0cmlu
Z1RhYmxlKiBhdG9tU3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJs
ZTsgfQogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4g
bV9zeW1ib2xSZWdpc3RyeTsgfQogCi0gICAgU3Ryb25nPEpTQmlnSW50PiBiaWdJbnRDb25zdGFu
dE9uZTsKKyAgICBTdHJvbmc8SlNCaWdJbnQ+IGhlYXBCaWdJbnRDb25zdGFudE9uZTsKIAogICAg
IFN0cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA4YjA2YmVjMjljZC4uMmMwMDliNmNm
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTIy
MDUsNyArMjIwNSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ2FsbFdpdGhTdGFja1NpemUoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgdWludDhfdCogdm1T
dGFja0VuZCA9IHZtU3RhY2tTdGFydCAtIG9yaWdpbmFsTWF4UGVyVGhyZWFkU3RhY2tVc2FnZTsK
ICAgICBwdHJkaWZmX3Qgc2l6ZURpZmYgPSB2bVN0YWNrRW5kIC0gZW5kOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHNpemVEaWZmID49IDApOwotICAgIFJFTEVBU0VfQVNTRVJUKHNpemVEaWZmIDwgVUlO
VF9NQVgpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplRGlm
ZikgPCBVSU5UX01BWCk7CiAKICAgICBPcHRpb25zOjptYXhQZXJUaHJlYWRTdGFja1VzYWdlKCkg
PSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2UgKyBzaXplRGlmZjsKICAgICBoZWxwZXIu
dXBkYXRlVk1TdGFja0xpbWl0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlMDM5NGI3YmU1Yi4uOGU5Mzg4NmEwOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24g
aW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFn
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDQtMTQgIFBlbmcgTGl1
ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBpbnRlcmZhY2UgQVZBdWRp
b1JvdXRpbmdBcmJpdGVyIGZvciBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDM2OTY0N2U4Yjlh
Li5kNmVmOGQ0ZTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCkBAIC0xMzksNiArMTM5LDEwIEBACiAj
ZW5kaWYKICNlbmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0Vf
SlNWQUxVRTMyXzY0KSAqLwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgVVNFX0JJR0lO
VDMyIDEKKyNlbmRpZgorCiAvKiBGSVhNRTogVGhpcyBuYW1lIHNob3VsZCBiZSBtb3JlIHNwZWNp
ZmljIGlmIGl0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIENhbGxGcmFtZSogKi8KIC8qIFVzZSBfX2J1
aWx0aW5fZnJhbWVfYWRkcmVzcygxKSB0byBnZXQgQ2FsbEZyYW1lKiAqLwogI2lmIENPTVBJTEVS
KEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGM0ZTA4ZjBmZjRmLi5iMDU3OTkzYzk3ZiAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC03MDIsNiArNzAyLDE0IEBAIGRlZiBydW5CaWdJ
bnRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJiaWctaW50
LWVuYWJsZWQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxU
ZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVuZAogCitkZWYgcnVuQmlnSW50RW5hYmxlZE5vSklUKCpv
cHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtbm9q
aXQiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUpJVD1mYWxzZSIsICpvcHRpb25hbFRlc3RT
cGVjaWZpY09wdGlvbnMpCitlbmQKKworZGVmIHJ1bkJpZ0ludEVuYWJsZWRCYXNlbGluZSgqb3B0
aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmlnLWludC1lbmFibGVkLWJhc2Vs
aW5lIiwgIi0tdXNlQmlnSW50PXRydWUiLCAiLS11c2VERkdKSVQ9MCIsICpvcHRpb25hbFRlc3RT
cGVjaWZpY09wdGlvbnMpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJVCgqb3B0aW9uYWxUZXN0U3Bl
Y2lmaWNPcHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2ppdCIsICooRlRMX09QVElPTlMg
KyBOT19DSklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396590</attachid>
            <date>2020-04-15 16:43:41 -0700</date>
            <delta_ts>2020-04-16 17:36:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>406047</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTkyNGZkMjFhMGIuLmJmOWJkN2RmYjk1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wNC0xNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgW0VDTUEtNDAyXSBFeHRlbnNpb24gdmFsdWVzIHNob3VsZCBkZWZhdWx0IHRv
IHRydWUsIGNhbm9uaWNhbGl6ZSB3aXRob3V0ICItdHJ1ZSIKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlz
aW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zZTUxMGI5ZDg5NyAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWRpdmlzaW9uLmpzCkBAIC0xLDQgKzEsNSBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKy8vQCBy
dW5CaWdJbnRFbmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IFJvYmluIFRlbXBs
ZXRvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0
aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KQEAgLTE0LDcgKzE1LDcg
QEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1
ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkgKyAiIGJ1dCBzaG91
bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkVEQ0JB
OTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
ZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQt
c2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgxMmIxY2JhNDEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVl
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVl
LmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24g
KGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVj
dGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQgKyAiICE9IGV4cGVj
dGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2lj
YWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJs
ZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBuKSB7
CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7Cisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24gZm9yICIgKyBuKTsK
ICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNhbE5vdChhKSB7CiBu
b0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykg
ewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNh
bE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUpOwotICAg
IGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgx
MG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNlLCAxbik7
CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAgYXNzZXJ0KGxvZ2lj
YWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwpp
bmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW1vZC1qaXQu
anMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGluZyk7CiAKIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmlnSW50TW9kRm9sZGlu
ZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgiICsgMTAgKyAiICUg
IiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAsICJbTnVt
YmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0KIAogbGV0IHIgPSBi
aWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUociwgLTEwbiwgIi0o
IiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQuc2FtZVZhbHVlKHIs
IC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIpID0gIiArIHIpOwog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxpY2F0aW9uLmpzIGIv
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5qcwppbmRleCAzZWNkNjM2ZDdm
OC4uN2NlNWFjZmZjZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbXVsdGlw
bGljYXRpb24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5q
cwpAQCAtMSwxOCArMSwxOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKy8vQCBydW5CaWdJbnRF
bmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IFJvYmluIFRlbXBsZXRvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIAotYXNzZXJ0ID0gewotICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChpbnB1
dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKLSAgICB9
Ci19OworZnVuY3Rpb24gdGVzdE9uZU11bCh4LCB5LCB6KSB7CisgICAgbGV0IHJlc3VsdCA9IHgg
KiB5OworICAgIGlmIChyZXN1bHQgIT09IHopCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29t
cHV0aW5nICIgKyB4ICsgIiAqICIgKyB5ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0ICsgIiBp
bnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgeik7Cit9CiAKIGZ1bmN0aW9uIHRlc3RNdWwoeCwg
eSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAqIHksIHosIHggKyAiICogIiArIHkgKyAi
ID0gIiArIHopOwotICAgIGFzc2VydC5zYW1lVmFsdWUoeSAqIHgsIHosIHkgKyAiICogIiArIHgg
KyAiID0gIiArIHopOworICAgIHRlc3RPbmVNdWwoeCwgeSwgeik7CisgICAgdGVzdE9uZU11bCh5
LCB4LCB6KTsKIH0KIAogdGVzdE11bCgweEZFRENCQTk4NzY1NDMyMTBuLCAweEZFRENCQTk4NzY1
NDMyMTBuLCAweEZEQkFDMDk3QzhEQzVBQ0NERUVDNkNEN0E0NEE0MTAwbik7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKaW5kZXggNGU1OGNhNjA3NDAu
LmNiMmY2OTUwNTc1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNo
aWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1n
ZW5lcmFsLmpzCkBAIC0yLDEwMyArMiw2MiBAQAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgSm9z
aCBXb2xmZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBi
eSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vIE1vZGlmaWVk
IGJ5IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsKLSAg
ICBpZiAoIWEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworZnVu
Y3Rpb24gdGVzdFJpZ2h0U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZhciBy
ZXN1bHQgPSBsZWZ0ID4+IHJpZ2h0OworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1bHRl
ZCBpbiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAotYXNz
ZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAg
ICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2Fn
ZSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRTaGlm
dCgwbiwgMG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgwYjEwMW4sIC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEw
MW4sIDFuLCAwYjEwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOworICAg
IHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwg
LTEyOG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRlc3RS
aWdodFNoaWZ0KDB4MjQ2biwgMG4sIDB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZu
LCAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRl
c3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZu
LCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMybik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jhbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4sIDEyN24sIDB4MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEy
OW4sIDB4OTFhMmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOworICAg
IHRlc3RSaWdodFNoaWZ0KC01biwgLTJuLCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01
biwgLTNuLCAtMHgyOG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7CisgICAg
dGVzdFJpZ2h0U2hpZnQoLTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIDNu
LCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0xbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC0weDI0Nm4sIDBuLCAtMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI3
biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMHgyNDZuLCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZu
LCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAtMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdo
dFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZuLCAt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2Jibik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxMjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIC0w
eDEyMzQ1N24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgLTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVWYWx1
ZSgwbiA+PiAwbiwgMG4sICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIx
MDFuID4+IC0xbiwgMGIxMDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoMGIxMDFuID4+IC0ybiwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09PSAw
YjEwMTAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4sICIw
YjEwMW4gPj4gLTNuID09PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+
IDFuLCAwYjEwbiwgIjBiMTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
MGIxMDFuID4+IDJuLCAxbiwgIjBiMTAxbiA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoMGIxMDFuID4+IDNuLCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoMG4gPj4gLTEyOG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKDBuID4+IDEyOG4sIDBuLCAiMG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoMHgyNDZuID4+IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOG4s
IDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjhu
ID09PSAweDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgweDI0Nm4gPj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuLCAiMHgyNDZuID4+IC0xMjluID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIweDI0
Nm4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMy
biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAg
IjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09IDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFzc2Vy
dC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwK
LSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4gPT09
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAot
ICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzJuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMzJuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2VydC5z
YW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gMTI3biwgMHgyNDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAx
MjhuLCAweDEyMzQ1Nm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxMjhuID09PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJuLAot
ICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0g
MHg5MWEyYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4gPj4g
LTFuID09PSAtMHhhbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4sICIt
NW4gPj4gLTJuID09PSAtMHgxNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwgLTB4
MjhuLCAiLTVuID4+IC0zbiA9PT0gLTB4MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAx
biwgLTNuLCAiLTVuID4+IDFuID09PSAtM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDJu
LCAtMm4sICItNW4gPj4gMm4gPT09IC0ybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gM24s
IC0xbiwgIi01biA+PiAzbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAtMTI4
biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4biA9
PT0gLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgtMW4gPj4gMG4sIC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZh
bHVlKC0xbiA+PiAxMjhuLCAtMW4sICItMW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0weDI0Nm4gPj4gMG4sIC0weDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgyNDZu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZu
ID4+IC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMHgy
NDZuID4+IC0xMjhuID09PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4g
Pj4gMTI4biwgLTFuLCAiLTB4MjQ2biA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRu
LCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAw
MDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02
NG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAw
MDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAtMzJuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNW4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1biIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDMybiwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwKLSAg
Ii0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09IC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxMjduLCAtMHgyNDY4YWRuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDEyN24gPT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhu
LCAtMHgxMjM0NTduLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzhuID4+IDEyOG4gPT09IC0weDEyMzQ1N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEyY24s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9
PT0gLTB4OTFhMmNuIik7Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlw
ZS1vZi1wcm92ZW4tdHlwZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92
ZW4tdHlwZS5qcwppbmRleCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRmZDYgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcworKysgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMKQEAgLTEsOCArMSw4IEBACiAv
L0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFs
c2UiKQogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiBhc3NlcnQoaW5wdXQsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgcmVzdWx0OiAiICsgaW5wdXQpOwogfQogCiBmdW5jdGlvbiBmb28obykgewpAQCAt
MTMsNiArMTMsNSBAQCBmdW5jdGlvbiBmb28obykgewogbm9JbmxpbmUoZm9vKTsKIAogZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGZvbygzbikgPT09ICIzIik7
CisgICAgYXNzZXJ0KGZvbygzbiksICIzIik7CiB9Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUt
bnVtYmVyLWFuZC1vdGhlci5qcwppbmRleCA4NTQ2YmYzN2VhMS4uODI1ZTg1ZDZiNjEgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9jb21wYXJlLW51bWJlci1hbmQtb3RoZXIuanMKQEAgLTU5LDE3ICs1OSwx
NyBAQCBmb3IgKGxldCBvcGVyYXRvciBvZiBvcGVyYXRvcnMpIHsKICAgICAgICAgICAgIG5vSW5s
aW5lKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KTsKIAogICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgICAgICAgICAgICAg
IGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9KSAh
PSAke2xsaW50UmVzdWx0fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljJHt0
ZXN0Q2FzZUluZGV4fSgke2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpYyR7dGVzdENhc2VJ
bmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9t
b3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT0gJHtsbGludFJl
c3VsdH0pCisgICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7
dGVzdENhc2VJbmRleH0oJHtyaWdodH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RD
YXNlSW5kZXh9KCR7cmlnaHR9KSI7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhp
Y1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0pICE9ICR7bGxpbnRSZXN1bHR9
KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNSaWdodENvbnN0YW50JHt0ZXN0
Q2FzZUluZGV4fSgke2xlZnR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAgICAg
ICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUlu
ZGV4fSgke2xlZnR9KSI7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RQb2x5bW9ycGhpYygke2xl
ZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQotICAgICAgICAgICAgICAgICAgICB0
aHJvdyAiRmFpbGVkIHBvbHltb3JwaGljVmVyc2lvbigke2xlZnR9KSI7CisgICAgICAgICAgICAg
ICAgICAgIHRocm93ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0sICR7b3BlcmF0
b3J9LCAke3JpZ2h0fSwgZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50UmVzdWx0fSkiOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYCk7CiAgICAgICAgICAgICArK3Rlc3RDYXNlSW5kZXg7CiAg
ICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMK
aW5kZXggYWYyMjgzZjhlZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTgzLDcgKzgzLDgg
QEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICIsIFJpZ2h0ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0
Q2FzZUluZGV4XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAo
Y2FzZTogIiArIGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVxdWFsT3V0
cHV0ID0gb3BhcXVlU3RyaWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVmdENhc2VJbmRl
eF0sIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkzLDcgKzk0LDggQEAgZnVuY3Rp
b24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0
ID0gIiArCiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4
XSArCiAgICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaWN0RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTogIiAr
IGxlZnRDYXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1z
dHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4OSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAgLTMw
LDYgKzMwLDYgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZhciBy
ZXN1bHQgPSBmb28oYXJyYXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9IGlu
ZGV4ID49IGFycmF5Lmxlbmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09IGV4
cGVjdGVkKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cisg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4cGVj
dGVkICIgKyBleHBlY3RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlzc2lu
Zy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9t
aXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVhN2Q3
M2I3MS4uZGQ4NWE4Mzg3ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhj
ZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21p
c3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEsOCBA
QAogY29uc3QgczEgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScp
OworY29uc3QgczIgPSAoLTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScp
OwogdHJ5IHsKLSAgICBzMSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJvcGUK
KyAgICBzMSA9PSBzMjsKIH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU4YzFkOGUxZGNjLi40ZjE0NWVmZTg2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTg2LDYgKzk4Niw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmgKICAgICBydW50aW1lL1Njb3BlT2Zmc2V0LmgKICAgICBydW50
aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKKyAgICBydW50aW1lL1NjcmliYmxlLmgKICAgICBy
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmgKICAgICBydW50aW1lL1NjcmlwdEZldGNoZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZmYyNGZjMmE2ZTIuLmNiODE2ZWEzNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzODcgQEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24g
aW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhdHRlbXB0cyB0byBv
cHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgQmlnSW50cywgd2hlbiB0aGV5IGFyZSBzbWFsbCAo
MzIgYml0IG9yIGxlc3MpLgorICAgICAgICBJdCB3b3JrcyBieSBpbmxpbmluZyB0aGVtIGludG8g
SlNWYWx1ZSBvbiA2NC1iaXQgcGxhdGZvcm1zLCBhdm9pZGluZyB0aGUgYWxsb2NhdGlvbiBvZiBh
IEpTQmlnSW50LgorICAgICAgICBUaGUgYml0IHBhdHRlcm4gd2UgdXNlIGlzIDAwMDA6WFhYWDpY
WFhYOjAwMTIKKyAgICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiB3b3JrcyBiZWNhdXNlIG9mIHRo
ZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRo
IGEgRG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAgICAtIEl0
IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBi
aXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1ZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNl
ZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQgMCB3aGljaCBpcyBzZXQgdG8g
ZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJl
Y2F1c2UgYml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1
c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCisKKyAg
ICAgICAgVGhpcyBlbnRpcmUgY2hhbmdlIGlzIGdhdGVkIGJ5IFVTRShCSUdJTlQzMiksIHRvIG1h
a2UgaXQgZWFzaWVyIHRvIGRpc2FibGUgaWYgaXQgdHVybnMgb3V0IHRvIGhhdmUgYnVncy4KKyAg
ICAgICAgSXQgc2hvdWxkIGFsc28gbWFrZSBpdCBtdWNoIGVhc2llciB0byB2ZXJpZnkgaWYgYSBn
aXZlbiBidWcgY29tZXMgZnJvbSBpdCBvciBmcm9tIHNvbWV0aGluZyBlbHNlLgorCisgICAgICAg
IE5vdGUgdGhhdCBpbiB0aGlzIHBhdGNoIHdlIGNyZWF0ZSBzdWNoIHNtYWxsIEJpZ0ludHMgd2hl
biBwYXJzaW5nIEJpZ0ludCBjb25zdGFudHMsIGFuZCBtb3N0IG9wZXJhdGlvbnMgKGUuZy4gQWRk
IG9yIEJpdE9yKSBwcm9kdWNlIGEgQmlnSW50MzIgaWYgYm90aCBvZiB0aGVpciBvcGVyYW5kcyBh
cmUgQmlnSW50MzIsCisgICAgICAgIGJ1dCB3ZSBkb24ndCBwcm9kdWNlIGEgQmlnSW50MzIgZnJv
bSBmb3IgZXhhbXBsZSB0aGUgc3Vic3RyYWN0aW9uL2RpdmlzaW9uIG9mIHR3byBsYXJnZSBoZWFw
LWFsbG9jYXRlZCBKU0JpZ0ludHMsIGV2ZW4gaWYgdGhlIHJlc3VsdCBmaXRzIGluIDMyLWJpdHMu
CisgICAgICAgIEFzIGEgcmVzdWx0LCBzbWFsbCBCaWdJbnRzIGNhbiBub3cgZWl0aGVyIGJlIGhl
YXAtYWxsb2NhdGVkIG9yIGlubGluZWQgaW4gdGhlIEpTVmFsdWUuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbmNsdWRlcyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIG9mIHZhcmlvdXMgc2xvdyBwYXRo
cywgd2hpY2ggYXJlIG5vdyBncm91cGVkIHRvZ2V0aGVyIGluIE9wZXJhdGlvbnMuaAorICAgICAg
ICBCZWNhdXNlIHRoaXMgaW5jcmVhc2VkIHRoZSBzaXplIG9mIE9wZXJhdGlvbnMuaCBzaWduaWZp
Y2FudGx5LCBJIHNwbGl0IHRoZSBwYXJ0cyBvZiBPcGVyYXRpb25zLmggd2hpY2ggYXJlIG9ubHkg
dXNlZCBieSB0aGUgR0MgaW50byBTY3JpYmJsZS5oLCB0byBhdm9pZCBibG9hdGluZyBjb21waWxl
IHRpbWVzLgorCisgICAgICAgIEluIHRoZSBERkcgYW5kIEZUTCB3ZSBub3cgaGF2ZSAzIFVzZUtp
bmRzIGZvciBCaWdJbnRzOiBIZWFwQmlnSW50VXNlLCBCaWdJbnQzMlVzZSBhbmQgQW55QmlnSW50
VXNlLgorICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCB3aGVuIHdlIGtub3cgdGhhdCB3ZSBh
cmUgcmVjZWl2aW5nIEJpZ0ludHMsIGJ1dCBzcGVjdWxhdGlvbiBpbmRpY2F0ZXMgYSBtaXggb2Yg
aGVhcC1hbGxvY2F0ZWQgYW5kIHNtYWxsIChpbmxpbmVkKSBiaWctaW50cy4KKworICAgICAgICBV
bmZvcnR1bmF0ZWx5LCBhIG5haXZlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgcGF0Y2ggc2lnbmlm
aWNhbnRseSByZWdyZXNzZXMgdGhlIHBlcmZvcm1hbmNlIG9mIFN0cmljdEVxIChhbmQgaXRzIHZh
cmlhbnRzKSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHRydWUgdGhhdCBhIGNlbGwgYW5kIGEgbm9uLWNl
bGwgY2Fubm90IGJlIGVxdWFsLgorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGNvZGUg
d2FzIGp1bXBpbmcgdG8gYSBzbG93IHBhdGggaWYgZWl0aGVyOgorICAgICAgICAtIGF0IGxlYXN0
IG9uZSBvcGVyYW5kIGlzIGEgZG91YmxlCisgICAgICAgIC0gb3IgYm90aCBvcGVyYW5kcyBhcmUg
Y2VsbHMKKyAgICAgICAgTm93LCBpdCBhbHNvIG5lZWRzIHRvIGp1bXAgdG8gdGhlIHNsb3cgcGF0
aCBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsLgorICAgICAgICBUbyByZWNvdmVyIHRoaXMgcGVy
Zm9ybWFuY2UgY29zdCwgSSBzaWduaWZpY2FudGx5IHJld3JvdGUgdGhpcyBjb2RlLCBmcm9tCisg
ICAgICAgICAgaWYgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSB7CisgICAgICAgICAg
ICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoISBsZWZ0IGlz
IEludDMyKSB7CisgICAgICAgICAgICBpZiAobGVmdCBpcyBOdW1iZXIpCisgICAgICAgICAgICAg
IGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCEgcmlnaHQgaXMgSW50
MzIpIHsKKyAgICAgICAgICAgIGlmIChyaWdodCBpcyBOdW1iZXIpCisgICAgICAgICAgICAgIGdv
dG8gc2xvd1BhdGgKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQK
KyAgICAgICAgVG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICBpZiAobGVmdCBpcyBEb3VibGUg
fHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAgICAg
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
aWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93
UGF0aAorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgdG8g
YmUgZmFzdGVyIHRoYW4ganVzdCByZXBsYWNpbmcgKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSBieSBhbiB8fCwgYmVjYXVzZSBJIGZvdW5kIGEgYml0LXRyaWNrIHRvIGNoZWNrIChsZWZ0
IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpIHdoaWNoIHNob3VsZCBoZWxwIHJlZHVjZSB0
aGUgcHJlc3N1cmUgb24gdGhlIGJyYW5jaCBwcmVkaWN0b3IuCisgICAgICAgIEVhcmx5IEpldFN0
cmVhbTIgdGVzdHMgYXBwZWFyIHRvIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIHJvdWdobHkg
bmV1dHJhbCB3aGlsZSBpdCB3YXMgYSAwLjUlIHJlZ3Jlc3Npb24gYmVmb3JlIEkgdXNlZCB0aGlz
IHRyaWNrLCBidXQgdGhlIG51bWJlcnMgYXJlIHN0aWxsIHRvbyBub2lzeSwgSSBwbGFuIHRvIGRv
IG1vcmUgbWVhc3VyZW1lbnRzIGJlZm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAg
SSBkb24ndCB5ZXQgaGF2ZSBwZXJmb3JtYW5jZSBudW1iZXJzIGZvciB0aGlzIHBhdGNoIG9uIGEg
QmlnSW50IGJlbmNobWFyaywgSSB3aWxsIGdldCBzdWNoIG51bWJlcnMgYmVmb3JlIHRyeWluZyB0
byBsYW5kIGl0LCBidXQgSSdkIGxpa2Ugc29tZSByZXZpZXcgaW4gdGhlIG1lYW50aW1lLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
OjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5
cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAg
IChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIgY29uc3Qp
OgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0
aFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlTm9u
SW50MzIpOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQp
OgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50MzIpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVIZWFwQmlnSW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50MzIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSGVhcEJpZ0ludCk6CisgICAgICAg
IChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAg
IChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0RhdGFGb3JtYXQuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3Vs
YXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAg
ICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxh
dGlvbkZyb21WYWx1ZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUpTVHlwZSk6Cisg
ICAgICAgIChKU0M6OmxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRp
b25zKToKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlND
Ojppc0JpZ0ludDMyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0hlYXBCaWdJbnRTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2
ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6
CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dD
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cFRvVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb051bWVy
aWMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFu
ZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQmln
SW50MzIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJ
bnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgor
ICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlmdE9wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmlj
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRF
cXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6flNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50
MzJPcGVyYW5kOjplZGdlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQ6Om5vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJp
Z0ludDMyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQz
Mk9wZXJhbmQ6OnVzZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlCaWdJbnQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlQmlnSW50MzJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVG
aWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzQ2VsbCk6CisgICAgICAgICogZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAg
ICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9u
VmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFs
dWVzLmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlU3ViKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTXVsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE5vdCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdEFuZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdE9yKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0WG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQml0
UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFy
aXRoQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVZhbHVlQml0TFNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUJpdFVSU2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlVG9OdW1lcmljKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlSXNCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlCaXRPcFNuaXBwZXQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpsb3dIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bG93QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjppc0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
aXNOb3RCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnVu
Ym94QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hC
aWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90QW55
QmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RIZWFwQmlnSW50
VW5rbm93bldoZXRoZXJDZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNOb3RIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6aXNIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnNwZWN1bGF0ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAg
ICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGls
ZVN0dWIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAg
IChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmg6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJn
cyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5
SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50
MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmQmlnSW50MzJLbm93
bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RC
aWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZkhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTm90SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dW5ib3hC
aWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94QmlnSW50MzIpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRUeXBlT2YpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX25lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVt
cCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2Jp
Z19pbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6
CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwOgorICAgICAg
ICAoSlNDOjpJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9C
aWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnRvQmlnSW50KToKKyAgICAgICAg
KEpTQzo6Y2FsbEJpZ0ludENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpZ0ludE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6QmlnSW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9C
aWdJbnRPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OnRvVGhpc0JpZ0ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6YmlnSW50UHJv
dG9GdW5jVG9TdHJpbmdJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6dXBkYXRl
QXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6dXBkYXRlQXJpdGhQ
cm9maWxlRm9yQmluYXJ5QXJpdGhPcCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5jcHA6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c3RyaW5nVG9C
aWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6aW5jKToKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmRlYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpiaXR3aXNlQW5kKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjplcXVhbHNUb051bWJlcik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjplcXVhbHNUb0lu
dDMyKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgIChKU0M6OmFzSGVh
cEJpZ0ludCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnRvT2JqZWN0U2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Ro
aXNTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90
b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1p
bmdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkdW1wRm9yQmFja3Ry
YWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6YXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6aXNCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0hlYXBC
aWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6aXNQcmltaXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjpnZXRQcmltaXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWVyaWMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnN0cmljdEVxdWFsKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbiBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1dCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Qcmlt
aXRpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJlciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9OdW1iZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xvdyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjppc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvQm9v
bGVhbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHVyZVRvQm9vbGVhbiBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0
b0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6OmpzQWRkU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlw
ZU9yTnVsbCk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6
OmNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29t
cGFyZSk6CisgICAgICAgIChKU0M6OmpzTGVzcyk6CisgICAgICAgIChKU0M6OmpzTGVzc0VxKToK
KyAgICAgICAgKEpTQzo6YXJpdGhtZXRpY0JpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6anNTdWIp
OgorICAgICAgICAoSlNDOjpqc011bCk6CisgICAgICAgIChKU0M6OmpzRGl2KToKKyAgICAgICAg
KEpTQzo6anNSZW1haW5kZXIpOgorICAgICAgICAoSlNDOjpqc1Bvdyk6CisgICAgICAgIChKU0M6
OmpzSW5jKToKKyAgICAgICAgKEpTQzo6anNEZWMpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VO
b3QpOgorICAgICAgICAoSlNDOjpzaGlmdCk6CisgICAgICAgIChKU0M6OmpzTFNoaWZ0KToKKyAg
ICAgICAgKEpTQzo6anNSU2hpZnQpOgorICAgICAgICAoSlNDOjpiaXR3aXNlQmluYXJ5T3ApOgor
ICAgICAgICAoSlNDOjpqc0JpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpqc0JpdHdpc2VPcik6
CisgICAgICAgIChKU0M6OmpzQml0d2lzZVhvcik6CisgICAgICAgICogcnVudGltZS9TY3JpYmJs
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuaC4KKyAgICAgICAgKEpTQzo6c2NyaWJibGVGcmVlQ2VsbHMpOgorICAgICAgICAoSlNDOjpp
c1NjcmliYmxlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6c2NyaWJibGUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpwcm90b3R5cGVGb3JMb29r
dXBQcmltaXRpdmVJbXBsKToKKwogMjAyMC0wNC0xNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0VDTUEtNDAyXSBFeHRlbnNpb24gdmFsdWVzIHNo
b3VsZCBkZWZhdWx0IHRvIHRydWUsIGNhbm9uaWNhbGl6ZSB3aXRob3V0ICItdHJ1ZSIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI1MDE5ZmQ5MDUuLjZhYWIxMjAwZWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY3LDYgKzg2Nyw3IEBACiAJCTJBRDg5MzJC
MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAv
KiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQz
NDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8q
IFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAw
QUEzNENFIC8qIFNjcmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVh
ZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
OTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJ
CTMzQTkyMEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEy
QzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3
OSAvKiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmgg
Ki87IH07CkBAIC0zNTE0LDYgKzM1MTUsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVE
RjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzM3NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2
ZUV4cHJlc3Npb25UcmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2Np
YXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2
NEEyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMu
aDsgcGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNF
bGltaW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU2Miw2ICs3NTY0LDcgQEAKIAkJ
CQkwRkUwNTAyMDFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywK
IAkJCQkwRkUwNTAyMTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJ
CTBGRTA1MDIyMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTEx
QjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNF
OTYwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAy
RDc5MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQy
Mzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTI4LDYgKzg5MzEsNyBAQAog
CQkJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxv
Y2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRD
RSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYz
OTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEw
NjMyMDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
MENCNUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5k
ZXggYzEwMDI0MDRlZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1t
ZWRhaXRlIHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBo
YXMgYmVlbiBlbWl0dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVu
ZGVkIHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAg
ICAgIC8vIFRoZSB3cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRl
cnMgYWJvdmUgd2lsbCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlh
dGU4KGludCBpbW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJpdGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFBy
b2ZpbGUuY3BwCmluZGV4IGZlYTY2NzQ1YjYyLi5mMmMwNTg0ZDQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJl
c3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9k
ZSBtb2RlKQordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1
bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBU
YWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkg
JiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkK
KyAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVy
aWMoKSAmJiAhc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0lu
dDMyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9u
ZTsKQEAgLTQ4LDkgKzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVt
aXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3RE
b3VibGUubGluaygmaml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90QmlnSW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVy
KHJlZ3MsIHRlbXBHUFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBw
ZW5kKGppdC5qdW1wKCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAg
ICh2b2lkKSB0ZW1wR1BSOworI2VuZGlmCisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RDZWxsKHJlZ3MsIG1vZGUpKTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RCaWdJbnQocmVncy5wYXlsb2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGpp
dCk7CisgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdz
LnBheWxvYWRHUFIoKSkpOworICAgIGVtaXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5h
cHBlbmQoaml0Lmp1bXAoKSk7CiAKICAgICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwx
OSArOTcsMzkgQEAgdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51
bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJp
dGZpZWxkVHlwZT4KLWJvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQoKSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldEJpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0Zmll
bGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9i
aXRzICYgbWFzaykgIT0gbWFzazsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRm
aWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlw
ZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRz
ICYgbWFzaykgIT0gbWFzazsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgot
dm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBl
cnMmIGppdCkgY29uc3QKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRI
ZWFwQmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0
U2V0QmlnSW50KCkpCi0gICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRS
ZXN1bHRzOjpCaWdJbnQpOworICAgIGlmIChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAg
ICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0lu
dCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5
cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0Nh
bGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigp
KQorICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6Qmln
SW50MzIpOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxs
SGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgs
MTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJv
ZmlsZTxUPiYgcHJvZmlsZSkKICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1
Mk92ZXJmbG93Iik7CiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQu
cHJpbnQoc2VwYXJhdG9yLCAiQmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2Vy
dmVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFw
QmlnSW50Iik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5w
cmludChzZXBhcmF0b3IsICJCaWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwi
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5oCmluZGV4IDZhZGQxYTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwy
NCBAQCBwdWJsaWM6CiAgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAg
IEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAx
IDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBC
aWdJbnQgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYs
CiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAg
ICBPYnNlcnZlZFJlc3VsdHMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1
bHRzKHVpbnQ4X3QgYml0cykKICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29s
IGRpZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1pl
cm9Eb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9v
bCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3Vi
bGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYg
Tm9uTnVtZXJpYzsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0
cyAmIEJpZ0ludDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0
cyAmIChIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJp
Z0ludCgpIHsgcmV0dXJuIG1fYml0cyAmIEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2Vy
dmVCaWdJbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRP
YnNlcnZlSW50MzJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0K
ICAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50
NTJPdmVyZmxvdzsgfQogCkBAIC0xMDksMTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBk
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygp
LmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1l
cmljKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVy
aWMoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2Vy
dmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhl
YXBCaWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVh
cEJpZ0ludCgpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVy
biBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5k
aWRPYnNlcnZlSW50MzJPdmVyZmxvdygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92
ZXJmbG93KCk7IH0KIAogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBz
ZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0
T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJv
RG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2Jz
ZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQo
KSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2Vy
dmVkSGVhcEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0K
KyAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6
OkJpZ0ludDMyKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRC
aXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2
ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93
KTsgfQogCkBAIC0xMjcsOCArMTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8
PSBPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUy
T3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJl
c3VsdHM6Ok5lZ1plcm9Eb3VibGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0
cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50
MzIoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZh
bHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1
bHRzOjpIZWFwQmlnSW50OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwy
MiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93
IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBp
dCBzZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9u
LW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1Zh
bHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQg
ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1w
R1BSLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRz
IChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlKS4KICAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2
b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5v
bk51bWVyaWMKICAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNl
dHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0Owot
ICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1p
dFNldEhlYXBCaWdJbnQoKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxs
SGVscGVycyYpIGNvbnN0OworCisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25z
dDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7CisjZW5kaWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0Nh
bGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpA
QCAtMTc1LDcgKzE4OCw3IEBAIHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90
OwogY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0
aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkIDw9IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4g
YSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9
IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5
cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHBy
IFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0
aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBl
U2hpZnQpKTsKIApAQCAtMjU3LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6
IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0
UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2Zp
bGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fz
c2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQg
KyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBp
biB0aGUgdW5kZXJseWluZyB0eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFz
dFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhC
aXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRl
cnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lh
bEZhc3RQYXRoQml0KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlB
cml0aFByb2ZpbGVCYXNlPih+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBi
aXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJl
IGEgaGlnaGVyIGJpdC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCmluZGV4IDFmNTY2OTRjZTcwLi4yZWMzNzg2ZjllMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMjksNiArMzI5
LDcgQEAgb3BfZ3JvdXAgOlVuYXJ5T3AsCiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwK
ICAgICAgICAgOmlzX2Jvb2xlYW4sCiAgICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19i
aWdfaW50LAogICAgICAgICA6aXNfb2JqZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGws
CiAgICAgICAgIDppc19mdW5jdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmlu
ZGV4IDljNTRiNDNkZGMzLi5jNjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5k
ZXggNjdmMmNlYzBhODAuLmVlYTVmYTRjM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJl
Z2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJh
bmQpCiAgICAgVVNFUyhPcElzQm9vbGVhbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIs
IG9wZXJhbmQpCisgICAgVVNFUyhPcElzQmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09i
amVjdCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAg
VVNFUyhPcElzQ2VsbFdpdGhUeXBlLCBvcGVyYW5kKQpAQCAtNDIzLDkgKzQyNCwxMCBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNE
c3QpCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRz
dCkKLSAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRl
ZmluZWRPck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhP
cElzTnVtYmVyLCBkc3QpCisgICAgREVGUyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElz
T2JqZWN0LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhP
cElzQ2VsbFdpdGhUeXBlLCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDA1M2IxYjQ0OTIwLi4zZmZjMmMzOTljZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTYwLDcgKzYwLDYgQEAK
ICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVE1hdGhJQy5oIgotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1
ODhkYmZmNi4uMjA3NWRhNzA1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EYXRhRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RhdGFGb3JtYXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NCwxMiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWlu
dDhfdCB7CiAgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0g
NiwKICAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAg
ICBEYXRhRm9ybWF0QmlnSW50MzIgPSA4LAorICAgIERhdGFGb3JtYXRKUyA9IDE2LAogICAgIERh
dGFGb3JtYXRKU0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLAogICAgIERh
dGFGb3JtYXRKU0RvdWJsZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsCiAgICAg
RGF0YUZvcm1hdEpTQ2VsbCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLAogICAgIERh
dGFGb3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwKLSAg
ICAKKyAgICBEYXRhRm9ybWF0SlNCaWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRC
aWdJbnQzMiwKKwogICAgIC8vIE1hcmtlciBkZWxpbWluYXRpbmcgb3JkaW5hcnkgZGF0YSBmb3Jt
YXRzIGFuZCBPU1Itb25seSBkYXRhIGZvcm1hdHMuCiAgICAgRGF0YUZvcm1hdE9TUk1hcmtlciA9
IDMyLCAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3MDFjMzMwODli
OS4uODMwZjZkNjc1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3
ICs0Niw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZv
aWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAordm9pZCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICBjYXNlIE5vbmU6CkBAIC02NywxMiArNjcsMTIg
QEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0Nh
bGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVW5h
cnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0
T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAg
IHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQ
UiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIEJpbmFyeUFyaXRo
UHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2
ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHUuYmlu
YXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCmluZGV4IGU4YjY1ZWFkNDZlLi4zYWJhMWEzMmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVJbmRleC5oIgogI2lu
Y2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUgIlRhZ1Jl
Z2lzdGVyc01vZGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgzLDcgKzg0LDggQEAgcHVi
bGljOgogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X2tpbmQgIT0gTm9uZTsgfQogCi0gICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJz
JiwgSlNWYWx1ZVJlZ3MpIGNvbnN0OworICAgIC8vIFRoZSB0ZW1wb3JhcnkgcmVnaXN0ZXIgaXMg
b25seSBuZWVkZWQgb24gNjQtYml0cyBidWlsZHMgKGZvciB0ZXN0aW5nIEJpZ0ludDMyKS4KKyAg
ICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgR1BSUmVn
IHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggMTA1M2JhNTJi
NTQuLjc3MWM3OWI4NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzksMTEgKzIzOSw2IEBAIHZvaWQgZHVtcFNwZWN1
bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAg
ICAgICAgICAgc3RyT3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaXNUb3AgPSBmYWxzZTsKLQotICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50KQotICAg
ICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgaXNUb3AgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVlID09IFNwZWNJbnQz
Mk9ubHkpCkBAIC0yNzgsNyArMjczLDIzIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3Ry
ZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KLSAgICAKKworICAgIGlmICgodmFsdWUgJiBT
cGVjQmlnSW50KSA9PSBTcGVjQmlnSW50KQorICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludCIp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZhbHVlICYgU3Bl
Y0JpZ0ludDMyKQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlmICh2YWx1ZSAm
IFNwZWNIZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmlnSW50Iik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgfQorI2VuZGlm
CisKICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQogICAgICAgICBzdHJPdXQu
cHJpbnQoIkRvdWJsZUltcHVyZU5hTiIpOwogICAgIApAQCAtNDMxLDcgKzQ0Miw3IEBAIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbykKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYgKGNsYXNzSW5m
byA9PSBKU0JpZ0ludDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICAg
ICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0ZpbmFs
T2JqZWN0OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7CkBAIC00OTks
OCArNTEwLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBpZiAoc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgICByZXR1cm4g
U3BlY1N5bWJvbDsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBCaWdJ
bnRUeXBlKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBpZiAoc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKKyAgICAgICAgcmV0dXJuIFNwZWNI
ZWFwQmlnSW50OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IERlcml2
ZWRBcnJheVR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5OwogICAgIHJldHVy
biBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7CkBAIC01
MzYsNiArNTQ3LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1
ZSB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgICAg
IHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1ZS5pc0JpZ0lu
dDMyKCkpCisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZhbHVlLmlzQ2Vs
bCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7
CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQpAQCAtNTk1LDggKzYwOCw4IEBAIE9wdGlvbmFs
PFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5cGUpCiAgICAg
ICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIGNhc2UgU3ltYm9sVHlwZToKICAgICAgICAgcmV0
dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgotICAgICAgICByZXR1cm4gU3Bl
Y0JpZ0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgorICAgICAgICByZXR1cm4gU3BlY0hl
YXBCaWdJbnQ7CiAgICAgY2FzZSBBcnJheVR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjQXJyYXk7
CiAgICAgY2FzZSBEZXJpdmVkQXJyYXlUeXBlOgpAQCAtNjMyLDYgKzY0NSwxMCBAQCBTcGVjdWxh
dGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhT
cGVjdWxhdGVkVHlwZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQogICAgICAgICB0
eXBlIHw9IFNwZWNTdHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQpCisgICAgICAg
IHR5cGUgfD0gU3BlY0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IDVkYjE4YzY0
ODJkLi5kZjBiOTFhNzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC05OCwxMiArOTgsMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PAogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhl
ciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3Bl
Y01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFuIHwgU3BlY090
aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZp
bmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVt
cHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jp
Z0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Rh
dGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNIZWFwQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQxOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAKK3N0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludDMyICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHNtYWxsIEJpZ0ludCB0
aGF0IGlzIGlubGluZSB0aGUgSlNWYWx1ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0JpZ0ludDMyIHwg
U3BlY0hlYXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRh
Vmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
UHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8IFNwZWNTeW1i
b2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7IC8vIEl0J3Mg
YW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5hbE9iamVjdCB8
IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8IFNwZWNEaXJl
Y3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09iamVjdCB8IFNw
ZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2JqZWN0IHwgU3Bl
Y01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8IFNwZWNXZWFr
U2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8IFNwZWNPYmpl
Y3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5n
IGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNP
YmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjQmln
SW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCi1zdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2Vs
bCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRo
ZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFO
Lgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwg
U3BlY0NlbGxPdGhlciB8IFNwZWNIZWFwQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNwZWNCeXRlY29k
ZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0
IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3Zl
LCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJl
c3BvbmRzIHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRp
YyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFNwZWNCeXRlY29kZVRvcCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJdCBjYW4gYmUg
YW55dGhpbmcgdGhhdCBieXRlY29kZSBjb3VsZCBzZWUgcGx1cyBleG90aWMgZW5jb2RpbmdzIG9m
IG51bWJlcnMuCiAKQEAgLTE4NSw5ICsxODcsMTkgQEAgaW5saW5lIGJvb2wgaXNTeW1ib2xTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1N5
bWJvbDsKIH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7Cit9CisKK2lu
bGluZSBib29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQor
eworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSGVhcEJpZ0ludDsKK30KKwogaW5saW5lIGJvb2wg
aXNCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY0JpZ0ludDsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVj
QmlnSW50KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2M2QzNjJjYWMxOS4uNDRl
MTVjMjA2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzAzLDcgKzE3MDMsMTEgQEAgYm9vbCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgewogICAgICAgICAgICAgICAgIHJl
d2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0
LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAg
ICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUpOworI2Vsc2UKKyAg
ICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1
ZSwgSGVhcEJpZ0ludFR5cGUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVjdCIpIHsKQEAg
LTI5MTEsNyArMjkxNSw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEJpZ0ludENv
bnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ4CiAgICAgcmV0dXJuIG1f
YmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwoKSwgcmFkaXgs
IHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWduID8gSlNCaWdJbnQ6OlBhcnNl
SW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQ7Ci0gICAg
ICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2
bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2Rl
OjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAgICAgIEpTVmFsdWUgYmlnSW50
SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJp
bmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBw
YXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAg
ICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ1MzRj
ZDgyOGFhLi40MDM3NGUxNWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA5MCw3ICsxMDkwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3Vi
bGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1h
cDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OwotICAg
ICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwg
SlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhhc2hNYXA8
QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+PjsKICAg
ICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCAwYTRhMTFmOWI0MC4uZThmMmM5N2E5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUg
IlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCkBAIC0yMTUsNyAr
MjE0LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZtLCBF
Q01BTW9kZSBlY21hTW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBvdmVycmlkZXNU
b1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2go
WyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5m
byB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUu
aXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09
IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CisgICAgICAgICAgICBB
U1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlw
ZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSk7
CiAgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoKQEAgLTUwMyw3
ICs1MDIsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJV
c2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2Rl
LCBTcGVjQmlnSW50MzIpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpA
QCAtNTMzLDcgKzU0MCwxNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBpZiAo
aGFuZGxlQ29uc3RhbnRCaW5hcnlCaXR3aXNlT3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAg
ICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIGJpbmFyeVVzZUtpbmQgbWVhbnMgdGhhdCB3ZSBjYW5u
b3Qgc3BlY2lhbGl6ZSB0byAoZm9yIGV4YW1wbGUpIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQg
YW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisjZWxzZQorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0
VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZv
ck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkBAIC03MjMsMTEgKzczOSwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogCiAgICAgY2FzZSBWYWx1ZVN1YjoKICAgICBjYXNlIFZhbHVlQWRkOiB7Ci0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRV
c2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0gICAgICAgIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICBjbG9iYmVyV29y
bGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCBTcGVjU3RyaW5n
IGhlcmUgZm9yIFZhbHVlU3ViPyBJdCBzZWVtcyBsaWtlIHdlIG9ubHkgbmVlZCBpdCBmb3IgVmFs
dWVBZGQuCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3RyaW5nIHwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CkBAIC04ODcsNiArOTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgVmFsdWVOZWdhdGU6IHsKKyAgICAgICAgLy8gRklYTUU6IHdlIGNvdWxk
IGRvIG11Y2ggc21hcnRlciB0aGluZ3MgZm9yIEJpZ0ludHMsIHNlZSBWYWx1ZUFkZC9WYWx1ZVN1
Yi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICBicmVhazsKQEAgLTk1
OSw3ICs5NzksMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CiAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgdHlwZU9m
RG91YmxlSW5jT3JEZWMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJp
Z0ludFVzZToKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAg
ICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNCaWdJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC05NzUs
NyArOTk5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNWYWx1ZSBjaGls
ZFkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGRY
ICYmIGNoaWxkWSAmJiBjaGlsZFguaXNOdW1iZXIoKSAmJiBjaGlsZFkuaXNOdW1iZXIoKSkgewog
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIGBkaWRGb2xkQ2xvYmJlcldvcmxkYCBoZXJl
IGJlY2F1c2UgdGhpcyBwYXRoIGlzIG9ubHkgcG9zc2libGUKLSAgICAgICAgICAgIC8vIHdoZW4g
bm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBCaWdJbnRVc2UsIGNo
aWxkcmVuIHdpbGwgYmUKKyAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5
cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBBbnlCaWdJbnRVc2Ugb3IgZnJpZW5kcywgY2hpbGRyZW4g
d2lsbCBiZQogICAgICAgICAgICAgLy8gY2xlYXJlZCBieSBgQWJzdHJhY3RJbnRlcnByZXRlcjo6
ZXhlY3V0ZUVmZmVjdHNgLgogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOwogICAg
ICAgICAgICAgLy8gT3VyIGJveGluZyBzY2hlbWUgaGVyZSBtYXRjaGVzIHdoYXQgd2UgZG8gaW4g
b3BlcmF0aW9uVmFsdWVQb3cuCkBAIC05ODMsNyArMTAwNyw5IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShu
b2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTMsNyArMTAxOSwx
MCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2UgVmFsdWVNdWw6
IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAg
ICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBWYWx1ZVN1Yj8K
KyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBl
bHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZCgpOwpAQCAtMTA1Nyw3ICsxMDg2LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAg
ICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNlIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgp
OwpAQCAtMTM4MSw2ICsxNDEyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1i
ZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBj
YXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC0xNDA5LDYgKzE0NDEs
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgY2FzZSBJc051bWJlcjoK
ICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUo
KS5pc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IElzQmlnSW50OgorICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihj
aGlsZC52YWx1ZSgpLmlzQmlnSW50KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChjaGlsZC52
YWx1ZSgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2Myw3ICsxNTk4LDIyIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgaWYg
KCEoY2hpbGQubV90eXBlICYgflNwZWNCaWdJbnQpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICBjb25zdGFudFdh
c1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNCaWdJbnQpKSB7CisgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CisgICAgICAgICAgICAg
ICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogaWYgdGhlIFNwZWN1bGF0ZWRUeXBlIGlu
Zm9ybXMgdXMgdGhhdCB3ZSB3b24ndCBoYXZlIGEgQmlnSW50MzIgKG9yIHRoYXQgd2Ugd29uJ3Qg
aGF2ZSBhIEhlYXBCaWdJbnQpLCB0aGVuIHdlIGNhbiB0cmFuc2Zvcm0gdGhpcyBub2RlIGludG8g
YSBJc0NlbGxXaXRoVHlwZShIZWFwQmlnSW50VHlwZSkgKG9yIGEgaHlwb3RoZXRpY2FsIElzQmln
SW50MzIgbm9kZSkuCiAKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjoKICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5
KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7
CkBAIC0xOTM3LDEzICsxOTg3LDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgY2hlY2sg
aGVyZSwgYW5kIG5vdCBsYXRlciAoYWZ0ZXIgdGhlIHR5cGUtYmFzZWQgcmVwbGFjZW1lbnQgYnkg
ZmFsc2UpLgorICAgICAgICAvLyBTYWFtIHNlZW1zIHRvIGFncmVlIHRoYXQgdGhlIHR3byBjaGVj
a3MgY291bGQgYmUgc3dpdGNoZWQsIEknbGwgdHJ5IHRoYXQgaW4gYSBzZXBhcmF0ZSBwYXRjaAog
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJp
Z0ludCB0byBKU0MuCi0gICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50ID0g
W10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFs
dWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIGlzTm9u
U3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNWYWx1ZSB2YWx1ZSkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJp
bmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAg
ICAgICBpZiAoaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQobGVmdCkgfHwgaXNOb25TdHJpbmdDZWxs
Q29uc3RhbnQocmlnaHQpKSB7CisgICAgICAgICAgICBpZiAoaXNOb25TdHJpbmdPckJpZ0ludENl
bGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KHJpZ2h0
KSkgewogICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5n
KHRydWUpOwogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
Qm9vbGVhbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTU4LDE5ICsyMDA5LDI0IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKSA9PSBub2RlLT5jaGlsZDIoKSkgewotICAgICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUt
PmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN5bWJvbFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
aXNjVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFyVXNlKSB8fAotICAgICAgICAg
ICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50
VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2Us
IFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBh
bnkgY2FzZSBub3QgaW52b2x2aW5nIE5hTiB3aGVyZSB4ID09PSB4IGlzIG5vdCBndWFyYW50ZWVk
IHRvIHJldHVybiB0cnVlPworICAgICAgICAgICAgLy8gSWYgbm90IEkgbWlnaHQgc2xpZ2h0bHkg
c2ltcGxpZnkgdGhhdCBjaGVjay4KKyAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQm9vbGVhblVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUy
UmVwVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50
VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2Up
CisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVz
ZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwg
TWlzY1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5n
SWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkKKyAgICAgICAgICAg
ICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNlKQorICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBTdHJpbmdV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNl
KQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDk5N2JhYjA1MjUuLmM0
ODY0M2ViYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtNTY2Niw2ICs1NjY2LDE3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19u
dW1iZXIpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9pc19iaWdfaW50OiB7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5
dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRv
R3JhcGgoSXNCaWdJbnQsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19i
aWdfaW50KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworI2VuZGlmCisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBl
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNv
ZGUubV9vcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Yy4uMDNlODliMjZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkX29yX251bGw6
CiAgICAgY2FzZSBvcF9pc19ib29sZWFuOgogICAgIGNhc2Ugb3BfaXNfbnVtYmVyOgorICAgIGNh
c2Ugb3BfaXNfYmlnX2ludDoKICAgICBjYXNlIG9wX2lzX29iamVjdDoKICAgICBjYXNlIG9wX2lz
X29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDYyYmIxMjU4ZDUwLi5kMjY4
MWRiYjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzUsNiArMTc1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIElzVW5k
ZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6Cisg
ICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElz
T2JqZWN0OgogICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKQEAgLTI2MCw3ICsyNjEsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIFZhbHVl
Qml0Tm90OgotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVz
ZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgICAgIGRlZihQdXJl
VmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02ODAsNyAr
NjgxLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBJbnQzMlVzZToK
ICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0g
ICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAg
ICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNhc2UgVW50eXBlZFVzZToKQEAgLTcwMiw3ICs3MDUsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgVmFsdWVQb3c6CiAgICAgY2FzZSBWYWx1ZUJpdExTaGlmdDoKICAgICBj
YXNlIFZhbHVlQml0UlNoaWZ0OgotICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIHNpbmdsZS1hcmd1bWVu
dCBpc0JpbmFyeVVzZUtpbmQgd291bGQgcHJldmVudCB1cyBmcm9tIHNwZWNpYWxpemluZyAoZm9y
IGV4YW1wbGUpIGZvciBhIEhlYXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJp
Z2h0LW9wZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50
VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShu
b2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZmI0
NTcwOWZlNTEuLjdhOTQ5NjZjOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTQ3LDkgKzE0Nyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgY2hpbGQxQ29uc3RhbnQgPSBtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKS52YWx1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGNoaWxkMkNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpLm5vZGUoKSkudmFsdWUoKTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
UmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9
IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmln
SW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXND
ZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAg
ICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmlu
Z09yQmlnSW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDkyYzAzOGYwNTkwLi44MTAyYmEwNDMzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1
ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMTQ3LDYgKzE0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNh
c2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAg
ICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNP
YmplY3RPck51bGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCAxYTRkZWNkYTBjMi4uODA3MzA4MzhkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMiwxNCArMjAyLDM0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVz
ZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVz
ZXMgdG8gY29tcGlsZSBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1p
Z2h0IG9wdGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXplZCBmdW5jdGlvbiBjYWxsIGluc3Rl
YWQgaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/
IFZhbHVlQWRkIDogVmFsdWVTdWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNIZWFwQmlnSW50
LCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmhl
YXBCaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGls
ZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAv
LyBIZWFwQmlnSW50cyBhcmUgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBp
cyBnb29kIGhlcmUKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7CisgICAgICAg
ICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2lu
ZGV4SW5CbG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5m
byhtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDEpKSkpOworICAg
ICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFudE9u
ZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2Qg
ZW5vdWdoIGZvciBub3cuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGhhdmlu
ZyBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIHNtYWxsIEJpZ0ludHMgaW5zdGVhZC4KICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBh
cHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQg
aXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNh
bGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3Ag
PT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7Ci0gICAgICAgICAgICAgICAgbm9kZUNvbnN0
YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0Jp
Z0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUodm0o
KS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3Rh
bnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmln
SW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIC8vIEJp
Z0ludHMgYXJlIGN1cnJlbnRseSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpT
IGlzIGdvb2QgaGVyZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0
SlMgaXMgZ29vZCBoZXJlCisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewogICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IEFyaXRoQWRkIDogQXJpdGhTdWIpOwog
ICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7
CkBAIC0yMzUsMTIgKzI1NSwyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgY2hpbGQx
ID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDIgPSBub2RlLT5jaGls
ZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQo
Y2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEhlYXBCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmln
SW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihjaGlsZDIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorI2Vu
ZGlmCisKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJp
dGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtMjY4LDggKzI5NiwyMSBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRB
bmQ6IHsKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMTMsNyArMzU0LDE3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVz
dEdlbmVyYXRlKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4ob3BlcmFuZEVk
Z2UpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kRWRn
ZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50MzJVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChvcGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0lu
dFVzZT4ob3BlcmFuZEVkZ2UpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIGlmIChv
cGVyYW5kRWRnZS5ub2RlKCktPnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JCaXRPcHMoKSkKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG9wZXJhbmRFZGdlKTsKICAgICAgICAg
ICAgIGVsc2UgewpAQCAtNDU4LDkgKzUwOSwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QmlnSW50VXNlPihjaGlsZDEpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihjaGlsZDIpOworICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihjaGlsZDIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoY2hpbGQxLm5vZGUoKSwg
Y2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihj
aGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMik7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChjaGlsZDEu
bm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihj
aGlsZDIpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlw
ZWRVc2U+KGNoaWxkMik7CkBAIC01NDYsOCArNjA1LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKICAgICAgICAgICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50MzIobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJp
Z0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNl
bmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC01ODgsMTIgKzY2MCwy
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQx
KCk7CiAgICAgICAgICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAg
ICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5u
b2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVh
cEJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJ
bnRVc2U+KHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisj
aWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJp
Z0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obGVmdENoaWxkKTsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlC
aWdJbnRVc2U+KGxlZnRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRV
c2U+KHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11
c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICAgfQorI2Vu
ZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJp
dGhtZXRpYyhsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGxlZnRDaGlsZCk7CkBAIC02NTcsMTIgKzczNywy
MCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBWYWx1ZVBvdzogeworICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgbm9k
ZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxVbnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTQ0LDYgKzI2MzIs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgICAgICBj
YXNlIElzQm9vbGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAgY2FzZSBJc0Jp
Z0ludDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1bmN0
aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTI4ODUsNyArMjk3
NCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjk1OCw3ICsz
MDU2LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICAvLyBJZiB0aGUgcHJlZGljdGlvbiBv
ZiB0aGUgY2hpbGQgaXMgQmlnSW50LCB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgVG9OdW1lcmljIHRv
IElkZW50aXR5LCBzaW5jZSBpdCBjYW4gb25seSByZXR1cm4gYSBCaWdJbnQgd2hlbiBmZWQgYSBC
aWdJbnQuCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFw
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbHNlCisgICAg
ICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzQ1MiwxMyArMzU1OSwxNSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFN0cmluZ1VzZToKICAgICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICAgICAgY2Fz
ZSBTeW1ib2xVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0
cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgaWYgKGFsd2F5c1VuYm94U2ltcGxl
UHJpbWl0aXZlcygpCiAgICAgICAgICAgICAgICAgfHwgaXNDZWxsU3BlY3VsYXRpb24odmFyaWFi
bGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdl
ZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiB3aGF0IHNob3VsZCB3ZSBkbyBhYm91dCBCaWdJ
bnQzMlVzZSBhbmQgQW55QmlnSW50VXNlID8KKyAgICAgICAgLy8gQWxzbyBtb3JlIGJyb2FkbHks
IHdoYXQgYWJvdXQgYWxsIG9mIHRoZSBVc2VLaW5kcyB3aGljaCBhcmUgbm90IGxpc3RlZCBpbiB0
aGF0IHN3aXRjaD8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0zOTcyLDEyICs0MDgxLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBub2RlLT5z
ZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5v
ZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RF
cSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBu
b2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVTdHJpbmdJZGVudCgpKSB7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApp
bmRleCAxY2NhOGIyYWM0MS4uNzcwZDlkNTdlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgi
CiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkRGR051bGxBYnN0cmFjdFN0YXRlLmgi
Ci0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMGI4NTBmMGM4MDcuLjhi
NTVhMzQ0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2MjIsNiAr
MjYyMiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaXNTeW1ib2xTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBib29s
IHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0JpZ0lu
dDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CisjZW5kaWYKKworICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNIZWFw
QmlnSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBz
aG91bGRTcGVjdWxhdGVCaWdJbnQoKQogICAgIHsKQEAgLTI4MjIsNyArMjgzNCwxOSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSAm
JiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpOwogICAgIH0KLSAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihOb2RlKiBv
cDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpOworICAgIH0KKyNl
bmRpZgorCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChOb2RlKiBv
cDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0
ZUhlYXBCaWdJbnQoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKTsKKyAgICB9
CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdChOb2RlKiBvcDEs
IE5vZGUqIG9wMikKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKaW5kZXggN2U5NmEyNjg0Y2UuLmIwYmE2
YmI3ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFn
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKQEAgLTU0
LDYgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2Rl
TWF5TmVnWmVyb0luQmFzZWxpbmUgICAgICAgICAweDAwMjAwCiAjZGVmaW5lIE5vZGVNYXlOZWda
ZXJvSW5ERkcgICAgICAgICAgICAgIDB4MDA0MDAKICNkZWZpbmUgTm9kZU1heUhhdmVOb25OdW1l
cmljUmVzdWx0ICAgICAgMHgwMDgwMAorLy8gRklYTUU6IHdlIHNob3VsZCBoYXZlIHNlcGFyYXRl
IGZsYWdzIGZvciBIZWFwQmlnSW50IGFuZCBCaWdJbnQzMiwgY3VycmVudGx5IHByZWRpY3Rpb24g
cHJvcGFnYXRpb24gd2lsbCBwZXNzaW1pemUgdGhpbmdzLgogI2RlZmluZSBOb2RlTWF5SGF2ZUJp
Z0ludFJlc3VsdCAgICAgICAgICAweDAxMDAwCiAjZGVmaW5lIE5vZGVNYXlIYXZlTm9uSW50UmVz
dWx0ICAgICAgICAgIChOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCB8IE5vZGVNYXlIYXZlTm9uTnVt
ZXJpY1Jlc3VsdCB8IE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRl
eCA3ODM1MjhlYTU0NS4uMGRmYTAyZGRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKQEAgLTM5Niw2ICszOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oSXNVbmRlZmluZWRPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBc
CiAgICAgbWFjcm8oSXNCb29sZWFuLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElz
TnVtYmVyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIC8qIElzQmlnSW50IGlzIG9ubHkgdXNl
ZCB3aGVuIFVTRV9CSUdJTlQzMi4gT3RoZXJ3aXNlIHdlIGVtaXQgSXNDZWxsV2l0aFR5cGUgKi9c
CisgICAgbWFjcm8oSXNCaWdJbnQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTnVt
YmVySXNJbnRlZ2VyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0LCBO
b2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0T3JOdWxsLCBOb2RlUmVzdWx0
Qm9vbGVhbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXgg
YTg1MmRiZGQ5YjkuLmY2MzcyYWRkNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKQEAgLTM4MywxMCArMzgzLDEzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QK
ICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBiZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIHNwYXJl
IHJlZ2lzdGVyLiBTbyB1c2UgdGhlIG51bWJlclRhZ1JlZ2lzdGVyLAogICAgICAgICAgICAgICAg
IC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCiAgICAgICAgICAgICAgICAgaml0
LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNB
ZGRyZXNzKCkpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOworICAgICAgICAgICAgICAgIC8vIFdlIGFsc28gdXNlIHRoZSBub3RDZWxs
TWFza1JlZ2lzdGVyIGFzIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLCBmb3IgdGhlIHNhbWUgcmVhc29u
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBmaW5kIGEgbGVzcyBncm9zcyB3YXkgb2YgZG9p
bmcgdGhpcywgbWF5YmUgdGhyb3VnaCBkZWxheWluZyB0aGVzZSBvcGVyYXRpb25zIHVudGlsIHdl
IGFjdHVhbGx5IGhhdmUgc29tZSBzcGFyZSByZWdpc3RlcnMgYXJvdW5kPworICAgICAgICAgICAg
ICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsK
KyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
ciwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSwgR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
ICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewogICAgICAgICAgICAg
ICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgpAQCAtMzk4LDcgKzQwMSw3
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBz
Y3JhdGNoKHNjcmF0Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVz
cygpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShq
aXQsIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgc2NyYXRjaCwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgICAgICBqaXQu
cG9wVG9SZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKQEAgLTQwNywxMCArNDEwLDEwIEBAIHZvaWQg
T1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NS
RXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNo
VGFnKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwogICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNl
LnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCB2YWx1ZSwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9y
ZShzY3JhdGNoVGFnKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKKyAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVl
U291cmNlLnJlZ3MoKSwgSW52YWxpZEdQUlJlZyk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5k
ZXggOWU5YmNlYTQ4MWMuLmUwZTg3MjFlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IGNjNTc4MDk3Yjc0Li40NDBjOWI4MjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcsNyArODcsNiBAQAogI2luY2x1ZGUgIlR5
cGVkQXJyYXlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNpZiBFTkFCTEUoSklU
KQogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjIyLDU2ICsyMjEsNiBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbAogICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpZGVudCwg
cHV0VmFsdWUsIHNsb3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCaWdJbnRPcGVyYXRpb24s
IHR5cGVuYW1lIE51bWJlck9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlnSW50
T3BlcmF0aW9uJiYgYmlnSW50T3AsIE51bWJlck9wZXJhdGlvbiYmIG51bWJlck9wLCBjb25zdCBj
aGFyKiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBh
dXRvIGxlZnROdW1lcmljID0gb3AxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHRO
dW1lcmljID0gb3AyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlck9wKFdURjo6Z2V0PGRvdWJs
ZT4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgSW50MzJPcGVyYXRp
b24+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3Ao
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJ
bnRPcCwgSW50MzJPcGVyYXRpb24mJiBpbnQzMk9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
Ci17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Ci0KLSAgICBhdXRvIGxlZnROdW1lcmljID0g
b3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gb3Ay
LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShiaWdJbnRPcChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpKSk7
Ci0KLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ZXJyb3JNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGludDMyT3AoV1RGOjpnZXQ8aW50MzJfdD4obGVm
dE51bWVyaWMpLCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSkpOwotfQotCiBzdGF0
aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBwYXJzZUludFJlc3VsdChkb3VibGUgaW5w
dXQpCiB7CiAgICAgaW50IGFzSW50ID0gc3RhdGljX2Nhc3Q8aW50PihpbnB1dCk7CkBAIC00NzEs
NzEgKzQyMCwzNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TW9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRv
IG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0g
ICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRP
cCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVt
YWluZGVyIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUmVtYWlu
ZGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5jKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9OdW1lcmlj
KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9w
ZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNCaWdJbnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
b3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RGOjpnZXQ8ZG91Ymxl
PihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2
YWx1ZSArIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzSW5jKGdsb2JhbE9iamVj
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLQotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBv
cDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSkpOwotCi0gICAgZG91YmxlIHZhbHVlID0gV1RG
OjpnZXQ8ZG91YmxlPihvcGVyYW5kTnVtZXJpYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcih2YWx1ZSAtIDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRGVj
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAK
LSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJp
YykpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpT
QmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVy
YW5kTnVtZXJpYykpKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKH5X
VEY6OmdldDxpbnQzMl90PihvcGVyYW5kTnVtZXJpYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQml0d2lzZU5vdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3ApKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVC
aXRBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU0NCwxNSArNDU2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+
IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBs
ZWZ0ICYgcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFs
T2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3AsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVy
YXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZUFuZChnbG9i
YWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTYxLDE1ICs0NjUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmln
aHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0
dXJuIGxlZnQgfCByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJP
cCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdvcicg
b3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0JpdHdpc2VPcihn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU3OCwxNSArNDc0
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10g
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCog
cmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZVhv
cihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAgICAg
IHJldHVybiBsZWZ0IF4gcmlnaHQ7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGlu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAn
eG9yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lz
ZVhvcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVCaXRMU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTU5
NSwxNSArNDgzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJ
bnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwg
SlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0
byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7
Ci0gICAgICAgIHJldHVybiBsZWZ0IDw8IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0xTaGlmdChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikKQEAgLTYxMiwxNSArNDkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0g
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Jp
Z0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qg
cmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCA+PiAocmlnaHQgJiAweDFm
KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9u
LiJfcyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1JTaGlmdChnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRV
UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC02NTgsMTUgKzUzMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGxlZnQg
LyByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0s
IGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbiBvcGVyYXRpb24uIik7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RpdihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVQb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikKQEAgLTY3NSwxNSArNTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gb3BlcmF0aW9uTWF0aFBvdyhsZWZ0
LCByaWdodCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZt
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiJf
cyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1BvdyhnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9
CiAKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCkBAIC0xNDgwLDcgKzEz
MzYsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcmVnZXhwLT50ZXN0KGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0KIAotSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE0
OTIsNyArMTM0OCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmln
SW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSkKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXROb3RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3AxKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTAzLDcgKzEzNTks
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lz
ZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTUxNSw3ICsxMzcxLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRpcGx5
KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAgICAgCi1KU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Nb2RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpA
QCAtMTUyNyw3ICsxMzgzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4g
SlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJh
bmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTUzOSw3ICsxMzk1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5k
LCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU1MSw3ICsxNDA3LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxP
YmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU2
Myw3ICsxNDE5LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKICAgICByZXR1cm4gSlNCaWdJ
bnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1NzUsNyArMTQzMSw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDCiAgICAgcmV0dXJuIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkSGVhcEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1ODcsNyArMTQ0Myw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFs
T2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTE1OTksNyArMTQ1NSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRS
U2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgcmV0dXJu
IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJp
Z2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYxMSw3ICsxNDY3LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCoKICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmpl
Y3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYyOSw3
ICsxNDg1LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
Q2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAgcmV0dXJuIEpT
VmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7
CisgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCBv
cDEsIG9wMik7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBhcmcxLCBFbmNvZGVk
SlNWYWx1ZSBhcmcyKQpAQCAtMTY3NCwxMCArMTUzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gdmFyaWFudCA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPih2YXJpYW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXVEY6OmdldDxK
U0JpZ0ludCo+KHZhcmlhbnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KFdURjo6Z2V0PGRvdWJsZT4odmFyaWFudCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1lcmljKGdsb2JhbE9iamVjdCkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwYzg3M2Ri
ZTVmZS4uNTMyYzYyYTdkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTgxLDE4ICsxODEsMTggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEoKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoSlNHbG9iYWxPYmplY3QqLCBS
ZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25TdWJCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxs
KiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSkgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ViSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIp
IFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Nb2RIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2SGVhcEJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0Tm90SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBXVEZf
SU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
QWN0aXZhdGlvbkRpcmVjdChWTSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSos
IEVuY29kZWRKU1ZhbHVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHMoVk0qLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90
IG1pbkNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjEwMDNlZDVmZDMuLmQ0
ZTM2NGY0ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTMyLDcgKzUzMiwxOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjU3ltYm9sKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgeworICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50MzIpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjQmlnSW50KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDA0
LDYgKzEwMTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgog
ICAgICAgICBjYXNlIElzQm9vbGVhbjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAg
Y2FzZSBJc0JpZ0ludDoKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgIGNh
c2UgSXNPYmplY3Q6CiAgICAgICAgIGNhc2UgSXNPYmplY3RPck51bGw6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGQ2ZTdjOWUzMDg1Li42ZGE2
YmMxYzM1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTc5LDcgKzc5LDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAg
ICAgICAgY2FzZSBTdHJpbmdPck90aGVyVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAg
ICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAg
IGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKQEAgLTI2Myw2ICsyNjUsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAg
Y2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50Ogog
ICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJ
c09iamVjdE9yTnVsbDoKQEAgLTY3NywxMCArNjgwLDEwIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBp
Z25vCiAgICAgY2FzZSBWYWx1ZURpdjoKICAgICBjYXNlIFZhbHVlTW9kOgogICAgIGNhc2UgVmFs
dWVQb3c6Ci0gICAgICAgIHJldHVybiBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKTsK
KyAgICAgICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAgICAgcmV0dXJu
IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2U7CisgICAgICAgIHJldHVybiBu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZTsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBkN2ViNmEwNTVkMy4uNjk3OTEwZGRlMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTcwNiw2ICsxNzA2LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJy
YW5jaChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVl
cEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMy
VXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24g
PT0gTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9s
ZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SW50NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9k
ZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzMsMjQgKzM1MzcsNDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRn
ZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5k
KCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
ZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBU
aGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlv
biBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0
cyBhcm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0g
MHgxMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4
ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmln
SW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEo
SlNWYWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJp
Z0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsK
ICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFw
QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVl
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7Cisg
ICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0
aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJh
bmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTc4LDE0ICsz
NjA1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5v
ZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0
aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9
IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
IAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENo
aWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAg
ICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51
bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRo
aXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBA
IC0zNjMwLDExICszNjYxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0
T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgp
IHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXND
b25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAg
ICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFu
eUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
fQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBs
YWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdo
dFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzAsNTIgKzM3MDMs
ODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMy
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7
CisKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAg
ICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZh
bHVlQml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1
ZUJpdFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9y
LCBvcGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVy
ZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQo
cmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVy
YXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJm
ZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0
KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBz
byB3ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAg
ICAgIG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9q
aXQub3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFT
U0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtp
bmQoKSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0g
ICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBw
b3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgorCisgICAgaWYgKGxl
ZnRDaGlsZC51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQo
KSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdo
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CiAKLSAgICBzcGVj
dWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGls
ZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmln
aHRHUFIpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChv
cCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9y
QW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4o
bm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3Bl
cmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1
ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0
T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47
CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChO
b2RlKiBub2RlKQpAQCAtMzc1NSw3ICszODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9y
QmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25f
R0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlm
dAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRV
UlNoaWZ0OwpAQCAtMzc2NSw5ICszODMwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0g
bm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwog
Ci0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5v
dE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8
fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2Up
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg1
OSwyNyArMzkyNiwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRP
cChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAg
IEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50
MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAg
R1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSBy
aWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BS
KTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVu
dHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0
Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2Vu
ZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4NywyNyAr
Mzk1NCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdl
JiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxl
ZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIo
KTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAg
ICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYg
cmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRP
cChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSog
bm9kZSkKQEAgLTM5MTgsNyArMzk4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
aGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmln
aHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlm
dEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTQ4LDE5ICs0MDE1
LDY3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQog
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmln
SW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxs
eSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/
CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNr
cyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3Vs
dEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94Qmln
SW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGlt
aW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNo
ZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRH
UFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVy
ZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIG1faml0LmJveEJpZ0lu
dDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBy
aWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVS
ZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdz
KCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2FsbCBhIG1vcmUgc3BlY2lh
bGl6ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5v
dE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdz
LCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMs
IHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJp
Z0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRD
aGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwg
bGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwpAQCAtNDAwNiw0NCArNDEyMSw5MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVTdWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNT
Y3JhdGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQ
UlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKLSNl
bmRpZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJp
Z2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVh
bGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0
ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJp
Y2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOwogCi0gICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwotICAgICAgICBhdXRv
IHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7Ci0gICAgICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgICAg
IG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hC
aWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1w
R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBj
b21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcsIG5lZWRzU2NyYXRj
aEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOworICAg
ICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hl
Y2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BS
KTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0lu
dAogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0
Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21w
aWxlVmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3Qg
VmFsdWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2Up
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFu
eUJpZ0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGls
ZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwor
ICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0g
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQ
UlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5n
cHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVl
U3ViLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICBzcGVjdWxh
dGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRD
aGlsZCwgcmlnaHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKIAotICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBsZWZ0
R1BSID0gbGVmdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7
CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCi0gICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKLSAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3Jh
dGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwor
I2Vsc2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVk
c1NjcmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5j
b2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMo
bm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUg
Tm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYyOCw2ICs0Nzg5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAgIC8vIEZJWE1FOiBhZGQg
YSBmYXN0IHBhdGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHByb2JhYmx5IGFsc28gZm9y
IEhlYXBCaWdJbnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9q
aXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5i
eXRlY29kZUluZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CkBAIC00ODA4LDI5ICs0OTcwLDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlm
IChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUg
YmV0d2VlbiBjb21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29tcGlsZVZhbHVl
TXVsIGZvciBCaWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8gZ2V0IHJpZCBv
ZiB0aGUgZHVwbGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2Ug
cmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3Jp
Z2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIg
dHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5i
b3hCaWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRv
IGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJl
c3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94
QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBm
b3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhl
YXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBH
UFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
bGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQs
IHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENo
aWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1Zh
bHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51
bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9k
ZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGls
ZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTUwMTAsMjkgKzUyMDQsMzMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAg
RWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9
IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1F
OiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0
aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4K
KworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EaXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93
bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
bGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgp
KSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJV
c2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQp
OwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAt
NTA0Niw2ICs1MjQ0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5v
ZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5k
PiBsZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NSwy
OSArNTQ5NSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJp
Z0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9m
IGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJp
Z2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxl
ZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0
Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBE
RkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkp
OworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7
CisgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJl
Z3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpz
VmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4NTksMzAgKzYwNjMsMzMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAg
RWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9
IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50
MzIgZm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcg
bGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdw
cigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAg
ICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBv
d0hlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2Ug
fHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBK
U1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQg
cmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBz
cGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGls
ZCk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAg
SlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMCw2
ICs2MjM3LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUo
bm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJl
cFVzZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpA
QCAtNjA1OCw2ICs2MjcxLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBu
b2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhl
cmUuCisgICAgLy8gTm90IGhhdmluZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJlIHdpbGwgbm90
IGJlIGZ1c2VkIHdpdGggdGhlIGJyYW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
Qm9vbGVhblVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFyZShub2RlLCBj
b25kaXRpb24pOwpAQCAtNjEzNiw3ICs2MzUyLDI0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVuc2lnbmVkIGJy
YW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChi
cmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5j
aE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICB1c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFu
Y2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVCaWdJ
bnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFu
Y2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJh
bmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTgzLDggKzY0MTYsOCBAQCBib29s
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGls
ZUhlYXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAKQEAgLTYyNzgsOCArNjUxMSw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxp
dHkobm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CiAgICAg
cmV0dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEwNTM4LDE4ICsx
MDc3MSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdl
KQogICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVn
IGNlbGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Y2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZO
b3RCaWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2pp
dC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFu
ZC5ncHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpT
VmFsdWVSZWdzIHJlZ3MpCkBAIC0xMDcxOSw4ICsxMDk1MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAg
ICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJp
Z0ludFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1
bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIEhl
YXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJp
bmdPYmplY3QoZWRnZSk7CkBAIC0xMzA2NywxNyArMTMzMDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIGFyZ3Vt
ZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOwor
ICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUgKGFuZCBmb3Ig
dHlwZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVkIGluIHRoaXMg
ZmlsZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1
bWVudFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQo
YXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlz
QmlnSW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBub3RDZWxs
LmxpbmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVt
YmVyKGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGluaygmbV9qaXQp
OworICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVn
cyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmljLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CkBAIC0xMzk2
Niw5ICsxNDIwOCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhv
bGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1cnJlbnROb2Rl
ID0gYnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludEVx
dWFsaXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0lu
dEVxdWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0g
Q3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNl
CisgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNp
b24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
bGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmln
aHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5ODAsOCArMTQyMjIsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKICAgICBsZWZ0
LnVzZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNo
aWxkMSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJp
Z2h0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BS
KTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAK
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFuY2hQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiZmIxODQ4MTViMy4uZGIx
N2E3MDdkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3Vs
YXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYKICAgICBHZW5l
cmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqKTsKIAog
ICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21waWxl
UGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
LCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlvbl9HSkopOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5v
ZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQ
ZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGls
ZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBp
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNo
KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsK
ICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFu
Y2hOb2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVN
aXNjU3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9k
ZSopOwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
U3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGls
ZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlw
ZWRFZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNv
bXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91
YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21waWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0
R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAgICB2b2lk
IGVtaXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVudHlwZWRS
aWdodFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0
U2hpZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZVNoaWZ0T3AoTm9kZSopOwpAQCAtMTU3Miw2ICsxNTgxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNwZWN1bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZURv
dWJsZVJlcEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lmIFVTRShC
SUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZvaWQgc3Bl
Y3VsYXRlQW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICB2b2lk
IHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRn
ZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYyMSw4ICsx
NjM0LDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3Qo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAg
IHZvaWQgc3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVk
Z2UsIEdQUlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2
b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwg
SlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjAw
LDYgKzI2MTMsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9Owog
CisjaWYgVVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxh
dGVCaWdJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYgKGppdC0+
aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKworICAgIH5TcGVj
dWxhdGVCaWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZh
bGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZh
bGlkKTsKKyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIoZWRnZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZvaWQgdXNl
KCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJl
ZyBtX2dwck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAjZGVmaW5l
IERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5
cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3Vy
Y2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4OWNjOWVmM2ZlMy4uODg4YmQ1MDZjOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDE4Niw3ICs0MTg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAgICBERkdf
Q1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkgdXNlZCBp
biA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgSXNC
aWdJbnQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNCaWdJbnQg
aXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0cnVlIGlu
IDY0IGJpdCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGFjODhmZjgzMjA3Li5kNjg1NDFlZDlhMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4
LDcgKzEzOCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdl
KQogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3Vi
bGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9v
bGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0JpZ0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAg
ICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEo
Tm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAg
ICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNT
RVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAg
R1BSUmVnIGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcsNjcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUq
IG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihp
bnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRH
UFIsIHRha2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFy
ZzJHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0
d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAgICAgCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJn
MUdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFu
Y2hJZk51bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQ
Uik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNo
SWZOdW1iZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotICAgICAg
ICAKLSAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklU
Q29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAgIGp1bXAo
bm90VGFrZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nhc2UubGlu
aygmbV9qaXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICdp
bnZlcnQnIHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYgKGxlZnQg
aXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAg
ICAgICAgIGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1w
bGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmds
ZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQg
aWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8vIFRoZSB0
cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkg
dG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAor
ICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwg
YmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVz
IGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2Ny
YXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BS
LCByZXN1bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGln
aEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNsb3dQYXRo
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAgICAgICAg
IGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8g
bm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxpbmsoJm1f
aml0KTsKLSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAg
ICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIAorICAg
ICAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGgg
aWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmln
SW50MzIpCisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkg
aGF2ZSB0byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9y
IEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAgICAg
ICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9u
ZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdo
dCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAg
ICAgLy8gICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAgLy8gMi4g
U2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwg
cmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkK
KyAgICAgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2ls
bCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElmIGF0IGxl
YXN0IG9uZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAg
ICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVy
JyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIp
OworI2Vsc2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIp
OworI2VuZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2Vs
bChyZXN1bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4s
IEZvcmNlSnVtcCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAg
ICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6
Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChub3RU
YWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhv
bGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTogc29t
ZSBvZiB0aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZlUGVl
cGhvbGVTdHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAg
IEpTVmFsdWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVS
ZWdzIGFyZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BSID0g
YXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwpAQCAtNDI4LDMzICs0NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAg
ICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAg
IG1faml0Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOwor
ICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFs
c2UpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
IGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChy
ZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0
IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4g
cmVzdWx0OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNl
czsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElm
Q2VsbChyZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQu
YnJhbmNoSWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0subGlu
aygmbV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJ
ZkludDMyKGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk51bWJlcihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygmbV9q
aXQpOwotCi0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVh
bCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCBy
ZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
LQotICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwg
YXJnMlJlZ3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQg
aXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3Rl
YWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJh
bmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEg
SlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0
IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5v
dCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBz
ZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJl
c3VsdEdQUik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICBt
X2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3Vs
dEdQUik7CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGln
aEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJl
c3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9m
SGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBtX2pp
dC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklU
Q29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0IEJp
Z0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQg
aXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2UgZG9u
J3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlm
IGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBh
bmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNo
ZXMsIHdlIGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8gMS4g
KGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCBy
aWdodCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAw
IgorICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVm
dCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmln
aHQpIGlzIENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9w
IGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAgSWYg
YXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgor
ICAgIC8vICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhl
cicgdGFnIHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShC
SUdJTlQzMikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOwor
I2Vsc2UKKyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5k
aWYKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BS
KSk7CiAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVydCks
IHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7
CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywg
dGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9q
aXQpOwogCisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQUik7
CisKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwNCw2ICsxMDU5LDggQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVk
Z2UsIERhdGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAg
IGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50
MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFk
IGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMTg0LDYgKzEyNDEs
OCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkK
ICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0
KCkpIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGVzZSBjYXNlcyBsb29rIGxpa2UgdGhleSBj
b3VsZCBzaGFyZSBjb2RlLgorICAgIC8vIExvb2sgYXQgZmlsbFNwZWN1bGF0ZUludDMySW50ZXJu
YWwgZm9yIGFuIGV4YW1wbGUuCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewogICAgICAgICBH
UFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTIzNSw2ICsxMjk0LDggQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRh
Rm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNl
IERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0
OgpAQCAtMTMxMiw2ICsxMzczLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBj
YXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMy
OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBk
YXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMyMCw2ICsxMzgzLDEx
MyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRn
ZSkKICAgICB9CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAoU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOworICAg
IC8vIEkgaW5saW5lZCBzcGVjdWxhdGVIZWFwQmlnSW50IGJlY2F1c2UgaXQgd291bGQgYmUgaW5j
b3JyZWN0IHRvIGNhbGwgaXQgaGVyZSBpZiBpdCBkaWQgSlNWYWx1ZU9wZXJhbmQgLyBTcGVjdWxh
dGVYWFhPcGVyYW5kLAorICAgIC8vIGFzIGl0IHdvdWxkIGNvbmZ1c2UgdGhlIERGRyByZWdpc3Rl
ciBhbGxvY2F0b3IuCisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwodmFsdWVSZWdzLmdwcigpKSwgZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0lu
dCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KHZhbHVlUmVncy5ncHIoKSkpOworICAgIG5v
dENlbGwubGluaygmbV9qaXQpOworICAgIChTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQodGhpcywg
ZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSkuZ3ByKCk7Cit9CisKK0dQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sKKyAgICBBYnN0
cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFs
dWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgeworICAgICAgICBp
ZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Cisg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKKyAgICBjYXNl
IERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisg
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpz
VmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3By
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBBU1NF
UlQoanNWYWx1ZS5pc0JpZ0ludDMyKCkpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKSksIGdwcik7Cisg
ICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNC
aWdJbnQzMik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisKKyAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwor
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKKworICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBE
YXRhRm9ybWF0SlMpOworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUgdGhhdCBmb2xsb3dzIGNv
dWxkIG1heWJlIGJlIHNoYXJlZCB3aXRoIHRoZSBEYXRhRm9ybWF0SlMgY2FzZS4KKyAgICAgICAg
aWYgKHR5cGUgJiB+U3BlY0JpZ0ludDMyKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaElmTnVtYmVyKGdw
cikpOworICAgICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2pp
dC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7CisgICAg
ICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1
cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7
CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQor
CisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3By
KCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNC
aWdJbnQzMikgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAg
IEdQUlJlZyB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RCaWdJ
bnQzMktub3duTm90TnVtYmVyKGdwciwgdGVtcEdQUikpOworICAgICAgICAgICAgdW5sb2NrKHRl
bXBHUFIpOworICAgICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBn
cHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisK
KyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVh
bjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2Vs
bDoKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
KyAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgor
ICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJDb3Jy
dXB0IGRhdGEgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0K
K30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RTdHJpY3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQp
CiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG9iamVjdENoaWxkKTsKQEAg
LTE1NTYsNiArMTcyNiw1NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJ
bnQ1MkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSQogICAgIGp1bXAobm90
VGFrZW4pOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpZ0ludDMyQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgb3AxLCBvcDIpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAg
ICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFy
ZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigp
LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQudW5i
b3hCaWdJbnQzMih0ZW1wLmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlv
biwgcmVzdWx0LmdwcigpLCB0ZW1wLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIH0KKworICAg
IC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5n
cHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERh
dGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCaWdJbnQzMkJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21w
aWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgLy8gT3RoZXIgY29u
ZGl0aW9ucyB3b3VsZCByZXF1aXJlIHVuYm94aW5nIHRoZSBCaWdJbnQzMiB0byBnZXQgY29ycmVj
dCByZXN1bHRzIG9uIG5lZ2F0aXZlIG51bWJlcnMuCisgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCk7CisKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEo
KS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5i
cmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVj
dGlvbiB3aWxsIGJyYW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMg
bmV4dCwgc3dpdGNoIHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25k
aXRpb24gc28gd2UgY2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2Nr
KCkpIHsKKyAgICAgICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24p
OworICAgICAgICBCYXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RU
YWtlbjsKKyAgICAgICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQorCisgICAgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICBicmFuY2g2NChj
b25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtl
bik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNDA4Nyw2ICs0MzA2LDMxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBJc0JpZ0ludDogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZS5ncHIoKSk7CisKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYW5kNjQodmFsdWUu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxl
cjo6RXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udGludWF0aW9uID0gbV9q
aXQuanVtcCgpOworCisgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgICAgIG1faml0LmNv
bXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihIZWFwQmlnSW50VHlwZSksIHJlc3VsdEdQUik7CisKKyAgICAgICAgY29udGludWF0aW9uLmxp
bmsoJm1faml0KTsKKyAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjogewog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
CmluZGV4IDc1ZjNhMDZiMGZjLi42YTI1NGNlN2MyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0xMjUs
NyArMTI1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBj
YXNlIFZhbHVlQml0QW5kOgogICAgICAgICBjYXNlIFZhbHVlQml0WG9yOiB7Ci0gICAgICAgICAg
ICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAg
Ly8gRklYTUU6IHdlIHNob3VsZCBtYXliZSBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIG9uZSBvcGVy
YW5kIGlzIGFsd2F5cyBIZWFwQmlnSW50IGFuZCB0aGUgb3RoZXIgaXMgYWx3YXlzIEJpZ0ludDMy
PworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVz
ZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNv
bW11dGF0aXZpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNzUsNyAr
Mzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkK
KyAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8
fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlIHx8IG1fbm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21t
dXRhdGl2aXR5KCk7CiAKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5jcHAKaW5kZXggOGVmNzNiNmYyZTguLmFiNjMxYzljZGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDUsOCArMTQ1LDE0IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2VLaW5kIHVzZUtpbmQpCiAg
ICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIG91dC5wcmludCgiU3ltYm9sIik7CiAgICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJCaWdJbnQi
KTsKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJBbnlCaWdJbnQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgb3V0
LnByaW50KCJIZWFwQmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJpZ0ludDMy
VXNlOgorICAgICAgICBvdXQucHJpbnQoIkJpZ0ludDMyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAgICAgb3V0LnByaW50KCJTdHJpbmdPYmplY3Qi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKaW5kZXggOWMxM2M1YmNkMzUu
LmY0ZjdiMzNiYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY2LDcgKzY2LDkgQEAgZW51bSBVc2VLaW5kIHsKICAgICBLbm93blN0cmluZ1VzZSwKICAgICBL
bm93blByaW1pdGl2ZVVzZSwgLy8gVGhpcyBiaXphcnJlIHR5cGUgYXJpc2VzIGZvciBvcF9zdHJj
YXQsIHdoaWNoIGhhcyBhIGJ5dGVjb2RlIGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgb25seSBzZWUg
cHJpbWl0aXZlcyAoaS5lLiBub3Qgb2JqZWN0cykuCiAgICAgU3ltYm9sVXNlLAotICAgIEJpZ0lu
dFVzZSwKKyAgICBBbnlCaWdJbnRVc2UsCisgICAgSGVhcEJpZ0ludFVzZSwKKyAgICBCaWdJbnQz
MlVzZSwKICAgICBEYXRlT2JqZWN0VXNlLAogICAgIE1hcE9iamVjdFVzZSwKICAgICBTZXRPYmpl
Y3RVc2UsCkBAIC0xNTIsOCArMTU0LDEyIEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmls
dGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAgICAgcmV0dXJuIFNwZWNIZWFwVG9wICYgflNw
ZWNPYmplY3Q7CiAgICAgY2FzZSBTeW1ib2xVc2U6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9s
OwotICAgIGNhc2UgQmlnSW50VXNlOgorICAgIGNhc2UgQW55QmlnSW50VXNlOgogICAgICAgICBy
ZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHJldHVy
biBTcGVjSGVhcEJpZ0ludDsKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICByZXR1cm4g
U3BlY0JpZ0ludDMyOwogICAgIGNhc2UgUHJvbWlzZU9iamVjdFVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNQcm9taXNlT2JqZWN0OwogICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKQEAgLTIxMiwyNCAr
MjE4LDYgQEAgaW5saW5lIGJvb2wgbWF5SGF2ZVR5cGVDaGVjayhVc2VLaW5kIGtpbmQpCiAgICAg
cmV0dXJuICFzaG91bGROb3RIYXZlVHlwZUNoZWNrKGtpbmQpOwogfQogCi1pbmxpbmUgYm9vbCBp
c051bWVyaWNhbChVc2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2Fz
ZSBJbnQzMlVzZToKLSAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgY2FzZSBOdW1iZXJVc2U6
Ci0gICAgY2FzZSBSZWFsTnVtYmVyVXNlOgotICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgY2Fz
ZSBEb3VibGVSZXBVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgotICAgIGNhc2UgQW55
SW50VXNlOgotICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiBpbmxp
bmUgYm9vbCBpc0RvdWJsZShVc2VLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBA
IC0yNjEsNyArMjQ5LDcgQEAgaW5saW5lIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKICAgICBj
YXNlIFN0cmluZ1VzZToKICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgIGNhc2UgU3ltYm9s
VXNlOgotICAgIGNhc2UgQmlnSW50VXNlOgorICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICBj
YXNlIFN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgog
ICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBlMWY1ODlmMjczNC4uYjI1ZTc5Zjg0M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI2MSw2ICsy
NjEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2Ug
SXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoK
ICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC00ODQsNyAr
NDg1LDkgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAg
ICAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3Ry
aW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTeW1ib2xVc2U6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBBbnlC
aWdJbnRVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAg
ICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBEYXRlT2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTWFwT2JqZWN0VXNlOgogICAgICAgICAgICAgICAg
IGNhc2UgU2V0T2JqZWN0VXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21t
b25WYWx1ZXMuY3BwCmluZGV4IDViNDkyNWNmZmJjLi5jMGY0ZjJiMDY1YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcApAQCAtNTgsNiArNTgsOSBA
QCB2b2lkIENvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyhCMzo6UHJvY2VkdXJlJiBw
cm9jLCBCMzo6QmFzaWNCbG9jayogYmxvYwogICAgIGludFB0clRocmVlID0gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMyk7CiAgICAgaW50UHRyRWlnaHQg
PSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA4KTsKICAg
ICBkb3VibGVaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMC4pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBiaWdJbnQzMlplcm8gPSBibG9j
ay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKTsKKyNlbmRpZgogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAppbmRleCBjMWQ2ZDVhNTUxZC4u
MzFhMzkzMjkwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1
ZXMuaApAQCAtNTYsNyArNTYsMTAgQEAgcHVibGljOgogICAgIExWYWx1ZSBpbnRQdHJUaHJlZSB7
IG51bGxwdHIgfTsKICAgICBMVmFsdWUgaW50UHRyRWlnaHQgeyBudWxscHRyIH07CiAgICAgTFZh
bHVlIGRvdWJsZVplcm8geyBudWxscHRyIH07Ci0gICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IExWYWx1ZSBiaWdJbnQzMlplcm8geyBudWxscHRyIH07CisjZW5kaWYKKwogICAgIGNvbnN0IHVu
c2lnbmVkIHJhbmdlS2luZCB7IDAgfTsKICAgICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAg
fTsKICAgICBjb25zdCBMVmFsdWUgYnJhbmNoV2VpZ2h0cyB7IG51bGxwdHIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBiOWZkZWMwMzcx
Ny4uODg5YWEzMTg2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTEzNTYsNiArMTM1Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SXNOdW1iZXI6CiAgICAgICAgICAgICBjb21waWxlSXNOdW1iZXIoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgY29tcGlsZUlzQmlnSW50
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAg
ICAgICAgICAgICBjb21waWxlTnVtYmVySXNJbnRlZ2VyKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTIxMzksMTEgKzIxNDIsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hl
ZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRS
aWdodCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiBy
ZXN1bHQgPSBtX291dC5zcGVjdWxhdGVBZGQodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7Cisg
ICAgICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwg
bnVsbHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBi
b3hCaWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkSGVh
cEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0yMTYwLDExICsyMTgwLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChC
aWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94
ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVk
UmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSog
cmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRlU3ViKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOwor
ICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCks
IG51bGxwdHIsIG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0g
Ym94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uU3ViQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvblN1YkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjE4MSwxMSArMjIxOCwyOCBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBM
VmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisKKyAgICAgICAgICAg
IENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZU11bCh1bmJveGVkTGVmdCwgdW5i
b3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxv
dywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAgICAgICAgIExWYWx1ZSBi
b3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVl
KGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKElu
dDY0LCBvcGVyYXRpb25NdWxCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJh
dGlvbk11bEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjI4OSw3ICsyMzQzLDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
aWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSBy
ZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIElDIHlldC4K
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pT
VmFsdWUobm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSk7CiAKQEAgLTI1NTgsMTEgKzI2MjYs
MTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZURpdigpCiAgICAgewogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9y
IEJpZ0ludDMyIGhlcmUKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkRpdkJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25EaXZIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI2MzcsMTggKzI3
MDYsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZU1vZCgpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBhIEJpZ0ludDMy
IGZhc3QgcGF0aCBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBI
ZWFwQmlnSW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbk1vZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEFueUJpZ0ludFVzZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobV9u
b2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJh
dGlvblZhbHVlTW9kLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC0yODEzLDE3ICsyODg1LDIxIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVQb3coKQogICAgIHsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogbWF5YmUgYWRkIGEgZmFzdCBwYXRo
IGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dCaWdJbnQsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uUG93SGVhcEJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBBU1NFUlQobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVQ
b3csIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KQEAgLTMyMDQsOSArMzI4MCwyMyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0Tm90KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25CaXROb3RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIG9wZXJhbmQpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBv
cGVyYW5kID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBU
aGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlv
biBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0
cyBhcm91bmQuCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyVGFn
ID09IDB4MTIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMk1h
c2sgPT0gMHhmZmZlMDAwMDAwMDAwMDEyKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IG1hc2tGb3JC
aWdJbnQzMkJpdHMgPSAweDAwMDBmZmZmZmZmZjAwMDA7CisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQuYml0WG9yKG9wZXJhbmQsIG1fb3V0LmNvbnN0SW50NjQobWFza0ZvckJpZ0lu
dDMyQml0cykpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJh
bmQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKICAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzIyNCwx
MSArMzMxNCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0QW5kKCkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgLy8gTm8gbmVlZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVj
dGVkIGJ5IGJpdEFuZAorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdEFuZChs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRB
bmRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0
QW5kSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwog
ICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0zMjQ0LDExICszMzQ2LDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxl
VmFsdWVCaXRPcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JC
aWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNpbmNlIHRoZSB0YWdn
aW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSBtX291dC5iaXRPcihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25C
aXRPckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzI2NCwxMSArMzM3OCwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZVZhbHVlQml0WG9yKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRY
b3JCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHRNaXNzaW5nVGFnID0gbV9vdXQu
Yml0WG9yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5i
aXRPcihyZXN1bHRNaXNzaW5nVGFnLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMy
VGFnKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyODQsMTEg
KzM0MTAsMjkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFJTaGlmdCgpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBkbyBzb21ldGhpbmcgc21hcnRlciBoZXJlCisgICAgICAgICAgICAvLyBUaGluZ3MgYXJlIGEg
Yml0IHRyaWNreSBiZWNhdXNlIGEgcmlnaHQtc2hpZnQgYnkgYSBuZWdhdGl2ZSBudW1iZXIgaXMg
YSBsZWZ0LXNoaWZ0IGZvciBCaWdJbnRzLgorICAgICAgICAgICAgLy8gU28gZXZlbiBhIHJpZ2h0
IHNoaWZ0IGNhbiBvdmVyZmxvdy4KKworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJp
dFJTaGlmdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMzMwMCwyNCArMzQ0NCwyNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgc2V0SW50MzIobV9vdXQuYVNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQy
KCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChs
b3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJ
WE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1
ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlQXJpdGhCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9vdXQu
c2hsKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAg
ICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50
MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsg
dGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGlj
cyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdExT
aGlmdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIC8vIEZJWE1F
OiBjb25zaWRlciBhZGRpbmcgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUuCisgICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzM0LDcgKzM0NzksNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxTaHIoCiAgICAgICAgICAg
ICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChs
b3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAg
ICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNv
bnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQg
aXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIz
CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKCkKQEAgLTczNzIs
NiArNzUxNyw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoYWJzdHJhY3RWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiAoU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0Jp
Z0ludCkpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlciA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Qmln
SW50MzIgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBpc0NlbGxQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC03MzgxLDEwICs3NTI5LDE0IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIC8vIG5vdE51bWJlciBjYXNlLgogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3ROdW1iZXIsIGNvbnRpbnVhdGlv
bik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50
MzIodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0
aW9uKSwgdW5zdXJlKG5vdEJpZ0ludDMyKSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhu
b3RCaWdJbnQzMik7CisjZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsUGF0aCksIHVu
c3VyZShzbG93UGF0aCkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxQYXRo
KTsKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZSht
X25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgp
KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQ
YXRoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
KTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgc2V2ZXJhbCBhdHRlbXB0cyB0byByZW1vdmUgVG9O
dW1lcmljLiBCdXQgVG9OdW1lcmljIHN0aWxsIGV4aXN0cy4KQEAgLTg0NDMsNyArODU5NSwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVh
blVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkK
ICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKQot
ICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgeworICAg
ICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAg
ICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAgICAgICAgICB8
fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgfHwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgY29t
cGlsZUNvbXBhcmVTdHJpY3RFcSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC04NDg2LDcgKzg2NDEsOTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5lcXVh
bChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHNpbmNlIHRoZSB0YWcg
Yml0cyBhcmUgdGhlIHNhbWUgb24gYm90aCBzaWRlcworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4ocmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IHdlIGNhbm5vdCBzdGFydCB3aXRoIGlmIChsZWZ0ID09IHJpZ2h0KSwgYmVjYXVzZSB3ZSBt
dXN0IGluc2VydCB0aGUgcmlnaHQgY2hlY2tzIChzZWUgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
IGFib3ZlKQorICAgICAgICAgICAgLy8gVGhlIGNvZGUgdGhhdCB3ZSBnZW5lcmF0ZSBsb29rcyBs
aWtlIHRoZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAgICAgICAgICAvKgorICAgICAgICAg
ICAgIGlmIChpc0JpZ0ludDMyKGxlZnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQmlnSW50
MzIocmlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodDsKKyAg
ICAgICAgICAgICAgICBDSEVDSyhpc0hlYXBCaWdJbnQocmlnaHQpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2FsbChKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihyaWdodCwgdW5ib3hlZChsZWZ0
KSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChsZWZ0
KSkKKyAgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIobGVmdCwgdW5ib3hlZChy
aWdodCkpOworICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAg
ICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVhbHMobGVmdCwgcmlnaHQpKTsKKyAgICAg
ICAgICAgICovCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNCaWdJbnQzMiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBib3RoQXJlQmlnSW50MzIgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgb25seUxlZnRJc0JpZ0lu
dDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc05v
dEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxl
ZnRFcXVhbHNSaWdodCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBsZWZ0SXNIZWFwQmlnSW50ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIHJpZ2h0SXNCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayByaWdodElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQmlnSW50MzIobGVmdCwgcHJvdmVuVHlwZShtX25vZGUt
PmNoaWxkMSgpKSksIHVuc3VyZShsZWZ0SXNCaWdJbnQzMiksIHVuc3VyZShsZWZ0SXNOb3RCaWdJ
bnQzMikpOworCisgICAgICAgICAgICAvLyBGSVhNRTogc2V0IHRoZSBvcmRlciBvZiB0aGUgYmxv
Y2tzIHRvIG1heGltaXplIGZhbGx0aHJvdWdoCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhs
ZWZ0SXNCaWdJbnQzMik7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdo
dCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShib3RoQXJlQmlnSW50MzIp
LCB1bnN1cmUob25seUxlZnRJc0JpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGJvdGhBcmVCaWdJbnQzMik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRC
b3RoQXJlQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8ob25seUxlZnRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhl
YXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgcmVzdWx0TGVmdElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQu
bm90TnVsbCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0lu
dFRvSW50MzIsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHJpZ2h0LCB1bmJveGVkTGVmdCkp
KTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0LCByaWdodCksIHVuc3VyZShsZWZ0RXF1
YWxzUmlnaHQpLCB1bnN1cmUobGVmdElzSGVhcEJpZ0ludCkpOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhsZWZ0RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
cmVzdWx0TGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obGVmdElzSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNCaWdJbnQzMihyaWdodCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShy
aWdodElzQmlnSW50MzIpLCB1bnN1cmUocmlnaHRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNCaWdJbnQzMik7CisgICAgICAgICAgICBMVmFsdWUg
dW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7CisgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayByZXN1bHRSaWdodElzQmlnSW50MzIgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVs
bCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZUVxSGVhcEJpZ0ludFRvSW50
MzIsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHVuYm94ZWRSaWdodCkpKTsKKyAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8ocmlnaHRJc05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnRVbmtub3duV2hldGhlckNlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAv
LyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBz
dHJpY3QgZXF1YWxzIGZvciBiaWcgaW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgcmVzdWx0Qm90aEhlYXBCaWdJbnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uKTsK
KyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCByZXN1bHRCb3RoQXJlQmln
SW50MzIsIHJlc3VsdExlZnRJc0JpZ0ludDMyLCByZXN1bHRMZWZ0RXF1YWxzUmlnaHQsIHJlc3Vs
dFJpZ2h0SXNCaWdJbnQzMiwgcmVzdWx0Qm90aEhlYXBCaWdJbnQpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKSB7CiAgICAgICAgICAgICBJbnQ1
MktpbmQga2luZDsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIo
bV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CkBAIC04NTY5LDExICs4ODExLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogW0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3Qg
ZXF1YWxzIGZvciBCaWdJbnRVc2UKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50
XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcgaW50
cwogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjg5NQotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVh
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTg2NTksNiArODkwMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2Ug
Y2FuIGRvIHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIgaGVyZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2
ZUpJVCBhcHByb2FjaCBpbiBlLmcuIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlU3RyaWN0RXEKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwg
bV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkpOwogICAgICAgICBub25TcGVjdWxhdGl2ZUNvbXBh
cmUoCiAgICAgICAgICAgICBbJl0gKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsKQEAgLTEw
NjIyLDcgKzEwODY1LDM2IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwg
dHJ1ZVJlc3VsdCwgZmFsc2VSZXN1bHQsIHBhdGNocG9pbnRSZXN1bHQpKTsKICAgICB9Ci0gICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsK
KyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKwor
ICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSks
IHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKworICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90Q2VsbENhc2UsIGlzQ2Vs
bENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKGlzQmlnSW50MzIodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGlzQ2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxS
ZXN1bHQgPSBtX291dC5hbmNob3IoaXNDZWxsV2l0aFR5cGUodmFsdWUsIG1fbm9kZS0+cXVlcmll
ZFR5cGUoKSwgbV9ub2RlLT5zcGVjdWxhdGVkVHlwZUZvclF1ZXJ5KCksIHByb3ZlblR5cGUobV9u
b2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2VsbFJlc3VsdCwgY2VsbFJlc3VsdCkpOwor
ICAgIH0KKyNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCisgICAgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBBTFdBWVNfSU5MSU5FIHZvaWQgY29tcGlsZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAg
IC8vIElmIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIEJpZ0ludDMyLCB3ZSBzaG91bGQganVzdCBl
bWl0IElzQ2VsbFdpdGhUeXBlKEhlYXBCaWdJbnQpIGluc3RlYWQuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorI2VuZGlmCiAgICAgdm9pZCBjb21waWxlSXND
ZWxsV2l0aFR5cGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpIHsKQEAgLTE0MzQ2LDkgKzE0NjE4LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBlbWl0QmluYXJ5U25pcHBldChKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5j
dGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIAotICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBzcGVj
dWxhdGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUo
bm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAKICAgICAgICAgU25p
cHBldE9wZXJhbmQgbGVmdE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5y
ZXN1bHRUeXBlKCkpOwogICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwpAQCAtMTQ0MTQsOCArMTQ2
ODgsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIAotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBTbmlw
cGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJl
c3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNTAyNyw3ICsxNTMw
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEltcGxlbWVudHMg
dGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgICAgICAgICAgLy8gaWYg
KHZhbHVlIGlzIGNlbGwpIHsKLSAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAgICAgICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3Ry
aW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgICAgICAgICAvLyAgICAgICAgIHJlc3Vs
dCA9ICEhdmFsdWUtPmxlbmd0aAogICAgICAgICAgICAgLy8gICAgIGVsc2UgewogICAgICAgICAg
ICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVk
CkBAIC0xNTAzNyw2ICsxNTMxNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyAgICAgcmVz
dWx0ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1
ZSBpcyBudW1iZXIpIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91Ymxl
KHZhbHVlKQorICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgewor
ICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICh2YWx1ZSAhPSBCaWdJbnQzMlRhZykKICAgICAg
ICAgICAgIC8vIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0g
anNUcnVlCiAgICAgICAgICAgICAvLyB9CkBAIC0xNTA0NCwxMyArMTUzMjMsMTcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ0Nhc2UgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
LSAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ09yQmlnSW50Q2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBoZWFwQmlnSW50Q2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmdOb3JIZWFwQmln
SW50Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RD
ZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbnQz
MkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SW50
MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGRvdWJs
ZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90RG91
YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgYmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5k
aWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaz4gcmVz
dWx0czsKQEAgLTE1MDY0LDIwICsxNTM0NywyMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBzdHJpbmdDYXNlKTsKICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwg
cHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKLSAgICAgICAgICAg
ICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShub3RTdHJpbmdPckJpZ0ludENhc2UpKTsK
KyAgICAgICAgICAgICAgICBpc0hlYXBCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiAo
U3BlY0NlbGwgLSBTcGVjU3RyaW5nKSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGhlYXBCaWdJ
bnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKSk7CiAKLSAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgaGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCB3ZWFrUG9p
bnRlcihqc0VtcHR5U3RyaW5nKG1fZ3JhcGgubV92bSkpKSkpOwogICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnRD
YXNlLCBub3RTdHJpbmdPckJpZ0ludENhc2UpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aGVhcEJpZ0ludENhc2UsIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlKTsKICAgICAgICAgICAg
IExWYWx1ZSBub25aZXJvQmlnSW50ID0gbV9vdXQubm90WmVybzMyKAogICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHZhbHVlLCBtX2hlYXBzLkpTQmlnSW50X2xlbmd0aCkp
OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5vblplcm9CaWdJbnQp
KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nT3JCaWdJbnRDYXNlLCBub3RDZWxs
Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdOb3JIZWFwQmlnSW50
Q2FzZSwgbm90Q2VsbENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGlzVHJ1dGh5T2JqZWN0Owog
ICAgICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCkpCiAgICAgICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ib29sZWFuVHJ1
ZTsKQEAgLTE1MTIwLDggKzE1NDAzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5i
b3hEb3VibGUodmFsdWUpLCBtX291dC5jb25zdERvdWJsZSgwKSk7CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3IoZG91YmxlSXNUcnV0aHkpKTsKICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVu
VHlwZShlZGdlKSAmIH5TcGVjQ2VsbCksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJpZ0ludDMy
Q2FzZSksIHVuc3VyZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oYmlnSW50MzJDYXNlLCBub3RCaWdJbnQzMkNhc2UpOworICAgICAgICAgICAgTFZhbHVl
IGJpZ0ludDMyTm90WmVybyA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0
KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoYmlnSW50MzJOb3RaZXJvKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJp
Z0ludDMyQ2FzZSwgY29udGludWF0aW9uKTsKKyNlbHNlCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhub3REb3VibGVDYXNlLCBjb250aW51YXRpb24pOworI2VuZGlmCiAgICAgICAgICAgICBM
VmFsdWUgbWlzY0lzVHJ1dGh5ID0gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgdmFsdWUs
IG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKTsKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtaXNjSXNUcnV0aHkpKTsKQEAg
LTE1NzI2LDEzICsxNjAyMywxNSBAQCBwcml2YXRlOgogICAgICAgICAvLyAgICAgICAgIH0KICAg
ICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAg
cmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAg
ICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAg
ICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAg
ICAgICAgcmV0dXJuIHN5bWJvbAogICAgICAgICAvLyAgICAgfQogICAgICAgICAvLyB9IGVsc2Ug
aWYgKGlzIG51bWJlcikgewogICAgICAgICAvLyAgICAgcmV0dXJuIG51bWJlcgorICAgICAgICAv
LyB9IGVsc2UgaWYgKGlzIGJpZ2ludDMyKSB7CisgICAgICAgIC8vICAgICByZXR1cm4gYmlnaW50
CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVsbCkgewogICAgICAgICAvLyAgICAgcmV0dXJu
IG9iamVjdAogICAgICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKQEAgLTE1NzYwLDYg
KzE2MDU5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVyQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJ
bnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworI2VuZGlmCiAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdE51bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYm9v
bGVhbkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayB1bmRlZmlu
ZWRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTE1ODEyLDcgKzE2MTE0LDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdDYXNlLCBiaWdJbnRDYXNlKTsK
ICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNCaWdJbnQodmFsdWUsIHByb3Zl
blR5cGUoY2hpbGQpICYgKFNwZWNDZWxsIC0gU3BlY09iamVjdCAtIFNwZWNTdHJpbmcpKSwKKyAg
ICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0Nl
bGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAogICAgICAgICAgICAgdW5zdXJlKGJpZ0lu
dENhc2UpLCB1bnN1cmUoc3ltYm9sQ2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJp
Z0ludENhc2UsIHN5bWJvbENhc2UpOwpAQCAtMTU4MjgsOCArMTYxMzAsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIG5vdE51bWJlckNh
c2UpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok51bWJlcik7Ci0gICAgICAgIAorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdW1iZXJDYXNlLCBu
b3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwg
cHJvdmVuVHlwZShjaGlsZCkgJiB+U3BlY0NlbGwpLCB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3Vy
ZShub3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RCaWdJbnQz
MkNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51
bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKKyNlbmRpZgogICAgICAgICBMVmFsdWUgaXNOdWxsOwog
ICAgICAgICBpZiAocHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT3RoZXIpCiAgICAgICAgICAgICBp
c051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1
ZU51bGwpKTsKQEAgLTE2NTI3LDE1ICsxNjgzNiwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBsb3dCaWdJbnQoRWRnZSBlZGdlLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisg
ICAgTFZhbHVlIGxvd0hlYXBCaWdJbnQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2Uu
dXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSGVhcEJp
Z0ludFVzZSk7CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvd0NlbGwoZWRnZSwgbW9kZSk7
Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCByZXN1bHQpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGVkZ2UsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBsb3dCaWdJbnQzMihFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpOwor
CisgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNL
KGpzVmFsdWVWYWx1ZShyZXN1bHQpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50MzIo
cmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQorICAgICAgICAgICAgdGVy
bWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmJpZ0ludDMyWmVybzsK
KyAgICB9CisjZW5kaWYKKwogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2UgZWRnZSwg
T3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9u
KQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpAQCAtMTY3MjEs
NyArMTcwNDgsNzIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5hZGQo
bV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX251bWJlclRhZyk7CiAgICAgfQotICAgIAor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIExWYWx1ZSBpc0JpZ0ludDMyKExWYWx1ZSBqc1ZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0JpZ0ludDMyKSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47CisgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAg
ICAgICAgIG1fb3V0LmJpdEFuZChqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJp
Z0ludDMyTWFzaykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJ
bnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RCaWdJbnQzMihMVmFsdWUganNWYWx1
ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50MzIpKQorICAg
ICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAor
ICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSB1bmJveEJpZ0ludDMyKExWYWx1ZSBq
c1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LmxT
aHIoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpKTsKKyAgICB9CisgICAgTFZhbHVlIGJv
eEJpZ0ludDMyKExWYWx1ZSBpbnQzMlZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LmJpdE9yKAorICAgICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW50MzJWYWx1ZSwg
QjM6OkludDY0KSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpLAorICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyAgICBMVmFsdWUgaXNOb3RB
bnlCaWdJbnQoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRv
cCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBl
LCB+U3BlY0JpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworCisgICAgICAgIC8v
IGlmIChpc0JpZ0ludDMyKQorICAgICAgICAvLyAgIHJldHVybiBmYWxzZQorICAgICAgICAvLyBp
ZiAoIWlzQ2VsbCkKKyAgICAgICAgLy8gICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gcmV0dXJu
ICFpc0hlYXBCaWdJbnQKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNCaWdJbnQzMkNhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEJpZ0ludDMyQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdENlbGxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihqc1ZhbHVlLCB0eXBlKSwg
dW5zdXJlKGlzQmlnSW50MzJDYXNlKSwgdW5zdXJlKGlzTm90QmlnSW50MzJDYXNlKSk7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaXNCaWdJbnQzMkNhc2UpOworICAgICAgICBWYWx1ZUZyb21C
bG9jayByZXR1cm5GYWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNOb3RCaWdJbnQzMkNhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUs
IHR5cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHJldHVyblRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXND
ZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybklzTm90SGVhcEJpZ0ludCA9
IG1fb3V0LmFuY2hvcihpc05vdEhlYXBCaWdJbnQoanNWYWx1ZSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRy
dWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVu
ID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTcw
MzMsOCArMTc0MjUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAg
ICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsK
KyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKyAgICAgICAgY2Fz
ZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAg
ICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3MjIwLDE4ICsxNzYyMCwz
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0
cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUg
Y2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05v
dEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9
IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0JpZ0ludCkpCisgICAgICAgIGlm
IChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0hlYXBCaWdJbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBkZWZhdWx0VG9G
YWxzZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5i
cmFuY2goaXNDZWxsKHZhbHVlLCB0eXBlKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1bnN1cmUoY29u
dGludWF0aW9uKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc0NlbGxDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBy
ZXR1cm5Gb3JDZWxsID0gbV9vdXQuYW5jaG9yKGlzSGVhcEJpZ0ludCh2YWx1ZSwgdHlwZSkpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5waGkoSW50MzIsIGRlZmF1bHRUb0ZhbHNlLCByZXR1cm5Gb3JDZWxsKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNOb3RIZWFwQmlnSW50KExWYWx1ZSBj
ZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0hl
YXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1f
b3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5iaWdJ
bnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUgaXNCaWdJbnQoTFZhbHVl
IGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNI
ZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAm
IFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAg
cmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAg
bV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3Njg5
LDE2ICsxODEwOSwzNSBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwg
bG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBl
ZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdl
LCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJpZ0ludChjZWxsKSk7Cisg
ICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiAgICAgewotICAg
ICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQs
IGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBs
b3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVk
Z2UpCisgICAgdm9pZCBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKEVkZ2Ug
ZWRnZSkKICAgICB7Ci0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2Up
KTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLCBTcGVjSGVhcEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxs
KHZhbHVlKSk7CiAgICAgfQogCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRl
QmlnSW50MzIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNW
YWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBGVExfVFlQRV9D
SEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQmlnSW50MzIsIGlzTm90QmlnSW50
MzIodmFsdWUpKTsKKyAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZUFueUJpZ0ludChFZGdlIGVk
Z2UpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1
ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QW55QmlnSW50KHZhbHVlKSk7CisgICAg
fQorI2VuZGlmCisKICAgICB2b2lkIHNwZWN1bGF0ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBM
VmFsdWUgY2VsbCkKICAgICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShj
ZWxsKSwgZWRnZSwgU3BlY09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IGQzNzIyNzdm
YzA2Li4zYzkxMzdlZjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0
JiBleGl0CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFs
dWVQcm9maWxlKQotICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSk7CisgICAg
ICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVl
KGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAg
fQogCiAgICAgLy8gTWF0ZXJpYWxpemUgYWxsIG9iamVjdHMuIERvbid0IG1hdGVyaWFsaXplIGFu
IG9iamVjdCB1bnRpbCBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggYWIzZTljNjI5YWQuLjI1ODllMmNmYzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtNDIyLDcgKzQyMiw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1
bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAgICAg
dm9pZCogd3JhcHBlZEFkZHJlc3MgPSAwOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0g
MDsKLSAgICAgICAgaWYgKCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNC
aWdJbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUuY2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5j
ZWxsLT5pc0hlYXBCaWdJbnQoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBub2RlLmNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8
fCAhc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgICAgICBmbGFncyB8PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9kZUZsYWdzOjpJbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCmluZGV4IDk5ZmE0MGViYjQ0
Li5mMjdlZWY0YjQyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2tJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0jaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJT
YW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCmluZGV4IDZjYmFlYzE2NDQzLi4wMzI0NjlmZTY5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJc29D
ZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4
MTMzMmQyMTA5MS4uNjFmMmU3NjVmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAt
MTg3LDggKzE4Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICB9CiAKICAgICAvLyBC
aWdJbnQgcHJldmlldy4KLSAgICBpZiAoY2VsbC0+aXNCaWdJbnQoKSkgewotICAgICAgICByZXN1
bHRTdHJpbmcgPSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0JpZ0ludChjZWxsKSwgMTAp
OworICAgIGlmIChjZWxsLT5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICByZXN1bHRTdHJpbmcg
PSBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBhc0hlYXBCaWdJbnQoY2VsbCksIDEwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYzRkOWM3MjdlMDcuLmFkNGIyMTVjNTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdAogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAgICAgY2FzZSBTeW1ib2xUeXBlOgotICAgIGNh
c2UgQmlnSW50VHlwZToKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgogICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBh
cmFtZXRlckVycm9yKGdsb2JhbE9iamVjdCwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKaW5kZXggZTMwOWVjZmM1NTEuLmM4OWY2ODVmZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC02ODgsNyArNjg4LDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmUKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcg
Y29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
IC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAg
ICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8v
ICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAt
Njk4LDYgKzY5OCw4IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9C
b29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJl
cikgewogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZh
bHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAgLTcwNiw3ICs3MDgsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZQogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsK
ICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsK
LSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsK
KyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewog
ICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNzI5LDcgKzczMSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlCiAgICAgY29tcGFyZVB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5w
YXlsb2FkR1BSKCksIHJlc3VsdCwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwog
Ci0gICAgaXNCaWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsK
ICAgICBsb2FkMzIoQWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRP
Zkxlbmd0aCgpKSwgcmVzdWx0KTsKICAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CiAgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKQEAgLTc1Miw2ICs3NTQsMTUgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRD
b252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAg
ICBkb25lLmFwcGVuZChqdW1wKCkpOwogCiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50
MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICBtb3ZlKHZhbHVlLmdw
cigpLCByZXN1bHQpOworICAgIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOwor
ICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0KTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RC
aWdJbnQzMi5saW5rKHRoaXMpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQpA
QCAtNzY3LDcgKzc3OCw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiB7CiAgICAgLy8gSW1w
bGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYg
KHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1
ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMg
SGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAg
IC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVy
YWRlcy1hcy11bmRlZmluZWQKQEAgLTc3Nyw2ICs3ODgsOCBAQCBBc3NlbWJseUhlbHBlcnM6Okp1
bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdz
IHZhbAogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERv
dWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAg
Ly8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2Ugewog
ICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03ODYsNyAr
Nzk5LDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5n
KHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50
KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhl
YXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTgxNyw3ICs4MzAs
NyBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZW
YWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoUHRy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgVHJ1c3RlZElt
bVB0cihqc0VtcHR5U3RyaW5nKHZtKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCi0g
ICAgaXNCaWdJbnQubGluayh0aGlzKTsKKyAgICBpc0hlYXBCaWdJbnQubGluayh0aGlzKTsKICAg
ICB0cnV0aHkuYXBwZW5kKGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgQWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQmlnSW50OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwog
ICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTg0Miw2ICs4NTUsMTUgQEAgQXNzZW1ibHlI
ZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBK
U1ZhbHVlUmVncyB2YWwKICAgICB9CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgYXV0byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQz
Mktub3duTm90TnVtYmVyKHZhbHVlLmdwcigpLCBzY3JhdGNoKTsKKyAgICBtb3ZlKHZhbHVlLmdw
cigpLCBzY3JhdGNoKTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc2NyYXRjaCk7
CisgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8s
IHNjcmF0Y2gpKTsKKyAgICBkb25lLmFwcGVuZChqdW1wKCkpOworCisgICAgaXNOb3RCaWdJbnQz
Mi5saW5rKHRoaXMpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwg
dmFsdWUuZ3ByKCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUp
KSkpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAppbmRleCAzZDdlZjdjNzcyNy4uNTEwMTQ5NTgyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyOSw3ICs5MjksMzcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCb29sZWFuKHJlZ3MudGFnR1BSKCksIHRlbXBHUFIp
OwogI2VuZGlmCiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEp1bXAgYnJh
bmNoSWZCaWdJbnQzMihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9k
ZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKKyAgICB7CisgICAgICAgIEp1bXAgbnVtYmVyID0g
YnJhbmNoSWZOdW1iZXIoZ3ByLCBtb2RlKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5j
aElmQmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICBudW1iZXIu
bGluayh0aGlzKTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BS
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVh
bCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQor
ICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJl
Z3MsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qmln
SW50MzJLbm93bk5vdE51bWJlcihyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVt
cCBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRl
bXBHUFIpCisgICAgeworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsK
KyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0
KE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsK
KyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0
aGVzZSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJl
IGEgY2VsbC4KICAgICBKdW1wIGJyYW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDgoCkBAIC05NTEsMTMgKzk4MSwxNCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9
Ci0gICAgCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhh
dCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNo
SWZTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBT
dHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1
bXAgYnJhbmNoSWZTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShj
ZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVn
IGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsg
fQotICAgIEp1bXAgYnJhbmNoSWZCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmVHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJ
bnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJ
bnRUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7
IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAgSnVt
cCBicmFuY2hJZk5vdEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVu
Y3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1
bmN0aW9uVHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0K
ICAgICAKQEAgLTEzNTYsNiArMTM4NywxOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBk
b25lLmxpbmsodGhpcyk7CiAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgdm9pZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgewor
ICAgICAgICB1cnNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsK
KyAgICB9CisKKyAgICB2b2lkIGJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAg
ICBsc2hpZnQ2NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAg
ICBvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQog
I2VuZGlmCiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTcxNSw3ICsxNzU5LDcgQEAgcHVi
bGljOgogICAgICAgICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMg
c3RyaW5nKSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAg
ICAgfSBlbHNlIGlmIChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMg
aGVhcGJpZ2ludCkgewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAg
Ly8gICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcy
Niw2ICsxNzcwLDggQEAgcHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAg
ICAgICAvLyB9IGVsc2UgaWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBi
b29sZWFuCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8g
ICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJl
dHVybiB1bmRlZmluZWQKICAgICAgICAgLy8gfQpAQCAtMTc1NywxMCArMTgwMywxMCBAQCBwdWJs
aWM6CiAKICAgICAgICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RC
aWdJbnQgPSBicmFuY2hJZk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFw
QmlnSW50ID0gYnJhbmNoSWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9y
KFR5cGVvZlR5cGU6OkJpZ0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRo
aXMpOworICAgICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3Io
VHlwZW9mVHlwZTo6U3ltYm9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxp
bmsodGhpcyk7CkBAIC0xNzc2LDYgKzE4MjIsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5v
dEJvb2xlYW4gPSBicmFuY2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1
bmN0b3IoVHlwZW9mVHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxp
bmsodGhpcyk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIEp1bXAgbm90QmlnSW50MzIg
PSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAg
ICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBmYWxzZSk7CisgICAgICAgIG5vdEJpZ0lu
dDMyLmxpbmsodGhpcyk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGZ1bmN0b3IoVHlwZW9m
VHlwZTo6VW5kZWZpbmVkLCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggYzZlNjFiODliZjkuLmQ1ZWE5OWYzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0zNzAsNiArMzcwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfdW5kZWZpbmVkX29yX251bGwpCiAgICAgICAgIERF
RklORV9PUChvcF9pc19ib29sZWFuKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfbnVtYmVyKQor
ICAgICAgICBERUZJTkVfT1Aob3BfaXNfYmlnX2ludCkKICAgICAgICAgREVGSU5FX09QKG9wX2lz
X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2NlbGxfd2l0aF90eXBlKQogICAgICAg
ICBERUZJTkVfT1Aob3BfamVxX251bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MDcz
NTVjNmQ3MS4uZDA0M2ZjZWIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI4LDYg
KzUyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZp
bmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lz
X2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251
bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2lu
dChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlw
ZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwCmluZGV4IDc3ODY3M2UxOGFjLi42N2IwMGIwYTAwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NzYsNiArNDc2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsK
ICAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQ
cm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlv
biwgbmVnYXRlSUMpOworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0
aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmln
SW50CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KTsKIH0KIApAQCAtNDg0LDYgKzQ4NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IGJpdHdpc2Vf
Y2FzdDxKSVROZWdJQyo+KG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5nZXQoY3VycmVudEluc3RydWN0
aW9uKSk7CisgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9w
ZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAg
ICBlbWl0TWF0aElDU2xvdzxPcE5lZ2F0ZT4obmVnSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3Bl
cmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVBy
b2ZpbGVkLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZmM5NGNhMzcyNDkuLmNlYjYwMGU3ZjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxw
YXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4Myw2ICsyODMsMzcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCisjaWYgVVNF
KEJJR0lOVDMyKQordm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3Bl
cmFuZDsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICBK
dW1wIGlzQ2VsbCA9IGJyYW5jaElmQ2VsbChyZWdUMCk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spLCByZWdUMSk7CisgICAgYW5kNjQocmVnVDEsIHJlZ1Qw
KTsKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qmln
SW50MzJUYWcpLCByZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisKKyAgICBpc0NlbGwubGluayh0aGlz
KTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihIZWFwQmlnSW50VHlwZSksIHJlZ1QwKTsKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworCisgICAgZG9uZS5saW5r
KHRoaXMpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKyNlbHNlIC8vIGlm
ICFVU0UoQklHSU5UMzIpCitOT19SRVRVUk4gdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChj
b25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgLy8gSWYgd2Ugb25seSBoYXZlIEhlYXBCaWdJbnRz
LCB0aGVuIHdlIGVtaXQgaXNDZWxsV2l0aFR5cGUgaW5zdGVhZCBvZiBpc0JpZ0ludC4KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorI2VuZGlmCisKIHZvaWQgSklUOjplbWl0
X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0Nl
bGxXaXRoVHlwZT4oKTsKQEAgLTU3MCwxMiArNjAxLDUzIEBAIHZvaWQgSklUOjpjb21waWxlT3BT
dHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BT
dHJpCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7Ci0gICAgCisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWlu
ZyAndHlwZScgdG8gYmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQg
PT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAo
bGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7Cisg
ICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworICAgICovCisKKyAgICAvLyBUaGlzIGZyYWdt
ZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGgg
YSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJl
cXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRo
ZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8
NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQg
MAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBi
ZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92
ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShyZWdU
MSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJp
dHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdUNSwg
cmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9yNjQo
cmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJl
Z1QzLCByZWdUNSkpOworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgcmVnVDEsIHJlZ1Q1
KTsKKyAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDUpOworCisgICAg
bW92ZShyZWdUMCwgcmVnVDIpOworICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMg
YSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwg
cmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNl
OiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93
IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChy
ZWdUMikpOworCisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIGlmICh0eXBlID09IENvbXBpbGVP
cFN0cmljdEVxVHlwZTo6TlN0cmljdEVxKQorICAgICAgICB4b3I2NChUcnVzdGVkSW1tNjQoMSks
IHJlZ1Q1KTsKKyAgICBib3hCb29sZWFuKHJlZ1Q1LCBKU1ZhbHVlUmVncyB7IHJlZ1Q1IH0pOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUNSk7CisjZWxzZSAvLyBpZiAhVVNF
KEJJR0lOVDMyKQogICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIg
c3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1Qy
KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKLSAgICAKKwogICAgIC8v
IEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBp
bnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CiAgICAgLy8gaWYgaXQncyBhIGRv
dWJsZS4KICAgICBKdW1wIGxlZnRPSyA9IGJyYW5jaElmSW50MzIocmVnVDApOwpAQCAtNTkyLDYg
KzY2NCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpCiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
KTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjE0LDYgKzY4Nyw0NSBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIENvbXBpbGVPcAogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAs
IHNyYzIsIHJlZ1QxKTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICAvKiBBdCBhIGhpZ2ggbGV2
ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQg
aXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgIGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMg
Q2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBu
b3RUYWtlbjsKKyAgICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0
IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0
ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJy
YW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBh
IEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBp
dCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBu
b3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQg
c2V0CisgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisg
ICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOworICAgIGFk
ZDY0KHJlZ1Q1LCByZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBsc2hpZnQ2
NChUcnVzdGVkSW1tMzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsKKworICAg
IEp1bXAgYXJlRXF1YWwgPSBicmFuY2g2NChFcXVhbCwgcmVnVDAsIHJlZ1QxKTsKKyAgICBpZiAo
dHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQorICAgICAgICBhZGRKdW1w
KGFyZUVxdWFsLCB0YXJnZXQpOworCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIC8vIEp1
bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBC
aWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3Vs
ZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwg
d2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOworCisgICAgaWYgKHR5cGUgPT0gQ29t
cGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpIHsKKyAgICAgICAgYWRkSnVtcChqdW1wKCks
IHRhcmdldCk7CisgICAgICAgIGFyZUVxdWFsLmxpbmsodGhpcyk7CisgICAgfQorI2Vsc2UgLy8g
aWYgIVVTRShCSUdJTlQzMikKICAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRv
IGNvdmVyIHN0cmluZ3MpLgogICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKICAgICBvcjY0KHJlZ1Qx
LCByZWdUMik7CkBAIC02MjcsMTEgKzczOSwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0
RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcAog
ICAgIEp1bXAgcmlnaHRPSyA9IGJyYW5jaElmSW50MzIocmVnVDEpOwogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTnVtYmVyKHJlZ1QxKSk7CiAgICAgcmlnaHRPSy5saW5rKHRoaXMpOwotCiAgICAg
aWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKICAgICAgICAgYWRk
SnVtcChicmFuY2g2NChFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBlbHNlCiAg
ICAgICAgIGFkZEp1bXAoYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdldCk7
CisjZW5kaWYKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02ODYsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVtcCBp
c05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmTm90QmlnSW50KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmln
SW50KHJlZ1QwKSk7CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2Vs
bC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCmluZGV4IDFjMzA3NzY5ZGFhLi40ODQwMzAwYjI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMjg4LDYgKzI4OCwxMiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQogCitOT19SRVRVUk4g
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAg
Ly8gV2UgZW1pdCBpc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkLCBzaW5jZSBCaWdJbnQzMiBpcyBu
b3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtODY2LDcg
Kzg3Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAK
ICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJ
Zk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAg
ICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCA3YWUxNTBjYzY2MS4uNDA4MThmYmFjNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTMxNSw2ICsxMzE1LDE5
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVx
dWFsKGdsb2JhbE9iamVjdCwgc3JjMSwgc3JjMik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGhlYXBCaWdJbnQsIGludDMyX3Qg
c21hbGxJbnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBB
U1NFUlQoaGVhcEJpZ0ludC0+aXNIZWFwQmlnSW50KCkpOworCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTQmlnSW50Kj4oaGVhcEJpZ0ludCktPmVxdWFsc1RvSW50MzIoc21hbGxJbnQpOworfQor
I2VuZGlmCisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlX
aXRoUHJvZmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4MzgsNiArMjg1MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CiAKKy8vIEZJWE1FOiBp
dCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2lu
Y2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTI4NTAsOCArMjg2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZh
bHVlKSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigp
OworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAg
ICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFw
QmlnSW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKQEAgLTI4NTksNiArMjg4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQog
CisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFs
dWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpA
QCAtMjg3MywxMCArMjg5NiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFs
dWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHBy
aW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFs
dWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJ
TlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3Vs
dChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2
YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkg
eworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHBy
aW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJl
c3VsdChyZXN1bHQpOwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
ICAgICB9CiAKQEAgLTI4ODcsNiArMjkyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291
bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRo
ZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTA3LDkgKzI5NDEsMjAg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9
IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlz
QmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1p
bnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJp
bVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikg
eworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IC12YWx1ZSk7CisgICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAg
fQorICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOwor
ICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUu
YXNIZWFwQmlnSW50KCkpOwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAg
LTI5MjEsNiArMjk2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVy
IHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNh
biBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjk0MCw5ICsyOTg2LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1W
YWx1ZSkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhp
cyBmdW5jdGlvbiBwcm9maWxlIHRoZSBhcmd1bWVudCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHBy
aW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4p
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNC
aWdJbnQzMiwgLXZhbHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlN
aW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVy
ID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IDhlZmI1YjVhYzk4Li40M2I5YTBhODY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNiw2ICsyMDYsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogaGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lOVEVSTkFMOwogI2Vs
c2UKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogbGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgKaW5kZXggNTI0MzVhNjYxMjAuLjJhMmJiOTlmOTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xMzYs
NiArMTM2LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAwCiAjZW5kaWYKIAor
I2lmIFVTRShCSUdJTlQzMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMAorI2VuZGlmCisKICNpZiBDUFUoQUREUkVT
UzY0KQogI2RlZmluZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBi
NTY5OWMzMGQyYy4uNmZmMTk3YjIzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5Niw2ICsxOTYsMTEgQEAgaWYg
SlNWQUxVRTY0CiAgICAgY29uc3QgVmFsdWVOdWxsICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6
OlZhbHVlTnVsbAogICAgIGNvbnN0IFRhZ051bWJlciAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVl
OjpOdW1iZXJUYWcKICAgICBjb25zdCBOb3RDZWxsTWFzayAgICAgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6Tm90Q2VsbE1hc2sKKyAgICBpZiBCSUdJTlQzMgorICAgICAgICBjb25zdCBUYWdCaWdJbnQz
MiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMlRhZworICAgICAgICBjb25zdCBNYXNrQmln
SW50MzIgPSBjb25zdGV4cHIgSlNWYWx1ZTo6QmlnSW50MzJNYXNrCisgICAgZW5kCisgICAgY29u
c3QgTG93ZXN0T2ZIaWdoQml0cyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRz
CiBlbHNlCiAgICAgY29uc3QgSW50MzJUYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6SW50MzJUYWcK
ICAgICBjb25zdCBCb29sZWFuVGFnID0gY29uc3RleHByIEpTVmFsdWU6OkJvb2xlYW5UYWcKQEAg
LTUyMSw2ICs1MjYsNyBAQCBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0ZXhwciBKU0Z1bmN0
aW9uVHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29uc3QgRGVy
aXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCiBjb25zdCBQcm94eU9i
amVjdFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmplY3RUeXBlCitjb25zdCBIZWFwQmlnSW50VHlw
ZSA9IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBu
ZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBt
YW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0
X2J5X3ZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjEuLjU4YmYxZjY2MWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMTMwNiw2ICsxMzA2LDEyIEBAIGxsaW50T3BXaXRoUmV0dXJu
KG9wX2lzX251bWJlciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJl
dHVybikKIGVuZCkKIAogCisjIE9uIDMyLWJpdCBwbGF0Zm9ybXMgQklHSU5UMzIgaXMgbm90IHN1
cHBvcnRlZCwgc28gd2UgZ2VuZXJhdGUgb3BfaXNfY2VsbF93aXRoX3R5cGUgaW5zdGVhZCBvZiBv
cF9pc19iaWdfaW50CitsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVu
dXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgbm90U3VwcG9ydGVkKCkKK2VuZCkKKworCiBsbGlu
dE9wV2l0aFJldHVybihvcF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCwgdDMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGFlMmUzNzczZmZkLi5mOTVlN2M0NzJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NDQsMjQgKzg0NCw0OCBAQCBs
bGludE9wV2l0aFJldHVybihvcF9pc191bmRlZmluZWRfb3JfbnVsbCwgT3BJc1VuZGVmaW5lZE9y
TnVsbCwgbWFjcm8gKHNpemUsIGdldAogZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmljdEVxT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBjcmVhdGVCb29sZWFuKQogICAgIGxsaW50T3BXaXRo
UmV0dXJuKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQwKQogICAgICAgICBnZXQobV9s
aHMsIHQyKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAg
ICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCisKKyAgICAgICAgIyBB
dCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmln
aHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIHJl
c3VsdCA9IChsZWZ0ID09IHJpZ2h0KTsKKyAgICAgICAgIyBpZiAocmVzdWx0KQorICAgICAgICAj
ICAgICBnb3RvIGRvbmU7CisgICAgICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBD
ZWxsKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGRvbmU6CisgICAg
ICAgICMgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50
cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFu
Y2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2Ug
dXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlz
IHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3
aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAg
ICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBv
bmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9y
IGVxdWFsIDE8PDUwLgorICAgICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBtb3ZlIHQxLCB0Mwor
ICAgICAgICBtb3ZlIExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisg
ICAgICAgIGFkZHEgdDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAx
LCB0NQorICAgICAgICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgY3FlcSB0MCwgdDEs
IHQ1CisgICAgICAgIGJ0cW56IHQ1LCB0NSwgLmRvbmUgI2lzIHRoZXJlIGEgYmV0dGVyIHdheSBv
ZiBjaGVja2luZyB0NSAhPSAwID8KKwogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEg
dDEsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicgaWYgbm90IGZvciBC
aWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2VsbCB0byBiZSBzdHJp
Y3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6
IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxl
ZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5sZWZ0T0s6Ci0g
ICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAgIGJ0cW56IHQxLCBu
dW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFsaXR5T3BlcmF0aW9u
KHQwLCB0MSwgdDApCi0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgICAgICByZXR1cm4o
dDApCisKKyAgICAuZG9uZToKKyAgICAgICAgY3JlYXRlQm9vbGVhbih0NSkKKyAgICAgICAgcmV0
dXJuKHQ1KQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVv
cGNvZGVOYW1lJSkKQEAgLTg3MSwzMyArODk1LDUzIEBAIGVuZAogCiAKIHN0cmljdEVxT3Aoc3Ry
aWN0ZXEsIE9wU3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxZXEg
bGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9wZXJhbmQpIHhvcnEgVmFsdWVG
YWxzZSwgb3BlcmFuZCBlbmQpCiAKIAogc3RyaWN0RXFPcChuc3RyaWN0ZXEsIE9wTnN0cmljdGVx
LAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcW5lcSBsZWZ0LCByaWdodCwgcmVz
dWx0IGVuZCkKKyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZVRydWUsIG9wZXJhbmQgZW5k
KQogCiAKLW1hY3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgZXF1YWxpdHlPcGVyYXRpb24pCittYWNybyBzdHJpY3RFcXVhbGl0eUp1bXBPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIGp1bXBJZkVxdWFsLCBqdW1wSWZOb3RFcXVhbCkKICAgICBsbGlu
dE9wV2l0aEp1bXAob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBn
ZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBnZXQo
bV9yaHMsIHQzKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkK
ICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MywgdDEpCisKKyAgICAgICAg
IyBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUgfHwg
cmlnaHQgaXMgRG91YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAj
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAjICAgICBnb3RvIGp1bXBUYXJnZXQ7CisgICAg
ICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAjICAgICBn
b3RvIHNsb3dQYXRoOworICAgICAgICAjIGdvdG8gb3RoZXJKdW1wVGFyZ2V0CisKKyAgICAgICAg
IyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERv
dWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBi
ZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJl
cgorICAgICAgICAjIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwg
dGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFs
bCBoaWdoIGJpdHMgYXQgMAorICAgICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGws
IHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgIyBMZWF2
aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAgICAgICAgbW92ZSB0MCwg
dDIKLSAgICAgICAgb3JxIHQxLCB0MgorICAgICAgICBtb3ZlIHQxLCB0MworICAgICAgICBtb3Zl
IExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisgICAgICAgIGFkZHEg
dDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAxLCB0NQorICAgICAg
ICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgYnFlcSB0MCwgdDEsIC5lcXVhbAorCisg
ICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicg
aWYgbm90IGZvciBCaWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2Vs
bCB0byBiZSBzdHJpY3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0Mgog
ICAgICAgICBidHF6IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51
bWJlclRhZywgLmxlZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAg
IC5sZWZ0T0s6Ci0gICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAg
IGJ0cW56IHQxLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFs
aXR5T3BlcmF0aW9uKHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKIAot
ICAgIC5qdW1wVGFyZ2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCisgICAgICAgIGp1
bXBJZk5vdEVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQorCisgICAgLmVxdWFs
OgorICAgICAgICBqdW1wSWZFcXVhbChqdW1wLCBtX3RhcmdldExhYmVsLCBkaXNwYXRjaCkKIAog
ICAgIC5zbG93OgogICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2Rl
TmFtZSUpCkBAIC05MDcsMjYgKzk1MSwyOCBAQCBlbmQKIAogCiBzdHJpY3RFcXVhbGl0eUp1bXBP
cChqc3RyaWN0ZXEsIE9wSnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBicWVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQotCisgICAgbWFjcm8gKGp1bXAsIHRhcmdl
dExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJlbCkgZW5kLAorICAgIG1hY3JvIChqdW1w
LCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogCiBzdHJpY3RFcXVhbGl0
eUp1bXBPcChqbnN0cmljdGVxLCBPcEpuc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJxbmVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQorICAgIG1hY3JvIChqdW1w
LCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kLAorICAgIG1hY3JvIChqdW1w
LCB0YXJnZXRMYWJlbCwgZGlzcGF0Y2gpIGp1bXAodGFyZ2V0TGFiZWwpIGVuZCkKIAogbWFjcm8g
cHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQogICAgIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyB1cGRh
dGVBcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0
MV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJp
dGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAgZW5kCiAK
ICAgICAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0
MwotICAgICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4gdDEsIHNy
Y0RzdCBpbiB0MwotICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAgICAgaW50
ZWdlck9wZXJhdGlvbih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAg
ICAgIHN0b3JlcSB0MywgW2NmciwgdDAsIDhdCisgICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwg
dDEKKyAgICAgICAgbWV0YWRhdGEodDIsIHQzKQorICAgICAgICAjIHNyY0RzdCBpbiB0MSwgbWV0
YWRhdGEgaW4gdDIKKyAgICAgICAgIyBGSVhNRTogdGhlIG5leHQgbGluZSBqdW1wcyB0byB0aGUg
c2xvdyBwYXRoIGZvciBCaWdJbnQzMi4gV2UgY291bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNhdGVk
IHBhdGggaW4gaGVyZSBmb3IgdGhlbS4KKyAgICAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93
CisgICAgICAgIGludGVnZXJPcGVyYXRpb24odDEsIC5zbG93KQorICAgICAgICBvcnEgbnVtYmVy
VGFnLCB0MQorICAgICAgICBzdG9yZXEgdDEsIFtjZnIsIHQwLCA4XQogICAgICAgICB1cGRhdGVB
cml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQogICAgICAgICBkaXNwYXRjaCgpCiAKQEAgLTkz
NCw2ICs5ODAsNyBAQCBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVn
ZXJPcGVyYXRpb24pCiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1l
JSkKICAgICAgICAgZGlzcGF0Y2goKQogICAgIGVuZCkKKwogZW5kCiAKIGxsaW50T3BXaXRoUHJv
ZmlsZShvcF90b19udW1iZXIsIE9wVG9OdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCkBAIC0xMjc5LDYgKzEzMjYsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
bnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIHJldHVybih0MSkKIGVuZCkKIAoraWYgQklHSU5UMzIKKyAgICBsbGludE9wV2l0aFJldHVy
bihvcF9pc19iaWdfaW50LCBPcElzQmlnSW50LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCBy
ZXR1cm4pCisgICAgICAgIGdldChtX29wZXJhbmQsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHNpemUsIHQxLCB0MCkKKyAgICAgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAu
bm90Q2VsbENhc2UKKyAgICAgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEhlYXBCaWdJbnRU
eXBlLCB0MQorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKKyAgICAgICAgcmV0dXJuKHQxKQor
ICAgIC5ub3RDZWxsQ2FzZToKKyAgICAgICAgYW5kcSBNYXNrQmlnSW50MzIsIHQwCisgICAgICAg
IGNxZXEgdDAsIFRhZ0JpZ0ludDMyLCB0MAorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAg
ICAgICAgcmV0dXJuKHQwKQorICAgIGVuZCkKK2Vsc2UKKyMgaWYgQklHSU5UMzIgaXMgbm90IHN1
cHBvcnRlZCB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lz
X2JpZ19pbnQKKyAgICBsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVu
dXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZW5kKQor
ZW5kCiAKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdp
dGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldHUoc2l6
ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggODRmZTM5OWNkOGMuLjRiOTQ0NTA1ZTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtODMs
NiArODMsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50
RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICBpZiAocmFkaXggPT0gMTAp
CiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50
KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9y
UGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2ln
bmVkKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworCiAgICAgLy8gRklYTUU6IFdl
IGFyZSBhbGxvY2F0aW5nIGEgSlNCaWdJbnQganVzdCB0byBiZSBhYmxlIHRvIHVzZQogICAgIC8v
IEpTQmlnSW50Ojp0cnlHZXRTdHJpbmcgd2hlbiByYWRpeCBpcyBub3QgMTAuCiAgICAgLy8gVGhp
cyBjcmVhdGVzIHNvbWUgR0MgcHJlc3N1cmUsIGJ1dCBzaW5jZSB0aGVzZSBpZGVudGlmaWVycwpA
QCAtOTAsMTEgKzk0LDE1IEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFr
ZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgLy8gaXQgd29u
dCBiZSBtdWNoIHByb2JsZW1hdGljLCBnaXZlbiBzdWNoIGNhc2VzIGFyZSB2ZXJ5IHJhcmUuCiAg
ICAgLy8gVGhlcmUgaXMgYSBsb3Qgb2Ygb3B0aW1pemF0aW9ucyB3ZSBjYW4gYXBwbHkgaGVyZSB3
aGVuIG5lY2Vzc2FyeS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NjI3Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
Ci0gICAgSlNCaWdJbnQqIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwg
aWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhy
b3dFeGNlcHRpb25zLCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBiaWdJbnQsIDEw
KSkpOworICAgIEpTQmlnSW50KiBoZWFwQmlnSW50OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgaGVhcEJpZ0ludCA9IEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UKKyNlbmRp
ZgorICAgICAgICBoZWFwQmlnSW50ID0gYmlnSW50LmFzSGVhcEJpZ0ludCgpOworCisgICAgbV9p
ZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJbnQ6OnRy
eUdldFN0cmluZyh2bSwgaGVhcEJpZ0ludCwgMTApKSk7CiAgICAgcmV0dXJuIG1faWRlbnRpZmll
cnMubGFzdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggZTk4MDMzYTJiYTYuLjJiYmI2YzM0ZGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC00Myw3
ICs0Myw2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDc3ZDhjYWYyMzY4
Li44ZWQxNGFhOGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludENvbnN0cnVjdG9yLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDE4ICs3NSw2IEBAIHZvaWQgQmlnSW50Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5
cGUpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBib29sIGlzU2FmZUludGVnZXIoSlNWYWx1
ZSBhcmd1bWVudCkKLXsKLSAgICBpZiAoYXJndW1lbnQuaXNJbnQzMigpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGlmICghYXJndW1lbnQuaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgZG91YmxlIG51bWJlciA9IGFyZ3VtZW50LmFzRG91YmxlKCk7Ci0gICAg
cmV0dXJuIHRydW5jKG51bWJlcikgPT0gbnVtYmVyICYmIHN0ZDo6YWJzKG51bWJlcikgPD0gbWF4
U2FmZUludGVnZXIoKTsKLX0KLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgQVNTRVJU
KGFyZ3VtZW50LmlzUHJpbWl0aXZlKCkpOwpAQCAtOTQsMjAgKzgyLDI0IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSB0b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGFyZ3VtZW50KQogICAgIAogICAgIGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKLSAgICAKKworICAgIGlmIChhcmd1bWVu
dC5pc0Jvb2xlYW4oKSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVh
bigpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOworI2VuZGlmCisgICAgfQorCisg
ICAgaWYgKGFyZ3VtZW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nVmll
dyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCB2aWV3KSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIEFTU0VSVChhcmd1bWVudC5p
c1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNT
eW1ib2woKSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IAotICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4oKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3Vt
ZW50LmFzQm9vbGVhbigpKSkpOwotICAgIAotICAgIGlmIChhcmd1bWVudC5pc1VuZGVmaW5lZE9y
TnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFs
aWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwotICAgIAotICAgIEFT
U0VSVChhcmd1bWVudC5pc1N0cmluZygpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgewotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKLSAgICB9KSk7CisgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBU
b0JpZ0ludCBvcGVyYXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzExMSwyMiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewotICAgICAgICBpZiAo
IWlzU2FmZUludGVnZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJO
b3Qgc2FmZSBpbnRlZ2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIo
KSkpOworICAgIGlmIChwcmltaXRpdmUuaXNJbnQzMigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQz
MiwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOwor
I2VuZGlmCisgICAgfQogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHBy
aW1pdGl2ZS5hc1VJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJsZSgpKSB7Cisg
ICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAgICAgICAgaWYg
KHRydW5jKG51bWJlcikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBtYXhTYWZlSW50
ZWdlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUgaW50ZWdlciJf
cykpOwogCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmln
SW50MzIodm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwog
ICAgIH0KLSAgICAKKwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KGdsb2Jh
bE9iamVjdCwgcHJpbWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYuLmU2MTk4MmI5
M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8
dGljYWlvbGltYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzcsNyArMzcsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
QmlnSW50T2JqZWN0KTsKIGNvbnN0IENsYXNzSW5mbyBCaWdJbnRPYmplY3Q6OnNfaW5mbyA9IHsg
IkJpZ0ludCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoQmlnSW50T2JqZWN0KSB9OwogCiAKLUJpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0Ojpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogYmln
SW50KQorQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJpZ0ludE9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50T2JqZWN0Pih2bS5o
ZWFwKSkgQmlnSW50T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJpZ0ludE9iamVjdFN0cnVjdHVy
ZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnQpOwpAQCAtNDksNyAr
NDksNyBAQCBCaWdJbnRPYmplY3Q6OkJpZ0ludE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogfQogCi12b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0JpZ0ludCogYmlnSW50KQordm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNWYWx1ZSBiaWdJbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oCmluZGV4IDg0NzY3MTBmMjMyLi5kZWE4MWQyMmUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGlt
YUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyAr
MjYsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNXcmFwcGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTEgKzQwLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLmJpZ0ludE9iamVjdFNwYWNlPG1vZGU+KCk7
CiAgICAgfQogCi0gICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU0JpZ0ludCopOworICAgIHN0YXRpYyBCaWdJbnRPYmplY3QqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
Ci0gICAgSlNCaWdJbnQqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc0JpZ0ludChK
U1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7IH0KKyAgICBKU1ZhbHVlIGludGVybmFs
VmFsdWUoKSBjb25zdCB7IHJldHVybiBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKTsg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTcs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3Qg
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQmlnSW50Kik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTVmFsdWUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEJpZ0ludE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogfTsKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKEJpZ0ludE9iamVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAK
aW5kZXggM2VmZDQxZDdkYzMuLjlhMTRmNjZhODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTgxLDEyICs4MSwyNCBAQCB2
b2lkIEJpZ0ludFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCopCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShW
TSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBG
SVhNRTogaGVhcC1hbGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJl
LWltcGxlbWVudGluZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0
aGF0IEknbSBkZWZlcnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVl
LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0
aGlzVmFsdWUuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVl
LmlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2Fz
dDxKU0JpZ0ludCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJu
IGJpZ0ludDsKLSAgICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAg
ICAgICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJ
bnRPYmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1
ZSBiaWdJbnQgPSBiaWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIo
KSk7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNiw2ICsxMjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKIH0KIAorLy8gRklYTUU6IHRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNh
bmRzIGFuZCBzaW1pbGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmln
SW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKaW5kZXggYjhkZTk2NTU4MmYuLjI2NjUyMGVjZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw2IEBA
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2OSwxMyArNDY4LDggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BJbmM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fc3JjRHN0KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVz
dWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNJbmMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNCaWdJ
bnQ6OmluYyhnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkp
OwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihy
ZXN1bHRWYXJpYW50KSArIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0
ZWNvZGUubV9zcmNEc3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNDg0LDEzICs0NzgsOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcERlYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0
ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91Ymxl
PiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBK
U0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJp
YW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3Vi
bGU+KHJlc3VsdFZhcmlhbnQpIC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RP
TShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcsNyArNDk2LDE1
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0
ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiAgICAgVW5hcnlBcml0aFByb2ZpbGUmIHByb2Zp
bGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKICAgICBwcm9maWxlLm9ic2VydmVBcmcob3Bl
cmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0JpZ0ludCgp
KTsKLSAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKKworICAgIGlmIChyZXN1bHQuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAg
IHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCisgICAgZWxzZSB7CisgICAg
ICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50
MzIoKSkgewogICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNJbnQzMigpKQogICAgICAgICAgICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCk7CkBAIC01MjcsMTAgKzUyNCw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0
ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUu
c2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2Vy
dmVkQmlnSW50KCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVt
ZXJpYygpOworICAgIH0KIH0KICNlbHNlCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9
CkBAIC01NDUsOCArNTM5LDIxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAg
ICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0g
cHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01J
TikgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50
MzIsIC12YWx1ZSk7CisgICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7
CisgICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKG1ldGFk
YXRhLCByZXN1bHQsIG9wZXJhbmQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsK
KyAgICB9CisjZW5kaWYKKworICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFs
dWUuYXNIZWFwQmlnSW50KCkpOwogICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0
LCB7CiAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRh
dGEsIHJlc3VsdCwgb3BlcmFuZCk7CiAgICAgICAgIH0pOwpAQCAtNTg0LDggKzU5MSwxMiBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiBjb2RlQgogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkSW50NTJPdmVyZmxvdygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmIChyZXN1bHQuaXNCaWdJbnQoKSkKLSAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJp
Z0ludCgpOworICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBw
cm9maWxlLnNldE9ic2VydmVkSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBl
bHNlIGlmIChyZXN1bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVk
QmlnSW50MzIoKTsKKyNlbmRpZgogICAgIGVsc2UgCiAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2
ZWROb25OdW1lcmljKCk7CiB9CkBAIC02MDcsMTMgKzYxOCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90b19udW1lcmljKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcFRvTnVtZXJpYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNv
ZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4g
cmVzdWx0VmFyaWFudCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0g
V1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkpOwogICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCkBAIC02NDksNyArNjU1LDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2FkZCkKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBhcml0aG1ldGljIGFu
ZCBiaXR3aXNlIG9wZXJhdGlvbnMgbmVlZCB0byBiZSBzdXJlIHRvIHJ1bgotLy8gdG9OdW1iZXIo
KSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdG9OdW1iZXIoKSBpcyBp
ZGVtcG90ZW50CisvLyB0b051bWVyaWMvdG9CaWdJbnRPckludDMyKCkgb24gdGhlaXIgb3BlcmFu
ZHMgaW4gb3JkZXIuICAoQSBjYWxsIHRvIHRoZXNlIGlzIGlkZW1wb3RlbnQKIC8vIGlmIGFuIGV4
Y2VwdGlvbiBpcyBhbHJlYWR5IHNldCBvbiB0aGUgQ2FsbEZyYW1lLikKIAogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX211bCkKQEAgLTY3MSwyNCArNjc3LDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3N1YikKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU3ViPigpOwogICAgIEpT
VmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0
TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N1YihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1
bHQsIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9w
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3Vi
dHJhY3Rpb24uIikpOwotICAgIH0KLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
YykpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRl
QXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMs
IHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzAwLDI2ICs2OTAsOCBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZGl2KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BE
aXY+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUo
KTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsK
LSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGl2KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxl
ZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iKSk7Ci0gICAgfQotCi0gICAgZG91YmxlIGEgPSBXVEY6
OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJs
ZT4ocmlnaHROdW1lcmljKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGEgLyBiKTsK
ICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgIHVwZGF0ZUFyaXRo
UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1
bHQsIGxlZnQsIHJpZ2h0KTsKICAgICB9KTsKQEAgLTczMSwyNCArNzAzLDkgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX21vZCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTW9kPigp
OwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAg
ICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAg
YXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUmVtYWluZGVyKGdsb2JhbE9i
amVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIAotICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAg
ICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBS
RVRVUk4ocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4g
cmVtYWluZGVyIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRvdWJsZSBhID0gV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBXVEY6OmdldDxkb3Vi
bGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgUkVUVVJOKGpzTnVtYmVyKGpzTW9kKGEsIGIpKSk7Cisg
ICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCkBA
IC03NTcsMjUgKzcxNCw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcFBvdz4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhi
eXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVt
ZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1BvdyhnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENF
UFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmV4cG9uZW50
aWF0ZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAg
IFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiIpKTsKLSAgICB9
Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAg
ICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLQotICAgIFJFVFVS
Tihqc051bWJlcihvcGVyYXRpb25NYXRoUG93KGEsIGIpKSk7CisgICAgUkVUVVJOKHJlc3VsdCk7
CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCkBAIC03ODQsMjIgKzcyNSwx
MCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BMc2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IHJpZ2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6bGVm
dFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iKSk7
Ci0gICAgfQotCi0gICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+
KGxlZnROdW1lcmljKSA8PCAoV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSAmIDMxKSkp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCkBAIC04MDgsMjIgKzczNywx
MCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BSc2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IHJpZ2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c2ln
bmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAg
ICAgICAgfQogCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
bnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0
IG9wZXJhdGlvbi4iX3MpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIo
V1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpID4+IChXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1JTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQp
CkBAIC04NDksNzkgKzc2Niw0NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0bm90KQog
ewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdG5vdD4oKTsK
LSAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1Zh
bHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmRO
dW1lcmljKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VO
b3QoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSk7Ci0g
ICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKLSAgICB9CisgICAgYXV0byBvcGVyYW5kID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCk7CiAKLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIofldURjo6Z2V0PGludDMy
X3Q+KG9wZXJhbmROdW1lcmljKSkpOworICAgIGF1dG8gcmVzdWx0ID0ganNCaXR3aXNlTm90KGds
b2JhbE9iamVjdCwgb3BlcmFuZCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQp
CiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0YW5kPigp
OwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgp
LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwot
ICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKS50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVj
dCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQorICAgIGF1
dG8gbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdo
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBSRVRVUk5fUFJPRklM
RUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpICYgV1RGOjpnZXQ8aW50
MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNlQW5k
KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
IFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0b3IpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0
b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1Zh
bHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1
ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
IHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
ICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0g
ICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQorICAgIGF1dG8gbGVm
dCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBiaXR3aXNlICdvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJP
RklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIHwgV1RGOjpnZXQ8
aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNl
T3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9iaXR4b3IpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
Qml0eG9yPigpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocyku
anNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKGds
b2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpT
QmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsK
LSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iKSk7Ci0gICAg
fQorICAgIGF1dG8gbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAg
YXV0byByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBSRVRV
Uk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIF4gV1RG
OjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNC
aXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfdHlwZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCAxZjQ2ZTM1YTlkYS4u
N2NlM2U5YTE3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC04NywxMiArODcsMjMgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1bmNG
b3JtYXQoSlNHbG9iYWxPYmplY3QqIGcKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGF1dG8gdmFyaWFudCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBi
aWdJbnRPck51bWJlciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzd2l0Y2hP
bih2YXJpYW50LCBbJl0oYXV0byYmIHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBudW1iZXJGb3Jt
YXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICB9KSkpOworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgeworICAgICAgICBk
b3VibGUgdmFsdWUgPSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgfSBlbHNlIGlmIChiaWdJbnRPck51bWJlci5pc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIHZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZy
b20odm0sIGJpZ0ludE9yTnVtYmVyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVl
KSk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoYmlnSW50T3JOdW1iZXIu
aXNIZWFwQmlnSW50KCkpOworICAgICAgICBKU0JpZ0ludCogdmFsdWUgPSBiaWdJbnRPck51bWJl
ci5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJG
b3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSk7CisgICAgfQogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggOWMzNDU0NDJm
NTQuLjFjMjM5Y2JmYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExp
bWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSlNCaWdJbnQ6OmluaXRpYWxpemUoSW5pdGlh
bGl6YXRpb25UeXBlIGluaXRUeXBlKQogCiBTdHJ1Y3R1cmUqIEpTQmlnSW50OjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSGVhcEJpZ0ludFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0K
IAogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZNJiB2bSkKQEAgLTE0Miw4ICsxNDIs
MTAgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKFZNJiB2bSwgaW50NjRfdCB2YWx1
ZSkKIHsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7Ci0g
ICAgCi0gICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCkgeworCisgICAgLy8gVGhpcyBwYXRoIGlz
IG5vdCBqdXN0IGFuIG9wdGltaXphdGlvbjogYmVjYXVzZSB3ZSBkbyBub3QgY2FsbCByaWdodFRy
aW0gYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLAorICAgIC8vIGl0IHdvdWxkIGJlIGEgYnVn
IHRvIGNyZWF0ZSBhIEJpZ0ludCB3aXRoIGxlbmd0aD0yIGluIHRoaXMgY2FzZS4KKyAgICBpZiAo
c2l6ZW9mKERpZ2l0KSA9PSA4IHx8ICh2YWx1ZSA8PSBJTlRfTUFYICYmIHZhbHVlID49IElOVF9N
SU4pKSB7CiAgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVj
a2VkKHZtLCAxKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICAgICAgYmlnSW50
LT5zZXREaWdpdCgwLCBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC0o
dmFsdWUgKyAxKSkgKyAxKSk7CkBAIC0xODgsMzQgKzE5MCwyMSBAQCBKU1ZhbHVlIEpTQmlnSW50
Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKTsKIH0KIAotT3B0aW9u
YWw8dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKQotewotICAg
IGlmIChpc1plcm8oKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKGxlbmd0aCgp
ID09IDEgJiYgIXNpZ24oKSkgewotICAgICAgICBEaWdpdCByRGlnaXQgPSBkaWdpdCgwKTsKLSAg
ICAgICAgaWYgKHJEaWdpdCA8PSA5KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJEaWdpdCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLUpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmll
dyBzLCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzLCBFcnJvclBhcnNl
TW9kZSBwYXJzZXJNb2RlKQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4g
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIHBhcnNl
ck1vZGUpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczE2
KCksIHMubGVuZ3RoKCksIHBhcnNlck1vZGUpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RyaW5nVmlldyBz
LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlLCBQYXJzZUludFNpZ24g
c2lnbikKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9k
ZSBwYXJzZXJNb2RlLCBQYXJzZUludFNpZ24gc2lnbikKIHsKICAgICBpZiAocy5pczhCaXQoKSkK
ICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIHMuY2hhcmFjdGVyczgo
KSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6
RGlzYWxsb3dFbXB0eVN0cmluZyk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwg
dm0sIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBz
aWduLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogfQogCi1KU0JpZ0ludCog
SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cmluZ1ZpZXcgcykKK0pTVmFsdWUgSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcykKIHsKICAgICByZXR1cm4gcGFyc2VJbnQo
Z2xvYmFsT2JqZWN0LCBzLCBFcnJvclBhcnNlTW9kZTo6SWdub3JlRXhjZXB0aW9ucyk7CiB9CkBA
IC00NTQsMTYgKzQ0MywyMyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnJlbWFpbmRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJbgogCiBKU0JpZ0ludCog
SlNCaWdJbnQ6OmluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCkK
IHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0
IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0g
ICAgcmV0dXJuIGFkZChnbG9iYWxPYmplY3QsIHgsIHZtLmJpZ0ludENvbnN0YW50T25lLmdldCgp
KTsKKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGds
b2JhbE9iamVjdCwgeCwgU2lnbk9wdGlvbjo6VW5zaWduZWQpOworICAgIEpTQmlnSW50KiByZXN1
bHQgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHgsIHgtPmxlbmd0aCgpKTsKKyAgICBy
ZXN1bHQtPnNldFNpZ24odHJ1ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSlNCaWdJbnQq
IEpTQmlnSW50OjpkZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgp
CiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJp
dCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIHJldHVybiBzdWIoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQo
KSk7CisgICAgaWYgKHgtPmlzWmVybygpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBj
cmVhdGVGcm9tKGdsb2JhbE9iamVjdC0+dm0oKSwgMSk7CisgICAgICAgIHJlc3VsdC0+c2V0U2ln
bih0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKCF4LT5zaWdu
KCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHgsIHgtPmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWdu
T3B0aW9uOjpTaWduZWQpOwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmFkZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpCkBAIC01MzIsNyAr
NTI4LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpiaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBKU0JpZ0kKICAgICBpZiAoeC0+c2lnbigpKQogICAg
ICAgICBzdGQ6OnN3YXAoeCwgeSk7CiAgICAgCi0gICAgLy8geCAmICgteSkgPT0geCAmIH4oeS0x
KSA9PSB4ICYgfih5LTEpCisgICAgLy8geCAmICgteSkgPT0geCAmIH4oeS0xKQogICAgIEpTQmln
SW50KiB5MSA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwgeSwgeS0+bGVuZ3RoKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHJldHVybiBhYnNv
bHV0ZUFuZE5vdCh2bSwgeCwgeTEpOwpAQCAtMTY0NCw3ICsxNjQwLDcgQEAgU3RyaW5nIEpTQmln
SW50Ojp0b1N0cmluZ0Jhc2VQb3dlck9mVHdvKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlMKIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIHVuc2lnbmVkIHJhZGl4KQog
ewogICAgIC8vIEZJWE1FOiBbSlNDXSBSZXZpc2l0IHVzYWdlIG9mIFZlY3RvciBpbnRvIEpTQmln
SW50Ojp0b1N0cmluZwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODA2NworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODA2NzEKICAgICBWZWN0b3I8TENoYXI+IHJlc3VsdFN0cmluZzsKIAogICAgIEFTU0VSVChy
YWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKQEAgLTE4MDIsNyArMTc5OCw3IEBAIGJvb2wgSlNC
aWdJbnQ6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUmIG51bWJlciwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFy
VHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1v
ZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUgZXJy
b3JQYXJzZU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC0x
ODEwLDcgKzE4MDYsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogICAgIHdoaWxlIChwIDwg
bGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShkYXRhW3BdKSkKICAgICAgICAgKytwOwogCi0gICAg
Ly8gQ2hlY2sgUmFkaXggZnJvbSBmcmlzdCBjaGFyYWN0ZXJzCisgICAgLy8gQ2hlY2sgUmFkaXgg
ZnJvbSBmaXJzdCBjaGFyYWN0ZXJzCiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwKSAr
IDEgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKSAmJiBkYXRhW3BdID09ICcwJykgewog
ICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChkYXRhW3AgKyAxXSwgJ2InKSkK
ICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5n
dGgsIHAgKyAyLCAyLCBlcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduOjpVbnNpZ25lZCwgUGFy
c2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKQEAgLTE4MjQsMjQgKzE4MjAsMTggQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKIAogICAgIFBhcnNlSW50U2lnbiBzaWduID0gUGFyc2VJ
bnRTaWduOjpVbnNpZ25lZDsKICAgICBpZiAocCA8IGxlbmd0aCkgewotICAgICAgICBpZiAoZGF0
YVtwXSA9PSAnKycpCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFbcF0g
PT0gJy0nKSB7CisgICAgICAgIGlmIChkYXRhW3BdID09ICctJykgewogICAgICAgICAgICAgc2ln
biA9IFBhcnNlSW50U2lnbjo6U2lnbmVkOwogICAgICAgICAgICAgKytwOwotICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoZGF0YVtwXSA9PSAnKycpCisgICAgICAgICAgICArK3A7CiAgICAg
fQogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRh
dGEsIGxlbmd0aCwgcCwgMTAsIGVycm9yUGFyc2VNb2RlLCBzaWduKTsKLQotICAgIGlmIChyZXN1
bHQgJiYgIXJlc3VsdC0+aXNaZXJvKCkpCi0gICAgICAgIHJlc3VsdC0+c2V0U2lnbihzaWduID09
IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IHBhcnNlSW50KGdsb2JhbE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCwgMTAsIGVycm9yUGFy
c2VNb2RlLCBzaWduKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYg
dm0sIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgs
IHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRT
aWduIHNpZ24sIFBhcnNlSW50TW9kZSBwYXJzZU1vZGUpCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJz
ZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBF
cnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24sIFBhcnNlSW50
TW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsKICAgICB1bnNpZ25l
ZCBwID0gc3RhcnRJbmRleDsKQEAgLTE4NTIsNyArMTg0Miw3IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlw
ZSogZGF0CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgICAgICBpZiAoZXJyb3JQ
YXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucykKICAgICAgICAgICAg
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9i
YWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAg
Ly8gU2tpcHBpbmcgbGVhZGluZyB6ZXJvcwpAQCAtMTg2Niw0NCArMTg1Niw4NCBAQCBKU0JpZ0lu
dCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgQ2hhclR5cGUqIGRhdAogCiAgICAgbGVuZ3RoID0gZW5kSW5kZXggKyAxOwogCi0gICAgaWYg
KHAgPT0gbGVuZ3RoKQorICAgIGlmIChwID09IGxlbmd0aCkgeworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMCk7CisjZWxzZQog
ICAgICAgICByZXR1cm4gY3JlYXRlWmVybyh2bSk7Ci0KLSAgICB1bnNpZ25lZCBsaW1pdDAgPSAn
MCcgKyAocmFkaXggPCAxMCA/IHJhZGl4IDogMTApOwotICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdh
JyArIChyYWRpeCAtIDEwKTsKLSAgICB1bnNpZ25lZCBsaW1pdEEgPSAnQScgKyAocmFkaXggLSAx
MCk7Ci0KLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gYWxsb2NhdGVGb3IoZ2xvYmFsT2JqZWN0LCB2
bSwgcmFkaXgsIGxlbmd0aCAtIHApOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwotICAgIC8vIHJlc3VsdCBjYW4gc3RpbGwgYmUgbnVsbCBpZiB3ZSBkb24ndCBoYXZl
IGFjY2VzcyB0byBnbG9iYWwgb2JqZWN0LCBhcyBhbGxvY2F0ZUZvciBjYW5ub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpX
aXRoWmVybyk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHAr
KykgewotICAgICAgICB1aW50MzJfdCBkaWdpdDsKLSAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAn
ICYmIGRhdGFbaV0gPCBsaW1pdDApCi0gICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7
Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFbaV0gPj0gJ2EnICYmIGRhdGFbaV0gPCBsaW1pdGEpCi0g
ICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnYScgKyAxMDsKLSAgICAgICAgZWxzZSBpZiAo
ZGF0YVtpXSA+PSAnQScgJiYgZGF0YVtpXSA8IGxpbWl0QSkKLSAgICAgICAgICAgIGRpZ2l0ID0g
ZGF0YVtpXSAtICdBJyArIDEwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICByZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChzdGF0aWNfY2FzdDxEaWdpdD4ocmFk
aXgpLCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKKyNlbmRpZgogICAgIH0KIAotICAgIHJl
c3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkID8gdHJ1ZSA6IGZhbHNl
KTsKLSAgICBpZiAocCA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJp
bSh2bSk7CisgICAgLy8gVGhlIGlkZWEgaXMgdG8gcGljayB0aGUgbGFyZ2VzdCBudW1iZXIgc3Vj
aCB0aGF0IHJhZGl4ICoqIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPD0gSU5UMzJfTUFYCisgICAg
dW5zaWduZWQgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMjsKKyAgICBzd2l0Y2ggKHJhZGl4KSB7Cisg
ICAgY2FzZSAyOgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMzA7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgODoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDEw
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEwOgorICAgICAgICBsZW5ndGhMaW1pdEZvckJp
Z0ludDMyID0gOTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxNjoKKyAgICAgICAgbGVuZ3Ro
TGltaXRGb3JCaWdJbnQzMiA9IDc7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAxOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBKU0JpZ0ludCogaGVhcFJlc3VsdCA9IG51bGxwdHI7CiAKLSAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0KTsKLSAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93
RXhjZXB0aW9ucykKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8g
QmlnSW50IikpOworICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFk
aXggOiAxMCk7CisgICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHN0YXRpY19jYXN0PGludDMy
X3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdEEgPSAnQScgKyAoc3RhdGljX2Nh
c3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSBs
ZW5ndGggLSBwOworICAgIHdoaWxlIChwIDwgbGVuZ3RoKSB7CisgICAgICAgIGludDMyX3QgZGln
aXQgPSAwOworICAgICAgICBDaGVja2VkPGludDMyX3QsIENyYXNoT25PdmVyZmxvdz4gbXVsdGlw
bGllciA9IDE7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGhMaW1pdEZv
ckJpZ0ludDMyICYmIHAgPCBsZW5ndGggOyArK2ksICsrcCkgeworICAgICAgICAgICAgZGlnaXQg
Kj0gcmFkaXg7CisgICAgICAgICAgICBtdWx0aXBsaWVyICo9IHJhZGl4OworICAgICAgICAgICAg
aWYgKGRhdGFbcF0gPj0gJzAnICYmIGRhdGFbcF0gPCBsaW1pdDApCisgICAgICAgICAgICAgICAg
ZGlnaXQgKz0gZGF0YVtwXSAtICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0g
J2EnICYmIGRhdGFbcF0gPCBsaW1pdGEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtw
XSAtICdhJyArIDEwOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnQScgJiYgZGF0
YVtwXSA8IGxpbWl0QSkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ0EnICsg
MTA7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3JQYXJzZU1v
ZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucykgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwg
IkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIEFTU0VSVChkaWdpdCA8IG11bHRpcGxpZXIudW5zYWZlR2V0KCkpOworCisg
ICAgICAgIGlmICghaGVhcFJlc3VsdCkgeworICAgICAgICAgICAgaWYgKHAgPT0gbGVuZ3RoKSB7
CisgICAgICAgICAgICAgICAgaWYgKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpCisgICAg
ICAgICAgICAgICAgICAgIGRpZ2l0ICo9IC0xOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBkaWdpdCk7CisjZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVGcm9tKHZtLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihkaWdpdCkpOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgICAgICBoZWFwUmVz
dWx0ID0gYWxsb2NhdGVGb3IoZ2xvYmFsT2JqZWN0LCB2bSwgcmFkaXgsIGluaXRpYWxMZW5ndGgp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAg
ICAgICAgICAgIC8vIHJlc3VsdCBjYW4gc3RpbGwgYmUgbnVsbCBpZiB3ZSBkb24ndCBoYXZlIGFj
Y2VzcyB0byBnbG9iYWwgb2JqZWN0LCBhcyBhbGxvY2F0ZUZvciBjYW5ub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgIGlmICghaGVhcFJlc3VsdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgaGVhcFJlc3VsdC0+aW5p
dGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKKyAgICAgICAgfQorICAgICAg
ICBoZWFwUmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KG11bHRp
cGxpZXIudW5zYWZlR2V0KCkpLCBzdGF0aWNfY2FzdDxEaWdpdD4oZGlnaXQpKTsKKyAgICB9CiAK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBoZWFwUmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFy
c2VJbnRTaWduOjpTaWduZWQpOworICAgIHJldHVybiBoZWFwUmVzdWx0LT5yaWdodFRyaW0odm0p
OwogfQogCiBpbmxpbmUgSlNCaWdJbnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdCh1bnNpZ25lZCBu
KQpAQCAtMTkyNywxOCArMTk1NywyMCBAQCBib29sIEpTQmlnSW50OjplcXVhbHNUb051bWJlcihK
U1ZhbHVlIG51bVZhbHVlKQogewogICAgIEFTU0VSVChudW1WYWx1ZS5pc051bWJlcigpKTsKICAg
ICAKLSAgICBpZiAobnVtVmFsdWUuaXNJbnQzMigpKSB7Ci0gICAgICAgIGludCB2YWx1ZSA9IG51
bVZhbHVlLmFzSW50MzIoKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLT5pc1plcm8oKTsKLQotICAgICAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEp
ICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBz
dGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkp
OwotICAgIH0KKyAgICBpZiAobnVtVmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gZXF1
YWxzVG9JbnQzMihudW1WYWx1ZS5hc0ludDMyKCkpOwogICAgIAogICAgIGRvdWJsZSB2YWx1ZSA9
IG51bVZhbHVlLmFzRG91YmxlKCk7CiAgICAgcmV0dXJuIGNvbXBhcmVUb0RvdWJsZSh0aGlzLCB2
YWx1ZSkgPT0gQ29tcGFyaXNvblJlc3VsdDo6RXF1YWw7CiB9CiAKK2Jvb2wgSlNCaWdJbnQ6OmVx
dWFsc1RvSW50MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBy
ZXR1cm4gdGhpcy0+aXNaZXJvKCk7CisgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAm
JiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3Rh
dGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsK
K30KKwogSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJs
ZShKU0JpZ0ludCogeCwgZG91YmxlIHkpCiB7CiAgICAgLy8gVGhpcyBhbGdvcml0aG0gZXhwZWN0
IHRoYXQgdGhlIGRvdWJsZSBmb3JtYXQgaXMgSUVFRSA3NTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDhhNGU2MDk5ZjQ3Li44ZTJjMTQ4ZTZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsNiArODIsMTcgQEAgcHVibGlj
OgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAor
ICAgIHN0YXRpYyBKU1ZhbHVlIG1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihWTSYgdm0sIGludDY0
X3QgdmFsdWUpCisgICAgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKHZhbHVlIDw9
IElOVF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKSk7CisjZW5k
aWYKKworICAgICAgICBhdXRvIHB0ciA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKHN0YXRpY19jYXN0PEpTQ2VsbCo+KHB0cikpOworICAg
IH0KKwogICAgIGVudW0gY2xhc3MgRXJyb3JQYXJzZU1vZGUgewogICAgICAgICBUaHJvd0V4Y2Vw
dGlvbnMsCiAgICAgICAgIElnbm9yZUV4Y2VwdGlvbnMKQEAgLTkwLDEzICsxMDEsMTIgQEAgcHVi
bGljOgogICAgIGVudW0gY2xhc3MgUGFyc2VJbnRNb2RlIHsgRGlzYWxsb3dFbXB0eVN0cmluZywg
QWxsb3dFbXB0eVN0cmluZyB9OwogICAgIGVudW0gY2xhc3MgUGFyc2VJbnRTaWduIHsgVW5zaWdu
ZWQsIFNpZ25lZCB9OwogCi0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9i
amVjdCosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBF
cnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNp
Z246OlVuc2lnbmVkKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zKTsKLSAgICBzdGF0aWMgSlNCaWdJbnQqIHN0cmluZ1RvQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgU3RyaW5nVmlldyk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2Rl
ID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWduID0gUGFyc2VJ
bnRTaWduOjpVbnNpZ25lZCk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJv
d0V4Y2VwdGlvbnMpOworICAgIHN0YXRpYyBKU1ZhbHVlIHN0cmluZ1RvQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiwgU3RyaW5nVmlldyk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRyeUdldFN0cmluZyhW
TSYsIEpTQmlnSW50KiwgdW5zaWduZWQgcmFkaXgpOwogCi0gICAgT3B0aW9uYWw8dWludDhfdD4g
c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygpOwogICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHJhZGl4KTsKICAgICAKICAgICBlbnVtIGNsYXNzIENvbXBhcmlz
b25Nb2RlIHsKQEAgLTExMyw2ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxzKEpTQmlnSW50KiwgSlNCaWdJbnQqKTsKICAgICBi
b29sIGVxdWFsc1RvTnVtYmVyKEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZXF1YWxzVG9JbnQzMihpbnQzMl90KTsKICAgICBzdGF0aWMgQ29tcGFyaXNvblJlc3VsdCBjb21w
YXJlKEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7CiAKICAgICBib29sIGdldFByaW1pdGl2ZU51
bWJlcihKU0dsb2JhbE9iamVjdCosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNv
bnN0OwpAQCAtMjIyLDEwICsyMzMsMTAgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0ds
b2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNl
TW9kZSk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFy
VHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUpOwogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSwgUGFyc2VJ
bnRTaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQsIFBhcnNlSW50TW9kZSA9IFBhcnNlSW50TW9k
ZTo6QWxsb3dFbXB0eVN0cmluZyk7CisgICAgc3RhdGljIEpTVmFsdWUgcGFyc2VJbnQoSlNHbG9i
YWxPYmplY3QqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSwgUGFyc2VJbnRTaWdu
ID0gUGFyc2VJbnRTaWduOjpTaWduZWQsIFBhcnNlSW50TW9kZSA9IFBhcnNlSW50TW9kZTo6QWxs
b3dFbXB0eVN0cmluZyk7CiAKICAgICBzdGF0aWMgSlNCaWdJbnQqIGFsbG9jYXRlRm9yKEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCB1bnNpZ25lZCByYWRpeCwgdW5zaWduZWQgY2hhcmNvdW50KTsKIApA
QCAtMjU4LDkgKzI2OSw5IEBAIHByaXZhdGU6CiAgICAgQ2FnZWRVbmlxdWVQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgRGlnaXQ+IG1fZGF0YTsKIH07CiAKLWlubGluZSBKU0JpZ0ludCogYXNCaWdJ
bnQoSlNWYWx1ZSB2YWx1ZSkKK2lubGluZSBKU0JpZ0ludCogYXNIZWFwQmlnSW50KEpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0JpZ0ludCgpKTsKKyAgICBB
U1NFUlQodmFsdWUuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpKTsKICAgICByZXR1cm4ganNDYXN0
PEpTQmlnSW50Kj4odmFsdWUuYXNDZWxsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDVkYjdjZDNmZDE5Li4zYWM5YzY4MGM4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTIz
LDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAKKyNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0
dGVyU2V0dGVyLmgiCkBAIC03MSw2ICs3MiwxNCBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJT
bG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIEFTU0VSVCgh
aXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJl
dHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKGlzQmlnSW50MzIoKSkgeworICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJv
bSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICByZXR1
cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUoKSkKICAgICAgICAgcmV0dXJu
IDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBm
YWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTAsMTAgQEAgSlNPYmplY3QqIEpT
VmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUo
KSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVy
biBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7CisjZW5kaWYK
IAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwg
KnRoaXMpKTsKQEAgLTExOCw2ICsxMzEsMTMgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAg
ICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJv
b2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgSlNDZWxsKiBo
ZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xv
YmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAgICAgICByZXR1cm4gaGVh
cEJpZ0ludC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIEFT
U0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTUwLDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRo
ZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBp
ZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAgaWYgKGlzQmlnSW50
KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlwZSgpOwpAQCAtMTQw
LDYgKzE2MCwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAoaXNCb29sZWFuKCkpCiAgICAgICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ymln
SW50UHJvdG90eXBlKCk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgp
KTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTI4Niw2ICszMTAsOCBAQCB2b2lk
IEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAgIG91
dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgIGVsc2Ug
aWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8o
KSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nh
c3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250ZXh0KSk7CisgICAgICAgIGVsc2UgaWYgKGlz
SGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgb3V0LnByaW50KCJCaWdJbnRbaGVhcC1hbGxvY2F0
ZWRdOiBhZGRyPSIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEpTT2JqZWN0OjppbmZvKCkpKSB7CiAg
ICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdDogIiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwog
ICAgICAgICAgICAgb3V0LnByaW50KCIgd2l0aCBidXR0ZXJmbHkgIiwgUmF3UG9pbnRlcihhc09i
amVjdChhc0NlbGwoKSktPmJ1dHRlcmZseSgpKSk7CkBAIC0zMDUsNiArMzMxLDEwIEBAIHZvaWQg
SlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAgICAgICBvdXQucHJp
bnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJp
bnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0lu
dDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMy
QXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZBTElE
Iik7CiB9CkBAIC0zNDcsNiArMzc3LDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFj
ZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAg
ICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAg
IG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNl
bmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zODQs
MTggKzQxOCwyNSBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVybkVtcAogICAgICAgICByZXR1cm4gdm0u
c21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKLSAgICBpZiAoaXNT
eW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOwotICAgICAgICByZXR1cm4g
ZXJyb3JWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7
CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIpIDw9IDkpCisgICAgICAgICAgICByZXR1cm4g
dm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhpbnRlZ2VyICsgJzAnKTsKKyAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRk
KGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJ
bnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8gZGlnaXQgPSBi
aWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiB2
bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpkaWdpdCArICcwJyk7Ci0gICAg
ICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGJpZ0lu
dC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkpOworI2VuZGlmCisgICAgaWYgKGlzSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBCaWdJbnQoKTsKKyAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2FzZXMgaGVyZTogb25l
LWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBldmVyeXRoaW5nIGVs
c2UuCisgICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBKU1N0cmluZzo6Y3JlYXRlKHZt
LCBiaWdJbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApLnJlbGVhc2VJbXBsKCkucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVycm9yVmFs
dWUoKSk7CiAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7CiAgICAgfQorICAgIGlmIChpc1N5
bWJvbCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVybiBl
cnJvclZhbHVlKCk7CisgICAgfQogCiAgICAgQVNTRVJUKGlzQ2VsbCgpKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyU3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA0MmM1
Mzc3N2NjZC4uODcyYzM2Mzk5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKQEAgLTE3Nyw2ICsxNzcsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBKU1RydWVU
YWcgeyBKU1RydWUgfTsKICAgICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNlIH07CiAgICAgZW51
bSBKU0NlbGxUYWcgeyBKU0NlbGxUeXBlIH07CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVudW0g
SlNCaWdJbnQzMlRhZyB7IEpTQmlnSW50MzIgfTsKKyNlbmRpZgogICAgIGVudW0gRW5jb2RlQXNE
b3VibGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OwogCiAgICAgSlNWYWx1ZSgpOwpAQCAtMTg2LDYg
KzE4OSw5IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlKEpTRmFsc2VUYWcpOwogICAgIEpTVmFsdWUo
SlNDZWxsKiBwdHIpOwogICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBKU1ZhbHVlKEpTQmlnSW50MzJUYWcsIGludDMyX3QpOworI2VuZGlmCiAK
ICAgICAvLyBOdW1iZXJzCiAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlKTsK
QEAgLTIxOSw2ICsyMjUsOSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7
CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25z
dDsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaW50MzJfdCBiaWdJbnQzMkFzSW50MzIoKSBjb25z
dDsgLy8gbXVzdCBvbmx5IGJlIGNhbGxlZCBvbiBhIEJpZ0ludDMyCisjZW5kaWYKICAgICAKICAg
ICBpbnQzMl90IGFzSW50MzJGb3JBcml0aG1ldGljKCkgY29uc3Q7IC8vIEJvb2xlYW4gYmVjb21l
cyBhbiBpbnQsIGJ1dCBvdGhlcndpc2UgbGlrZSBhc0ludDMyKCkuCiAKQEAgLTIzOCw2ICsyNDcs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJp
bmcoKSBjb25zdDsKICAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBC
aWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzQmlnSW50MzIoKSBjb25zdDsKICAgICBib29sIGlz
U3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wg
aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKQEAgLTI0Niw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAgIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvT3JOdWxsKFZNJikgY29uc3Q7Ci0gICAgICAgIAorCiAgICAgLy8g
RXh0cmFjdGluZyB0aGUgdmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBXVEY6OlN0cmluZyYpIGNvbnN0OwogICAgIFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKQEAgLTI2NSw5
ICsyNzYsMTAgQEAgcHVibGljOgogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaXMgZXhwZWN0
ZWQgdG8gYmUgc2lkZSBlZmZlY3QgZnJlZSBpZiBhbiBleGNlcHRpb24gaGFzCiAgICAgLy8gYmVl
biBzZXQgaW4gdGhlIENhbGxGcmFtZSBhbHJlYWR5LgogICAgIGRvdWJsZSB0b051bWJlcihKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwotICAgIAotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+
IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQq
LCBpbnQzMl90PiB0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAg
IEpTVmFsdWUgdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNWYWx1ZSB0
b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICBKU0JpZ0ludCogYXNI
ZWFwQmlnSW50KCkgY29uc3Q7CiAKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlmIGl0IGNh
biBiZSBkb25lIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgogICAgIE9wdGlvbmFsPGRvdWJsZT4gdG9O
dW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CkBAIC0zMTYsOCArMzI4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgc3Ry
aWN0RXF1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBz
dGF0aWMgYm9vbCBzdHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGlu
ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOworICAgIHN0YXRpYyBi
b29sIHN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIHYxLCBKU0Nl
bGwqIHYyKTsKICAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpOwogCiAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKQEAgLTQxNSwxMSArNDI2
LDIwIEBAIHB1YmxpYzoKICAgICAgKiBUaGVzZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHBy
b3BlcnRpZXM6CiAgICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIg
dmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRp
c3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGlu
dmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFVuZGVm
aW5lZFRhZykgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQg
MyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpLCBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUgdGhl
CiAgICAgICogICBzYW1lIHZhbHVlLCBhbGxvd2luZyBudWxsICYgdW5kZWZpbmVkIHRvIGJlIHF1
aWNrbHkgZGV0ZWN0ZWQuCiAgICAgICoKICAgICAgKiBObyB2YWxpZCBKU1ZhbHVlIHdpbGwgaGF2
ZSB0aGUgYml0IHBhdHRlcm4gMHgwLCB0aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFycmF5CiAg
ICAgICogaG9sZXMsIGFuZCBhcyBhIEMrKyAnbm8gdmFsdWUnIHJlc3VsdCAoZS5nLiBKU1ZhbHVl
KCkgaGFzIGFuIGludGVybmFsIHZhbHVlIG9mIDApLgorICAgICAqCisgICAgICogV2hlbiBVU0Uo
QklHSU5UMzIpLCB3ZSBoYXZlIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3IgQmlnSW50cyB0
aGF0IGFyZSBzbWFsbCAoMzItYml0IGF0IG1vc3QpOgorICAgICAqICAgICAgMDAwMDpYWFhYOlhY
WFg6MDAxMgorICAgICAqIFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUg
Zm9sbG93aW5nIHRoaW5nczoKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEg
RG91YmxlIG9yIEludGVnZXIgdGhhbmtzIHRvIHRoZSB0b3AgYml0cworICAgICAqIC0gSXQgY2Fu
bm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAx
IHdoaWNoIGlzIHNldCB0byB0cnVlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0
aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNl
CisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCB0cnVlL2ZhbHNlIGJlY2F1c2Ug
Yml0IDIgaXMgc2V0IHRvIGZhbHNlCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9y
IG51bGwvdW5kZWZpbmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKICAgICAgKi8KIAog
ICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40OSwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRo
YXQgdGhlIGVuY29kZWQgdmFsdWUgd2lsbCBiZWdpbgpAQCAtNDI5LDExICs0NDksMTkgQEAgcHVi
bGljOgogICAgIC8vIElmIGFsbCBiaXRzIGluIHRoZSBtYXNrIGFyZSBzZXQsIHRoaXMgaW5kaWNh
dGVzIGFuIGludGVnZXIgbnVtYmVyLAogICAgIC8vIGlmIGFueSBidXQgbm90IGFsbCBhcmUgc2V0
IHRoaXMgdmFsdWUgaXMgYSBkb3VibGUgcHJlY2lzaW9uIG51bWJlci4KICAgICBzdGF0aWMgY29u
c3RleHByIGludDY0X3QgTnVtYmVyVGFnID0gMHhmZmZlMDAwMDAwMDAwMDAwbGw7CisgICAgLy8g
VGhlIGZvbGxvd2luZyBjb25zdGFudCBpcyB1c2VkIGZvciBhIHRyaWNrIGluIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBzdHJpY3RFcSwgdG8gZGV0ZWN0IGlmIGVpdGhlciBvZiB0aGUgYXJndW1lbnRz
IGlzIGEgZG91YmxlCisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IExvd2VzdE9mSGlnaEJp
dHMgPSAxVUxMIDw8IDQ5OworICAgIHN0YXRpY19hc3NlcnQoTG93ZXN0T2ZIaWdoQml0cyAmIE51
bWJlclRhZyk7CisgICAgc3RhdGljX2Fzc2VydCghKChMb3dlc3RPZkhpZ2hCaXRzPj4xKSAmIE51
bWJlclRhZykpOwogCiAgICAgLy8gQWxsIG5vbi1udW1lcmljIChib29sLCBudWxsLCB1bmRlZmlu
ZWQpIGltbWVkaWF0ZXMgaGF2ZSBiaXQgMiBzZXQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQz
Ml90IE90aGVyVGFnICAgICAgID0gMHgyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBC
b29sVGFnICAgICAgICA9IDB4NDsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVW5kZWZp
bmVkVGFnICAgPSAweDg7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50MzJfdCBCaWdJbnQzMlRhZyAgICA9IDB4MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2
NF90IEJpZ0ludDMyTWFzayAgID0gTnVtYmVyVGFnIHwgQmlnSW50MzJUYWc7CisjZW5kaWYKICAg
ICAvLyBDb21iaW5lZCBpbnRlZ2VyIHZhbHVlIGZvciBub24tbnVtZXJpYyBpbW1lZGlhdGVzLgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwg
Qm9vbFRhZyB8IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUg
ICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA1YjNmZjhhYzQ0ZS4uYmUw
ZjM5YzUyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgotI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTMyOSw2ICszMjgsMTIgQEAgQUxXQVlTX0lOTElORSBKU0Nl
bGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNDZWxsKj4odS5hc0JpdHMucGF5bG9hZCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQq
IEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0lu
dCgpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0JpZ0ludCo+KHUuYXNCaXRzLnBh
eWxvYWQpOworfQorCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3Vi
bGVUYWcsIGRvdWJsZSBkKQogewogICAgIEFTU0VSVCghaXNJbXB1cmVOYU4oZCkpOwpAQCAtNTIy
LDggKzUyNywyMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29u
c3QKICAgICByZXR1cm4gdS5wdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQqIEpTVmFs
dWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzSGVhcEJpZ0ludCgpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih1LnB0cik7Cit9CisKICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQogCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIEpTVmFsdWU6OkpT
VmFsdWUoSlNCaWdJbnQzMlRhZywgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICAvLyBUaGUgJiB+TnVt
YmVyVGFnIHBhcnQgaXMgZm9yIG5lZ2F0aXZlIG51bWJlcnMsIG90aGVyd2lzZSB0aGV5IGdldCBz
aWduLWV4dGVuZGVkLgorICAgIHUuYXNJbnQ2NCA9ICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFs
dWUpIDw8IDE2KSAmIH5OdW1iZXJUYWcpIHwgQmlnSW50MzJUYWc7Cit9CisjZW5kaWYgLy8gVVNF
KEJJR0lOVDMyKQorCiBpbmxpbmUgaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUgbnVt
YmVyKQogewogICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQpAQCAtNjEwLDkgKzYyOSwzMSBAQCBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiAKIGlubGluZSBib29sIEpTVmFs
dWU6OmlzQmlnSW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCkt
PmlzQmlnSW50KCk7CisgICAgcmV0dXJuIGlzQmlnSW50MzIoKSB8fCBpc0hlYXBCaWdJbnQoKTsK
K30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0JpZ0ludDMyKCkgY29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgcmV0dXJuICh1LmFzSW50NjQgJiBCaWdJbnQzMk1hc2spID09IEJpZ0ludDMyVGFnOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK2lu
bGluZSBpbnQzMl90IEpTVmFsdWU6OmJpZ0ludDMyQXNJbnQzMigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGlzQmlnSW50MzIoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJ
bnQ2NCA+PiAxNik7Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc1N5bWJvbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2Vs
bCgpLT5pc1N5bWJvbCgpOwpAQCAtNjIwLDcgKzY2MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6
OmlzU3ltYm9sKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBj
b25zdAogewotICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwg
YXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzQmlnSW50KCk7CisgICAgcmV0dXJu
ICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2wo
KSB8fCBhc0NlbGwoKS0+aXNIZWFwQmlnSW50KCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6
OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKQEAgLTc2MCw4ICs4MDEsMTcgQEAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGRvdWJsZSYgbnUKICAgICAgICAgdmFsdWUgPSAqdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIEFTU0VSVChpc1VuZGVmaW5lZCgpKTsKLSAgICBudW1iZXIgPSBQTmFOOwor
ICAgIGlmIChpc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG51bWJlciA9IFBOYU47CisgICAgICAg
IHZhbHVlID0gKnRoaXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VS
VChpc0JpZ0ludDMyKCkpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVy
JyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0
aGlzOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4MjUsNDUgQEAgQUxXQVlTX0lO
TElORSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKICAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQog
Ci1BTFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVt
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBK
U1ZhbHVlIEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBj
b25zdAogewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0g
ICAgaWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChp
c0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOworICAgIGlmIChpc0lu
dDMyKCkgfHwgaXNEb3VibGUoKSB8fCBpc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gKnRoaXM7
CiAKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAg
ICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUu
aXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1
ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxX
QVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRP
ckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50
MzIoKTsKKyAgICBpZiAoaXNJbnQzMigpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAq
dGhpczsKICAgICBpZiAoaXNEb3VibGUoKSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlz
QmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgqdGhpcyk7CisgICAgICAgIHJldHVy
biBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CiAKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIDApOwotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFz
QmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChwcmltVmFsdWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQor
ICAgICAgICByZXR1cm4gcHJpbVZhbHVlOworCiAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1
ZS50b0ludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
MCk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBK
U1ZhbHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAt
MTAzMiwzNyArMTA4MywxNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93
Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGRvIHsKLSAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1i
ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7
Ci0KLSAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7Ci0gICAgICAgIGJvb2wgczIgPSB2
Mi5pc1N0cmluZygpOwotICAgICAgICBpZiAoczEgJiYgczIpCi0gICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0
cmluZyh2MikpKTsKLQotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewotICAgICAg
ICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3Qp
OwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAg
ICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0
LCB2MlN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmICh2
Mi5pc051bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYy
LmFzTnVtYmVyKCk7CisgICAgICAgICAgICAvLyBHdWFyYW50ZWVpbmcgdGhhdCBpZiB3ZSBoYXZl
IGEgbnVtYmVyIGl0IGlzIHYyIG1ha2VzIHNvbWUgb2YgdGhlIGNhc2VzIGJlbG93IHNpbXBsZXIu
CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChzMSAmJiB2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjFTdHJpbmcgPSBh
c1N0cmluZyh2MSktPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmln
SW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYxU3RyaW5nKTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IHYxID0gSlNWYWx1ZShuKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAg
ICAgIC8vIFRoaXMgZGVhbHMgd2l0aCBCb29sZWFucywgQmlnSW50MzIsIE9iamVjdHMsIGFuZCBp
cyBhIHNob3J0Y3V0IGZvciBhIGZldyBtb3JlIHR5cGVzLgorICAgICAgICAvLyBJdCBoYXMgdG8g
Y29tZSBoZXJlIGFuZCBub3QgYmVmb3JlLCBiZWNhdXNlIGl0IGlzIE5PVCB0cnVlIHRoYXQgTmFO
ID09IE5hTgorICAgICAgICBpZiAodjEgPT0gdjIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYg
KHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpCkBAIC0xMDgwLDcgKzExMTEsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKUwogCiAgICAgICAgIGlmICh2MS5pc09iamVjdCgpKSB7CiAgICAgICAgICAg
ICBpZiAodjIuaXNPYmplY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB2MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0
IHdpdGggcHJldmlvdXNseQogICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgICAgICAgICB2MSA9IHAxOwpAQCAtMTEwMiw1NiArMTEzMyw4NCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwog
ICAgICAgICBpZiAoc3ltMSB8fCBzeW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0y
KQotICAgICAgICAgICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxyZWFkeSBkZWFs
dCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
CisgICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOworICAgICAgICBib29sIHMyID0gdjIu
aXNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHMxKSB7CisgICAgICAgICAgICBpZiAoczIpCisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFs
KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEs
IHYyKTsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyYW50ZWVkIHRvIGVudGVyIHRoZSBuZXh0
IGNhc2UsIHNvIGxvc2luZyB0aGUgaW52YXJpYW50IG9mIG9ubHkgdjIgYmVpbmcgYSBudW1iZXIg
aXMgZmluZQorICAgICAgICB9CiAgICAgICAgIGlmIChzMSB8fCBzMikgewotICAgICAgICAgICAg
ZG91YmxlIGQxID0gdjEudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGRvdWJsZSBkMiA9IHYy
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAg
ICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBzdHJpbmcgaXMgdjIgKHRoYW5rcyB0byB0
aGUgc3dhcCBhYm92ZSkKKyAgICAgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJpbmcodjIpLT52YWx1ZShnbG9iYWxPYmpl
Y3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICB2MiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChnbG9iYWxPYmpl
Y3QsIHYyU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2MikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICh2MSA9PSB2MikKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEZvciBCaWdJbnQzMgorICAgICAgICAgICAgICAgIC8v
IFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBnZW5lcmljIGNvZGUgZm9yIGNvbXBhcmluZyBCaWdJbnRz
ICh3aGljaCBpcyBvbmx5IG1pc3NpbmcgdGhlIEJpZ0ludDMyL0JpZ0ludDMyIGNhc2UsIGhlbmNl
IHRoZSBjaGVjayBhYm92ZSkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHYxLmlzTnVtYmVyKCkgfHwgdjEuaXNCb29sZWFuKCkpOworICAgICAgICAgICAgICAg
IGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvdWJs
ZSBkMiA9IHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiBkMSA9
PSBkMjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc0Jvb2xl
YW4oKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVy
KCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAg
ICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYx
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2gg
dG8gdGhlIEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdworICAgICAgICAgICAgLy8gV2Ug
anVzdCBuZWVkIG9uZSBtb3JlIHN3YXAgdG8gcmVwYWlyIHRoZSBydWxlIHRoYXQgb25seSB2MiBp
cyBhbGxvd2VkIHRvIGJlIGEgbnVtYmVyIGluIHRoZXNlIGNvbXBhcmlzb25zCisgICAgICAgICAg
ICBzdGQ6OnN3YXAodjEsIHYyKTsKICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkg
ewotICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgdjIg
PSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhl
IEJpZ0ludC9OdW1iZXIgY29tcGFyaXNvbiBiZWxvdwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIoKSkKLSAgICAgICAg
ICAgIHJldHVybiBhc0JpZ0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsKIAotICAgICAgICBp
ZiAodjIuaXNCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFz
QmlnSW50KHYyKS0+ZXF1YWxzVG9OdW1iZXIodjEpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgaWYgKHYxLmlzQmlnSW50MzIoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSW50MzIoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYmlnSW50MzJBc0ludDMyKCkgPT0gdjIuYXNJbnQz
MigpOworICAgICAgICAgICAgaWYgKHYyLmlzRG91YmxlKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYmlnSW50MzJBc0ludDMyKCkpID09IHYyLmFzRG91
YmxlKCk7CisgICAgICAgICAgICBzdGQ6OnN3YXAodjEsIHYyKTsKKyAgICAgICAgfQorI2VuZGlm
IC8vIFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJp
Z0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBp
ZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50
KCktPmVxdWFsc1RvTnVtYmVyKHYyKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB2MSA9
PSB2MjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gd2hpbGUgKHRydWUpOwogfQogCiAv
LyBFQ01BIDExLjkuMwotQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsU2xv
d0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbEZvckNlbGxz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpCiB7
Ci0gICAgQVNTRVJUKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKTsKLQotICAgIGlmICh2MS5h
c0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKKyAgICBpZiAo
djEtPmlzU3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBhc1N0cmlu
Zyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKTsKLSAgICBpZiAodjEuaXNC
aWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFs
cyhhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7CisgICAgaWYgKHYxLT5pc0hlYXBCaWdJbnQo
KSAmJiB2Mi0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxz
KHN0YXRpY19jYXN0PEpTQmlnSW50Kj4odjEpLCBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYyKSk7
CiAgICAgcmV0dXJuIHYxID09IHYyOwogfQogCkBAIC0xMTYzLDEwICsxMjIyLDE3IEBAIGlubGlu
ZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsCiAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIo
KSkKICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKIAotICAg
IGlmICghdjEuaXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdjEgPT0g
djI7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5p
c0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9J
bnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAmJiB2
Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHYyLmFzSGVhcEJpZ0ludCgpLT5lcXVh
bHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxLmlz
Q2VsbCgpICYmIHYyLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gc3RyaWN0RXF1YWxGb3JDZWxs
cyhnbG9iYWxPYmplY3QsIHYxLmFzQ2VsbCgpLCB2Mi5hc0NlbGwoKSk7CiAKLSAgICByZXR1cm4g
c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CisgICAgcmV0
dXJuIHYxID09IHYyOwogfQogCiBpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyRm9yQXJp
dGhtZXRpYygpIGNvbnN0CkBAIC0xMTg0LDE1ICsxMjUwLDIzIEBAIGlubGluZSBUcmlTdGF0ZSBK
U1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICBpZiAo
djEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdHJpU3RhdGUo
djEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpKTsKIAotICAgIGlmICghdjEuaXNDZWxsKCkg
fHwgIXYyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwotICAg
IAotICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJp
bmcoKSkgewotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYx
KS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5n
ID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgaWYgKCF2MVN0cmlu
ZyB8fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKLSAgICAg
ICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNU
b0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKSk7CisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAm
JiB2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYyLmFzSGVhcEJp
Z0ludCgpLT5lcXVhbHNUb0ludDMyKHYxLmJpZ0ludDMyQXNJbnQzMigpKSk7CisjZW5kaWYKKwor
ICAgIGlmICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkgeworICAgICAgICBpZiAodjEuYXND
ZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
ICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1
ZUltcGwoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5nID0gYXNTdHJp
bmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgICAgIGlmICghdjFTdHJpbmcgfHwg
IXYyU3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAg
ICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYy
LmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShK
U0JpZ0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgpLCB2Mi5hc0hlYXBCaWdJbnQoKSkpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwpAQCAtMTIwNiw2ICsx
MjgwLDEwIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGlzTm90WmVyb0FuZE9yZGVyZWQoYXNEb3VibGUoKSkgPyBUcnVlVHJp
U3RhdGUgOiBGYWxzZVRyaVN0YXRlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgp
KQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJ
bnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyNlbmRpZgogICAgIHJldHVy
biBpc1RydWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDEzOTBjNzYxOWFjLi4wNjU5Nzll
ODM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgQ29uc3RydWN0VHlwZSBKU0NlbGw6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIAogYm9vbCBKU0NlbGw6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVu
dGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYg
KGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgp
KQorICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+
aXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0
aXZlKGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogCiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMTIzLDcg
KzEyMyw3IEBAIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpCiBib29sIEpTQ2VsbDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlk
ZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwt
PmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkgeworICAgIGlmIChjZWxsLT5pc1N0cmlu
ZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2VsbCwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb20odm0sIGlkZW50aWZpZXIpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpAQCAtMTYzLDcgKzE2
Myw3IEBAIEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZl
cnJlZFR5cGUpOwogICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVy
cmVkVHlwZSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVm
ZXJyZWRUeXBlKTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIEpTQ2VsbDo6Z2V0UHJpbWl0
aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLCBK
UwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+Z2V0
UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgaWYgKGlz
U3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlz
KS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVtYmVyKGds
b2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTT2JqZWN0Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJl
ciwgdmFsdWUpOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwog
ICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3lt
Ym9sKj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkp
CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3co
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBBU1NFUlQoIWlzT2JqZWN0
KCkpOwogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoaXNC
aWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCmluZGV4IDJiZWY0YTdkOGVjLi4wNmVkNGU3MDkyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcm90ZWN0ZWQ6
CiBwdWJsaWM6CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc1N0cmluZygp
IGNvbnN0OwotICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0lu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDFjOWQxMzI0OGE5Li44
Nzk4YzVhOTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaApAQCAtMjA0LDkgKzIwNCw5IEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAotaW5saW5lIGJv
b2wgSlNDZWxsOjppc0JpZ0ludCgpIGNvbnN0CitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzSGVhcEJp
Z0ludCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBCaWdJbnRUeXBlOworICAgIHJl
dHVybiBtX3R5cGUgPT0gSGVhcEJpZ0ludFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6
aXNTeW1ib2woKSBjb25zdApAQCAtMzQwLDcgKzM0MCw3IEBAIGlubGluZSBib29sIEpTQ2VsbDo6
dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYg
KGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+
KHRoaXMpLT50b0Jvb2xlYW4oKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFw
QmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRo
aXMpLT50b0Jvb2xlYW4oKTsKICAgICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmpl
Y3QpKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpOwogfQpAQCAtMzQ5LDcg
KzM0OSw3IEBAIGlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAog
ewogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigp
ID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAg
ICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCmluZGV4IDIyYzAxMjA1YzJmLi43ZThiMjYwYWY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgaW5saW5l
IGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiAgICAgICAgIHJldHVybiBhc0RvdWJsZSgpID4gMC4wIHx8IGFzRG91YmxlKCkgPCAwLjA7
IC8vIGZhbHNlIGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0Nl
bGwoKS0+dG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
IChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiAhIWJpZ0ludDMyQXNJbnQzMigpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIGlzVHJ1ZSgpOyAvLyBmYWxzZSwgbnVsbCwgYW5kIHVuZGVmaW5lZCBh
bGwgY29udmVydCB0byBmYWxzZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5jcHAKaW5kZXggYjAyYjM0N2Q2YTUuLjgzYmRkOWUxMGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShDZWxs
VHlwZSkKICAgICBDQVNFKFN0cmluZ1R5cGUpCiAgICAgQ0FTRShTeW1ib2xUeXBlKQotICAgIENB
U0UoQmlnSW50VHlwZSkKKyAgICBDQVNFKEhlYXBCaWdJbnRUeXBlKQogICAgIENBU0UoQ3VzdG9t
R2V0dGVyU2V0dGVyVHlwZSkKICAgICBDQVNFKEFQSVZhbHVlV3JhcHBlclR5cGUpCiAgICAgQ0FT
RShOYXRpdmVFeGVjdXRhYmxlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKaW5kZXggNDgzNmY5MWIwYmIuLjc0ZjMxZmY4MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaApAQCAtMjYsOCArMjYsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIC8vIFRoZSBDZWxsVHlwZSB2YWx1ZSBtdXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUg
dGhhdCBpcyBhIEpTQ2VsbC4KICAgICBDZWxsVHlwZSwKICAgICBTdHJpbmdUeXBlLAotICAgIEJp
Z0ludFR5cGUsCi0gICAgTGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZlID0gQmlnSW50VHlwZSwK
KyAgICBIZWFwQmlnSW50VHlwZSwKKyAgICBMYXN0TWF5YmVGYWxzeUNlbGxQcmltaXRpdmUgPSBI
ZWFwQmlnSW50VHlwZSwKICAgICBTeW1ib2xUeXBlLAogCiAgICAgR2V0dGVyU2V0dGVyVHlwZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCAzY2Q3MTNk
ODRmMy4uODhlMzBmMjA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXRPbkZs
YWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0
dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZs
YWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAo
ZmxhZyA+PiA4KTsgfQogCi0gICAgdWludDhfdCBtX3R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsK
ICAgICB1aW50OF90IG1fZmxhZ3M7CiAgICAgdWludDE2X3QgbV9mbGFnczI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXph
dGlvblNjb3BlLmNwcAppbmRleCBjNGViYmVjNTAzNS4uMjdhMjIxYzJlYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0
aW9uU2NvcGUuY3BwCkBAIC0yNiw5ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oIgogCi0jaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2lu
Y2x1ZGUgIlNjcmliYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDQ5MDVkNWJhZjA3Li43NmNjMjUw
YjE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYs
MTEgKzM2LDYgQEAgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4gZXF1YWxTbG93
Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7CiB9CiAKLWJvb2wgSlNWYWx1ZTo6c3Ry
aWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQotewotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGds
b2JhbE9iamVjdCwgdjEsIHYyKTsKLX0KLQogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQogewogICAgIC8vIGV4Y2VwdGlvbiBmb3IgdGhlIERhdGUgZXhjZXB0aW9uIGluIGRlZmF1bHRW
YWx1ZSgpCkBAIC03MywyMSArNjgsMjMgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1YKICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHAxU3Ry
aW5nLCBhc1N0cmluZyhwMikpKTsKICAgICB9CiAKLSAgICBhdXRvIGxlZnROdW1lcmljID0gcDEu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHAyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjphZGQoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGFkZGl0aW9uLiJfcyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzTnVtYmVyKFdURjo6
Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpICsgV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMp
KTsKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+
IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgfTsKKyAgICBhdXRv
IGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVl
IHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3Zl
cmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAgICAgICAg
aWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
cmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0KTsK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjphZGQs
IGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGFkZGl0aW9uLiJfcykpOwogfQogCiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQpAQCAtMTI4
LDcgKzEyNSw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAogICAg
IEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09IFN0cmlu
Z1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkKKyAgICBp
ZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBlID09IEhl
YXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2Jq
ZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA0YmJlMjNjMDcyNS4uYmQwMzFhMmFmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw3ICsyNSw2IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMjM5LDYgKzIzOCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZQogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRp
dmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHYxLCBKU1ZhbHVlIHBy
aW1WYWx1ZSkKK3sKKyAgICBBU1NFUlQocHJpbVZhbHVlLmlzUHJpbWl0aXZlKCkpOworICAgIEFT
U0VSVCghcHJpbVZhbHVlLmlzQmlnSW50KCkpOworCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVl
ID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZh
bHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgICAgICBp
ZiAoIWJpZ0ludFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29u
UmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgaWYgKGJpZ0ludFZhbHVlLmlzSGVhcEJpZ0lu
dCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlKHYxLCBiaWdJbnRWYWx1
ZS5hc0hlYXBCaWdJbnQoKSk7CisKKyAgICAgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlzQmlnSW50
MzIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAvLyBGSVhNRTogdXNlIHNvbWV0aGlu
ZyBsZXNzIGhhY2t5LCBlLmcuIHNvbWUga2luZCBvZiBKU0JpZ0ludDo6Y29tcGFyZVRvSW50MzIK
KyAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0YXRpY19jYXN0
PGRvdWJsZT4oYmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyNlbmRpZgorICAgIH0K
KworICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29u
UmVzdWx0OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRvRG91Ymxl
KHYxLCBudW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJl
UmVzdWx0KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQsIEpTQmln
SW50OjpDb21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBpZiAoY29tcGFyaXNv
bk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKQEAgLTI1NSw1MCAr
MjgzLDQ3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAgIHJl
dHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwg
YXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0lu
dCgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAgICAgIGlmIChwcmlt
VmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0g
SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVl
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVS
ZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRWYWx1ZSksIGNvbXBh
cmlzb25Nb2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQo
KSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21w
YXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBhcmlzb25Nb2RlKTsK
LQotICAgICAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAg
ICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZVRvRG91Ymxl
KGFzQmlnSW50KHYxKSwgbnVtYmVyVmFsdWUpLCBjb21wYXJpc29uTW9kZSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNCaWdJbnQzMigpKSB7Cisg
ICAgICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxl
c3NUaGFuKQorICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDwgdjIuYmln
SW50MzJBc0ludDMyKCk7CisgICAgICAgIEFTU0VSVChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0lu
dDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuT3JFcXVhbCk7CisgICAgICAgIHJldHVybiB2MS5i
aWdJbnQzMkFzSW50MzIoKSA8PSB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKICAgICB9Ci0gICAgCi0g
ICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3RyaW5nKCkp
IHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KSk7CisjZW5kaWYKKworICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJbnQgPSBudWxscHRyOworICAg
IEpTQmlnSW50KiB2MkhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBoYXZlIHNv
bWUgZmFzdC1pc2ggcGF0aCBmb3IgYSBjb21wYXJpc29uIGJldHdlZW4gYSBzbWFsbCBhbmQgYSBs
YXJnZSBiaWctaW50CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2MUhlYXBC
aWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBp
ZiAodjEuaXNCaWdJbnQzMigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgdjEuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBpZiAodjIu
aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHYySGVhcEJpZ0ludCA9IHYyLmFzSGVhcEJpZ0ludCgp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludDMyKCkpCisgICAg
ICAgIHYySGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2Mi5iaWdJbnQzMkFz
SW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFwQmlnSW50
KQorICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZSh2
MUhlYXBCaWdJbnQsIHYySGVhcEJpZ0ludCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAgIGlmICh2
MUhlYXBCaWdJbnQpIHsKKyAgICAgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJp
Z0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYyKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBpZiAoIWJp
Z0ludFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBi
aWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGJpZ0ludFZhbHVlLCBhc0JpZ0lu
dCh2MikpLCBjb21wYXJpc29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KGNvbXBhcmlzb25SZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAgCi0gICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJl
c3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludChwcmltVmFsdWUpLCBhc0JpZ0ludCh2Mikp
LCBjb21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwogCisgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRv
T3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJbnQsIHYxKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgLy8gSGVyZSB3ZSBjaGVjayBpbnZl
cnRlZCBiZWNhdXNlIEJpZ0ludCBpcyB0aGUgdjIKLSAgICBKU0JpZ0ludDo6Q29tcGFyaXNvblJl
c3VsdCBjb21wYXJpc29uUmVzdWx0ID0gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShhc0JpZ0lu
dCh2MiksIG51bWJlclZhbHVlKTsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6
OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1
bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOwotCiAgICAgcmV0
dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0
ZXJUaGFuIHx8IGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6
OkVxdWFsOwogfQogCkBAIC0zNTcsNyArMzgyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpzTGVz
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQog
ICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBpZiAo
d2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3RyaW5nMSB8
fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmln
SW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBh
cmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1Ro
YW4pKTsKIApAQCAtNDA3LDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3NFcShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAg
fQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNO
b3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdh
c05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQo
KSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShn
bG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9y
RXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzcsMzQ5IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
CiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsKIH0KIAot
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRzIG9wZXJh
bmRzIHVuYm94ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxsCit0ZW1w
bGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVPcGVyYXRp
b24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJpdGhtZXRp
Y0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9wZXJhdGlv
biYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciogZXJyb3JN
ZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRvIHJpZ2h0
TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmlnaHRO
dW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlm
IChsZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigpKQorICAg
ICAgICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIoKSwgcmln
aHROdW1lcmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVm
dE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNCaWdJ
bnQzMigpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQzMk9wKGxl
ZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBKU0JpZ0lu
dCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0lu
dCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMy
KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3Ao
Z2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3Mp
OworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAg
ICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVm
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmln
aHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGxl
ZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNC
aWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxP
YmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQpKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxl
ZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsK
ICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShiaWdJbnQzMk9wKTsKKyAgICBpZiAobGVm
dE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmpl
Y3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50
KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8
ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAt
IHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwg
aW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBD
aGVja2VkPGludDMyX3QsIFJlY29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICBy
ZXN1bHQgLT0gcmlnaHQ7CisgICAgICAgIGlmIChVTkxJS0VMWShyZXN1bHQuaGFzT3ZlcmZsb3dl
ZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHJlc3VsdC51bnNhZmVHZXQoKSk7CisjZWxzZQorICAg
ICAgICBVTlVTRURfUEFSQU0obGVmdCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShyaWdodCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICB9OworCisg
ICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJ
bnQ6OnN1YiwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJp
Z2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAqIHJpZ2h0OworICAgIH07Cisg
ICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4g
SlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkPGludDMyX3QsIFJl
Y29yZE92ZXJmbG93PiByZXN1bHQgPSBsZWZ0OworICAgICAgICByZXN1bHQgKj0gcmlnaHQ7Cisg
ICAgICAgIGlmIChyZXN1bHQuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVz
dWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9w
KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6bXVsdGlwbHksIGRvdWJsZU9wLCBiaWdJ
bnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIG11bHRpcGxp
Y2F0aW9uLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0RpdihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
ZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAg
ICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9
IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGxlZnQgLyBy
aWdodCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0obGVmdCk7CisgICAgICAgIFVOVVNF
RF9QQVJBTShyaWdodCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmRpdmlkZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZGl2aXNpb24uIl9zKTsKK30KKwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzUmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtd
IChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4g
anNNb2QobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGlu
dDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRo
aW5nIG1vcmUgY2xldmVyIGhlcmUuCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgfTsK
KworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpT
QmlnSW50OjpyZW1haW5kZXIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlci4iX3MpOworfQorCitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNQb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBk
b3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93
KGxlZnQsIHJpZ2h0KTsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90
LCBpbnQzMl90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgLy8gRXhwb25lbnRpYXRpb24gb24gaW50
ZWdlcnMgaXMgYm90aCBzb21ld2hhdCBzbG93IGluIHRoZSBiZXN0IGNhc2UsIGFuZCB2ZXJ5IGxp
a2VseSB0byBvdmVyZmxvdy4KKyAgICAgICAgLy8gU28gZG9uJ3QgYm90aGVyIHRyeWluZyB0byBh
dm9pZCBhIGhlYXAgYWxsb2NhdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpleHBvbmVudGlhdGUsIGRvdWJsZU9wLCBiaWdJbnQzMk9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGV4cG9uZW50aWF0aW9u
LiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0luYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNO
dW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1lcmljLmFzTnVtYmVy
KCkgKyAxKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFuZE51bWVyaWMuaXNC
aWdJbnQzMigpKSB7CisgICAgICAgIGludDY0X3QgbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2
NF90PihvcGVyYW5kTnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgKyAxOworICAgICAgICAvLyBG
SVhNRTogdGhlIGZvbGxvd2luZyBuZXh0IGZldyBsaW5lcyBtaWdodCBiZW5lZml0IGZyb20gYmVp
bmcgbWFkZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIGlmIChuZXdWYWx1ZSA+IElO
VF9NQVgpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIG5ld1Zh
bHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4obmV3VmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChv
cGVyYW5kTnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVyaWMuYXNIZWFwQmln
SW50KCkpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGVjKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5p
c051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1i
ZXIoKSAtIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5p
c0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSAtIDE7CisgICAgICAgIC8v
IEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBi
ZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlIDwg
SU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3
VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0
aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJU
KG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBC
aWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlTm90KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChv
cGVyYW5kTnVtZXJpYy5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcih+b3BlcmFu
ZE51bWVyaWMuYXNJbnQzMigpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAob3BlcmFu
ZE51bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCB+b3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisK
KyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVy
YW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
c2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MiwgYm9vbCBpc0xlZnQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFZhcmlhbnQ8SlNC
aWdJbnQqLCBkb3VibGU+IGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgVmFyaWFudDxKU0Jp
Z0ludCosIGRvdWJsZT4gcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJp
Z2h0TnVtZXJpYy5pc0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBsZWZ0SW50MzIgPSBsZWZ0
TnVtZXJpYy5hc0ludDMyKCk7CisgICAgICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVt
ZXJpYy5hc0ludDMyKCkgJiAzMTsKKyAgICAgICAgaW50MzJfdCByZXN1bHQgPSBpc0xlZnQgPyAo
bGVmdEludDMyIDw8IHJpZ2h0SW50MzIpIDogKGxlZnRJbnQzMiA+PiByaWdodEludDMyKTsKKyAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CisgICAgfQorCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzQmln
SW50MzIoKSkgeworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpbnQzMl90IHJpZ2h0SW50MzIgPSByaWdodE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmIChyaWdodEludDMyIDwgMCkgeworICAgICAg
ICAgICAgaXNMZWZ0ID0gIWlzTGVmdDsKKyAgICAgICAgICAgIHJpZ2h0SW50MzIgPSAtcmlnaHRJ
bnQzMjsKICAgICAgICAgfQogCi0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGlj
YXRpb24uIl9zKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgLy8gVGhpcyBzdGQ6Om1p
biBpcyBhIGJpdCBoYWNreSwgYnV0IHJlcXVpcmVkIGJlY2F1c2UgaW4gQysrIGl0IGlzIHVuZGVm
aW5lZCBiZWhhdmlvciB0byBkbyBhIHNoaWZ0IHdoZXJlIHRoZSByaWdodCBvcGVyYW5kIGlzIGdy
ZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGJpdC13aWR0aCBvZiB0aGUgbGVmdCBvcGVyYW5kLgorICAg
ICAgICBpZiAoIWlzTGVmdCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIGxlZnRJbnQzMiA+PiBzdGQ6Om1pbihyaWdodEludDMyLCAzMSkpOworCisgICAg
ICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgbGVmdCBzaGlmdCB3ZSBjYW4gb3ZlcmZsb3cuIEkgZGVh
bCB3aXRoIHRoaXMgYnkgYWxsb2NhdGluZyBIZWFwQmlnSW50cy4KKyAgICAgICAgLy8gRklYTUU6
IGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGRvIHNvbWV0aGluZyBzbWFydGVyLCB0cnlpbmcgdG8g
ZG8gdGhlIGxlZnQgc2hpZnQgYW5kIGRldGVjdGluZyBzb21laG93IGlmIGl0IG92ZXJmbG93ZWQu
CisgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCBsZWZ0SW50MzIpOworICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0SW50MzIpOworICAgICAgICBpZiAoaXNMZWZ0KQor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6bGVmdFNoaWZ0
KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGds
b2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwogICAgIH0KKyNl
bmRpZgorCisgICAgaWYgKCEobGVmdE51bWVyaWMuaXNCaWdJbnQoKSAmJiByaWdodE51bWVyaWMu
aXNCaWdJbnQoKSkpIHsKKyAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBpc0xlZnQgPyAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9u
LiIgOiAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdo
dCBzaGlmdCBvcGVyYXRpb24uIjsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgLy8gRklYTUU6IHdl
IHNob3VsZCBoYXZlIGEgY2FzZSBmb3IgbGVmdCBpcyBIZWFwQmlnSW50IGFuZCByaWdodCBpcyBC
aWdJbnQzMiwgaXQgc2VlbXMgZmFpcmx5IGxpa2VseSB0byBvY2N1ciBmcmVxdWVudGx5LgorI2lm
IFVTRShCSUdJTlQzMikKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmln
SW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJ
bnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmln
SW50ID0gbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVh
cEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgaWYg
KGlzTGVmdCkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6bGVm
dFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdEhlYXBCaWdJbnQsIHJpZ2h0SGVhcEJpZ0ludCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQo
Z2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0xTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJvb2wgaXNMZWZ0ID0gdHJ1ZTsKKyAg
ICByZXR1cm4gc2hpZnQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIGlzTGVmdCk7Cit9CiAKLSAgICBk
b3VibGUgbGVmdFZhbHVlID0gIFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRv
dWJsZSByaWdodFZhbHVlID0gIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBy
ZXR1cm4ganNOdW1iZXIobGVmdFZhbHVlICogcmlnaHRWYWx1ZSk7CitBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKK3sKKyAgICBib29sIGlzTGVmdCA9IGZhbHNlOworICAgIHJldHVybiBzaGlm
dChnbG9iYWxPYmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsKIH0KIAotaW5saW5lIGJvb2wgc2NyaWJi
bGVGcmVlQ2VsbHMoKQordGVtcGxhdGU8dHlwZW5hbWUgSGVhcEJpZ0ludE9wZXJhdGlvbiwgdHlw
ZW5hbWUgSW50MzJPcGVyYXRpb24+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYml0d2lzZUJpbmFy
eU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIs
IEhlYXBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwgSW50MzJPcGVyYXRpb24mJiBpbnQzMk9w
LCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVE
IHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGF1dG8gcmlnaHROdW1l
cmljID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYg
cmlnaHROdW1lcmljLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGludDMyT3Ao
bGVmdE51bWVyaWMuYXNJbnQzMigpLCByaWdodE51bWVyaWMuYXNJbnQzMigpKSk7CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSAmJiByaWdodE51
bWVyaWMuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0Jp
Z0ludDMyLCBpbnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAgICAvLyBGSVhNRTogYWRkIGZhc3QgcGF0aCBmb3Ig
QmlnSW50MzIgLyBIZWFwQmlnSW50LCBhbmQgZm9yIEhlYXBCaWdJbnQgLyBCaWdJbnQzMgorICAg
IC8vIEluIG1hbnkgY2FzZXMgdGhlc2UgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVudCB0aGFu
IGhlYXAtYWxsb2NhdGluZyB0aGUgc21hbGwgYmlnLWludCBhbmQgZ29pbmcgdGhyb3VnaCB0aGUg
Z2VuZXJpYyBwYXRoLgorICAgIC8vIEJ1dCBpdCBpcyBxdWl0ZSB0cmlja3ksIG5vdCBsZWFzdCBi
ZWNhdXNlIEhlYXBCaWdJbnQgdXNlIGEgc2lnbiBiaXQgd2hlcmVhcyBCaWdJbnQzMiB1c2UgMi1j
b21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJp
Yy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVy
aWMuaXNCaWdJbnQzMigpID8gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSA6IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmln
SW50KiByaWdodEhlYXBCaWdJbnQgPSByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpID8gSlNCaWdJ
bnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiByaWdo
dE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZWxzZQorICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJp
Z0ludCA9IGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworICAgIEpTQmlnSW50KiByaWdodEhl
YXBCaWdJbnQgPSByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisjZW5kaWYKKworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJp
Z0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiB9CiAKLSNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0Jp
dHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKK3sKKyAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJp
Z2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsKKyAgICB9Owor
CisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJv
eCB0aGVtLCBkbyB0aGUgImFuZCIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRv
IGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3Ao
Z2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlQW5kLCBpbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0
aW9uLiJfcyk7Cit9CiAKLWlubGluZSBib29sIGlzU2NyaWJibGVkVmFsdWUoSlNWYWx1ZSB2YWx1
ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VPcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogewotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4o
U0NSSUJCTEVfV09SRCkpOworICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0Owor
ICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIs
IHdlIHVuYm94IHRoZW0sIGRvIHRoZSAib3IiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBj
b3VsZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZS4KKyAgICByZXR1cm4gYml0d2lzZUJp
bmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZU9yLCBpbnQzMk9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBv
cGVyYXRpb24uIl9zKTsKIH0KIAotaW5saW5lIHZvaWQgc2NyaWJibGUodm9pZCogYmFzZSwgc2l6
ZV90IHNpemUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNCaXR3aXNlWG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgZm9yIChz
aXplX3QgaSA9IHNpemUgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOyBpLS07KSB7Ci0gICAgICAg
IC8vIFVzZSBhIDE2LWJ5dGUgYWxpZ25lZCB2YWx1ZSB0byBlbnN1cmUgdGhhdCBpdCBwYXNzZXMg
dGhlIGNlbGwgY2hlY2suCi0gICAgICAgIHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oYmFz
ZSlbaV0gPSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dP
UkQpKTsKLSAgICB9CisgICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJf
dCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0IF4gcmlnaHQ7CisgICAg
fTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2Ug
dW5ib3ggdGhlbSwgZG8gdGhlICJ4b3IiIGFuZCByZS1ib3ggdGhlbS4KKyAgICAvLyBXZSBjb3Vs
ZCBkbyBpdCBkaXJlY3RseSBvbiB0aGUgSlNWYWx1ZSwgYW5kIGp1c3QgcmVtZW1iZXIgdG8gZG8g
YW4gb3Igd2l0aCAweDEyIGF0IHRoZSBlbmQgdG8gcmVzdG9yZSB0aGUgdGFnCisgICAgcmV0dXJu
IGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJpdHdpc2VY
b3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0
d2lzZSAneG9yJyBvcGVyYXRpb24uIl9zKTsKIH0KIAogQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSBnZXRCeVZhbFdpdGhJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIGJhc2UsIHVpbnQzMl90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NyaWJibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmliYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZiZGVmMWNj
ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aWJibGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiT3B0
aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wgc2NyaWJibGVGcmVlQ2Vs
bHMoKQoreworICAgIHJldHVybiBBU1NFUlRfRU5BQkxFRCB8fCBPcHRpb25zOjpzY3JpYmJsZUZy
ZWVDZWxscygpOworfQorCisjZGVmaW5lIFNDUklCQkxFX1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KDB4YmFkYmVlZjApCisKK2lubGluZSBib29sIGlzU2NyaWJibGVkVmFsdWUoSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSA9PSBKU1ZhbHVlOjpl
bmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQpKTsKK30KKworaW5saW5l
IHZvaWQgc2NyaWJibGUodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IHNpemUgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOyBpLS07KSB7CisgICAgICAgIC8v
IFVzZSBhIDE2LWJ5dGUgYWxpZ25lZCB2YWx1ZSB0byBlbnN1cmUgdGhhdCBpdCBwYXNzZXMgdGhl
IGNlbGwgY2hlY2suCisgICAgICAgIHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oYmFzZSlb
aV0gPSBKU1ZhbHVlOjplbmNvZGUoYml0d2lzZV9jYXN0PEpTQ2VsbCo+KFNDUklCQkxFX1dPUkQp
KTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAppbmRleCA1ZmE3MDEzY2I3Zi4uZjE2YzAyYTc2ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTI3
OSw3ICsyNzksNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwUHJp
bWl0aXZlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIGlmIChzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUpCiAgICAgICAgIHJldHVybiBnbG9iYWxP
YmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOwogICAgIAotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpID09IEJpZ0ludFR5cGUpCisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
PmJpZ0ludFByb3RvdHlwZSgpOwogCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gU3ltYm9sVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggMWE5Mjk2ZGEyNjAuLjQ1ZWMwOTNjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgICAgICBzZW50aW5lbE1hcEJ1Y2tldCgpOwogICAgICAgICBzZW50aW5l
bFNldEJ1Y2tldCgpOwogICAgIH0KLSAgICBiaWdJbnRDb25zdGFudE9uZS5zZXQoKnRoaXMsIEpT
QmlnSW50OjpjcmVhdGVGcm9tKCp0aGlzLCAxKSk7CisgICAgaGVhcEJpZ0ludENvbnN0YW50T25l
LnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20oKnRoaXMsIDEpKTsKIAogICAgIFRocmVh
ZDo6Y3VycmVudCgpLnNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21T
dHJpbmdUYWJsZSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkMzY2
MGJiMDE3My4uOWVjZjE2Yjg0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
NzI3LDcgKzcyNyw3IEBAIHB1YmxpYzoKICAgICBBdG9tU3RyaW5nVGFibGUqIGF0b21TdHJpbmdU
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbVN0cmluZ1RhYmxlOyB9CiAgICAgV1RGOjpTeW1i
b2xSZWdpc3RyeSYgc3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3N5bWJvbFJlZ2lzdHJ5OyB9
CiAKLSAgICBTdHJvbmc8SlNCaWdJbnQ+IGJpZ0ludENvbnN0YW50T25lOworICAgIFN0cm9uZzxK
U0JpZ0ludD4gaGVhcEJpZ0ludENvbnN0YW50T25lOwogCiAgICAgU3RydWN0dXJlKiBzZXRJdGVy
YXRvclN0cnVjdHVyZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCmluZGV4IDhiMDZiZWMyOWNkLi4yYzAwOWI2Y2ZhMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjIwNSw3ICsyMjA1LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsV2l0aFN0YWNrU2l6
ZShKU0dsb2JhbE9iamVjdCogZ2wKICAgICB1aW50OF90KiB2bVN0YWNrRW5kID0gdm1TdGFja1N0
YXJ0IC0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlOwogICAgIHB0cmRpZmZfdCBzaXpl
RGlmZiA9IHZtU3RhY2tFbmQgLSBlbmQ7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYgPj0g
MCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYgPCBVSU5UX01BWCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemVEaWZmKSA8IFVJTlRfTUFYKTsKIAog
ICAgIE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNhZ2UoKSA9IG9yaWdpbmFsTWF4UGVyVGhy
ZWFkU3RhY2tVc2FnZSArIHNpemVEaWZmOwogICAgIGhlbHBlci51cGRhdGVWTVN0YWNrTGltaXRz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGUwMzk0YjdiZTViLi44ZTkzODg2YTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMC0wNC0wNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAg
ICAgIFN1cHBvcnQgYW4gaW5saW5lZCByZXByZXNlbnRhdGlvbiBpbiBKU1ZhbHVlIG9mIHNtYWxs
IEJpZ0ludHMgKCJCaWdJbnQzMiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDYxODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBVU0UoQklHSU5UMzIpIGZsYWcuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1Vc2UuaDoKKwogMjAyMC0wNC0xNCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkb3B0IGludGVyZmFjZSBBVkF1ZGlvUm91dGluZ0FyYml0ZXIgZm9y
IE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggMzY5NjQ3ZThiOWEuLmQ2ZWY4ZDRlMGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlLmgKQEAgLTEzOSw2ICsxMzksMTAgQEAKICNlbmRpZgogI2VuZGlmIC8qICFk
ZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQpICovCiAK
KyNpZiBVU0UoSlNWQUxVRTY0KQorI2RlZmluZSBVU0VfQklHSU5UMzIgMQorI2VuZGlmCisKIC8q
IEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJlIG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMgb25seSBm
b3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwogLyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNz
KDEpIHRvIGdldCBDYWxsRnJhbWUqICovCiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYm
IChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
aW5kZXggYzRlMDhmMGZmNGYuLmIwNTc5OTNjOTdmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKQEAgLTcwMiw2ICs3MDIsMTQgQEAgZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlvbmFs
VGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVzZUJp
Z0ludD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
KQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkTm9KSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmlj
T3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZC1ub2ppdCIsICItLXVzZUJpZ0ludD10
cnVlIiwgIi0tdXNlSklUPWZhbHNlIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKK2Vu
ZAorCitkZWYgcnVuQmlnSW50RW5hYmxlZEJhc2VsaW5lKCpvcHRpb25hbFRlc3RTcGVjaWZpY09w
dGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtYmFzZWxpbmUiLCAiLS11c2VCaWdJbnQ9
dHJ1ZSIsICItLXVzZURGR0pJVD0wIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKK2Vu
ZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAg
cnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyAr
IG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396728</attachid>
            <date>2020-04-16 17:36:44 -0700</date>
            <delta_ts>2020-04-18 00:34:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>408008</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZDU0YjEyOGMyNjYuLjBiN2ViNmE4NDgzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aW1wcm92ZWQgdmFyaW91cyBvZiB0aGUgdGVzdHMgdG8gZ2l2ZSBtb3JlIGluZm9ybWF0aXZlIGVy
cm9yIG1lc3NhZ2VzIGluIHRoZSBwcm9jZXNzIG9mIGZpeGluZyB0aGVtLgorCisgICAgICAgIE1v
cmUgaW50ZXJlc3RpbmdseSBJIGhhZCB0byBtb2RpZnkgIm1pc3NpbmctZXhjZXB0aW9uLWNoZWNr
LWluLXN0cmluZy1jb21wYXJlIiBiZWNhdXNlIGl0IHJlbGllZCBvbiAiczEgPT0gczEiIHJlc29s
dmluZyByb3BlcywgYW5kIHdlIG5vdyBqdXN0IHJldHVybiB0cnVlLgorCisgICAgICAgICogc3Ry
ZXNzL2JpZy1pbnQtZGl2aXNpb24uanM6CisgICAgICAgICh0ZXN0RGl2KToKKyAgICAgICAgKiBz
dHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanM6CisgICAgICAgIChhc3Nl
cnQuc2FtZVZhbHVlKToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qczoK
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qczoK
KyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1yaWdodC1zaGlmdC1nZW5lcmFsLmpzOgorICAgICAg
ICAodGVzdFJpZ2h0U2hpZnQpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXR5cGUtb2YtcHJv
dmVuLXR5cGUuanM6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJl
LXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2Fs
bCk6CisgICAgICAgICogc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzOgorICAg
ICAgICAqIHN0cmVzcy9taXNzaW5nLWV4Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5q
czoKKwogMjAyMC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJlZHVjZSAjIG9mIGl0ZXJhdGlvbiBzaW5jZSB0aGlzIHRlc3Qg
aXMgdGltZWQgb3V0IGluIHNsb3cgZGV2aWNlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1kaXZpc2lvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMK
aW5kZXggNDAxODkwYWQ2MzEuLjNlNTEwYjlkODk3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LWRpdmlzaW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNp
b24uanMKQEAgLTEsNCArMSw1IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAorLy9AIHJ1bkJpZ0lu
dEVuYWJsZWROb0pJVAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgUm9iaW4gVGVtcGxldG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0Qg
bGljZW5zZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgpAQCAtMTQsNyArMTUsNyBAQCBhc3Nl
cnQuc2FtZVZhbHVlID0gZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogfQog
CiBmdW5jdGlvbiB0ZXN0RGl2KHgsIHksIHopIHsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKHggLyB5
LCB6LCB4ICsgIiAvICIgKyB5ICsgIiA9ICIgKyB6KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHgg
LyB5LCB6LCB4ICsgIiAvICIgKyB5ICsgIiA9ICIgKyAoeC95KSArICIgYnV0IHNob3VsZCBiZSAi
ICsgeik7CiB9CiAKIHRlc3REaXYoMHhGRURDQkE5ODc2NTQzMjEwbiwgMHhGRURDQkE5ODc2NTQz
MjEwbiwgMHgxbik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hp
ZnQtd3JhcHBlZC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13
cmFwcGVkLXZhbHVlLmpzCmluZGV4IGM2OWRiZGEzM2QzLi5mODEyYjFjYmE0MSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMKQEAg
LTMsNyArMyw3IEBACiBhc3NlcnQgPSB7CiAgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoaW5wdXQs
IGV4cGVjdGVkLCBtZXNzYWdlKSB7CiAgICAgICAgIGlmIChpbnB1dCAhPT0gZXhwZWN0ZWQpCi0g
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7CisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IobWVzc2FnZSArICIgaW5wdXQ6ICIgKyBpbnB1dCArICIgIT0gZXhwZWN0ZWQ6ICIg
KyBleHBlY3RlZCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1sb2dpY2FsLW5vdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3Qu
anMKaW5kZXggYWYyOGE3MmIxYzMuLmQwMmU1NTJmOWM3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bG9naWNhbC1ub3QuanMKQEAgLTEsOCArMSw4IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAogCi1m
dW5jdGlvbiBhc3NlcnQoYSwgZSkgeworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG4pIHsKICAgICBp
ZiAoYSAhPT0gZSkgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCEiKTsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgbG9naWNhbCBuZWdhdGlvbiBmb3IgIiArIG4pOwogICAgIH0K
IH0KIApAQCAtMTIsOSArMTIsOSBAQCBmdW5jdGlvbiBsb2dpY2FsTm90KGEpIHsKIG5vSW5saW5l
KGxvZ2ljYWxOb3QpOwogCiBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAg
YXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFsc2UpOwotICAgIGFzc2VydChsb2dpY2FsTm90KDFu
KSwgZmFsc2UpOwotICAgIGFzc2VydChsb2dpY2FsTm90KDBuKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0
KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UpOworICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZh
bHNlLCAxMG4pOworICAgIGFzc2VydChsb2dpY2FsTm90KDFuKSwgZmFsc2UsIDFuKTsKKyAgICBh
c3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUsIDBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgt
MW4pLCBmYWxzZSwgLTFuKTsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1tb2Qtaml0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzCmluZGV4IDgx
YzVkYTdjNWJjLi44NTk1NDBjODUzMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1tb2Qtaml0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwpAQCAt
MjUsOSArMjUsOSBAQCBub0lubGluZShiaWdJbnRNb2RGb2xkaW5nKTsKIAogZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgbGV0IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwLCAz
MCk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTAsICItKCIgKyAxMCArICIgJSAiICsgMzAg
KyAiKSA9ICIgKyByKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHIsIC0xMCwgIltOdW1iZXJdIC0o
IiArIDEwICsgIiAlICIgKyAzMCArICIpID0gIiArIHIpOwogfQogCiBsZXQgciA9IGJpZ0ludE1v
ZEZvbGRpbmcoMTBuLCAzMG4pOwotYXNzZXJ0LnNhbWVWYWx1ZShyLCAtMTBuLCAiLSgiICsgMTBu
ICsgIiAlICIgKyAzMG4gKyAiKSA9ICIgKyByKTsKK2Fzc2VydC5zYW1lVmFsdWUociwgLTEwbiwg
IltCaWdJbnRdIC0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7CiAKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbXVsdGlwbGljYXRpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LW11bHRpcGxpY2F0aW9uLmpzCmluZGV4IDNlY2Q2MzZkN2Y4Li43Y2U1
YWNmZmNmYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlv
bi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxpY2F0aW9uLmpzCkBAIC0x
LDE4ICsxLDE4IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAorLy9AIHJ1bkJpZ0ludEVuYWJsZWRO
b0pJVAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgUm9iaW4gVGVtcGxldG9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0QgbGljZW5zZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCi1hc3NlcnQgPSB7Ci0gICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Ci0gICAgaWYgKGlucHV0ICE9PSBl
eHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOwotICAgIH0KLX07Citm
dW5jdGlvbiB0ZXN0T25lTXVsKHgsIHksIHopIHsKKyAgICBsZXQgcmVzdWx0ID0geCAqIHk7Cisg
ICAgaWYgKHJlc3VsdCAhPT0geikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb21wdXRpbmcg
IiArIHggKyAiICogIiArIHkgKyAiIHJlc3VsdGVkIGluICIgKyByZXN1bHQgKyAiIGluc3RlYWQg
b2YgdGhlIGV4cGVjdGVkICIgKyB6KTsKK30KIAogZnVuY3Rpb24gdGVzdE11bCh4LCB5LCB6KSB7
Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZSh4ICogeSwgeiwgeCArICIgKiAiICsgeSArICIgPSAiICsg
eik7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZSh5ICogeCwgeiwgeSArICIgKiAiICsgeCArICIgPSAi
ICsgeik7CisgICAgdGVzdE9uZU11bCh4LCB5LCB6KTsKKyAgICB0ZXN0T25lTXVsKHksIHgsIHop
OwogfQogCiB0ZXN0TXVsKDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkVEQ0JBOTg3NjU0MzIxMG4s
IDB4RkRCQUMwOTdDOERDNUFDQ0RFRUM2Q0Q3QTQ0QTQxMDBuKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2VuZXJhbC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2VuZXJhbC5qcwppbmRleCA0ZTU4Y2E2MDc0MC4uY2IyZjY5
NTA1NzUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2Vu
ZXJhbC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwu
anMKQEAgLTIsMTAzICsyLDYyIEBACiAKIC8vIENvcHlyaWdodCAoQykgMjAxNyBKb3NoIFdvbGZl
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBC
U0QgbGljZW5zZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8gTW9kaWZpZWQgYnkgQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlLgogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlmICgh
YSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlvbiB0
ZXN0UmlnaHRTaGlmdChsZWZ0LCByaWdodCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIHJlc3VsdCA9
IGxlZnQgPj4gcmlnaHQ7CisgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiIiArIGxlZnQgKyAiLCAiICsgcmlnaHQgKyAiIHJlc3VsdGVkIGluICIg
KyByZXN1bHQgKyAiIGJ1dCBleHBlY3RlZCAiICsgZXhwZWN0ZWQpOwogfQogCi1hc3NlcnQuc2Ft
ZVZhbHVlID0gZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlmIChp
bnB1dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMCA7ICsraSkgeworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAw
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgLTFuLCAwYjEwMTBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0ybiwgMGIxMDEwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDBiMTAxbiwgLTNuLCAwYjEwMTAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgMW4s
IDBiMTBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDJuLCAxbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMGIxMDFuLCAzbiwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAtMTI4biwg
MG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoMHgyNDZuLCAwbiwgMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjdu
LCAweDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgyNDZuLCAtMTI4biwgMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIDEyOG4s
IDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biwgLTY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
ODAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0xNm4sIDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDE2biwgMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwg
MTI3biwgMHgyNDY4YWNuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI4biwgMHgxMjM0NTZuKTsKKyAgICB0ZXN0UmlnaHRT
aGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwgMHg5
MWEyYm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTFuLCAtMHhhbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoLTVuLCAtMm4sIC0weDE0bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAtM24s
IC0weDI4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAxbiwgLTNuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgtNW4sIDJuLCAtMm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgM24sIC0xbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAwbiwgLTFuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgtMW4sIDEyOG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MjQ2
biwgMG4sIC0weDI0Nm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIC0xMjduLCAtMHgx
MjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC0weDI0Nm4sIC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4p
OworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIC0xMjluLCAtMHg0OGMwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDEyOG4s
IC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuLCAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0xNm4sIC0weDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMG4sIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzVuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDMybiwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMzbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyN24sIC0weDI0NjhhZG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI4biwgLTB4MTIzNDU3
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuLCAxMjluLCAtMHg5MWEyY24pOwogfQotCi1hc3NlcnQuc2FtZVZhbHVlKDBuID4+
IDBuLCAwbiwgIjBuID4+IDBuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4g
LTFuLCAwYjEwMTBuLCAiMGIxMDFuID4+IC0xbiA9PT0gMGIxMDEwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgwYjEwMW4gPj4gLTJuLCAwYjEwMTAwbiwgIjBiMTAxbiA+PiAtMm4gPT09IDBiMTAxMDBu
Iik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBiMTAxbiA+PiAtM24sIDBiMTAxMDAwbiwgIjBiMTAxbiA+
PiAtM24gPT09IDBiMTAxMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gMW4sIDBi
MTBuLCAiMGIxMDFuID4+IDFuID09PSAwYjEwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4g
Pj4gMm4sIDFuLCAiMGIxMDFuID4+IDJuID09PSAxbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEw
MW4gPj4gM24sIDBuLCAiMGIxMDFuID4+IDNuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgw
biA+PiAtMTI4biwgMG4sICIwbiA+PiAtMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
MG4gPj4gMTI4biwgMG4sICIwbiA+PiAxMjhuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgw
eDI0Nm4gPj4gMG4sIDB4MjQ2biwgIjB4MjQ2biA+PiAwbiA9PT0gMHgyNDZuIik7Ci1hc3NlcnQu
c2FtZVZhbHVlKDB4MjQ2biA+PiAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMG4sICIweDI0Nm4gPj4gLTEyN24gPT09IDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAtMTI4biwgMHgyNDYw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICIweDI0Nm4gPj4gLTEyOG4gPT09IDB4
MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KDB4MjQ2biA+PiAtMTI5biwgMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4s
ICIweDI0Nm4gPj4gLTEyOW4gPT09IDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAxMjhuLCAwbiwgIjB4MjQ2biA+PiAx
MjhuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAot
ICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuLAotICAiMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiA9PT0gMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2
biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuIik7Ci1hc3NlcnQuc2FtZVZh
bHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAwbiwg
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICIweDEyMzQ1Njc4
OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAwbiA9PT0gMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IDE2biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
Mm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4g
PT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gNjRuLCAw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4gPj4gNjRuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAxMjduLCAweDI0NjhhY24sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAxMjduID09PSAweDI0NjhhY24iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4sIDB4
MTIzNDU2biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyOG4gPT09IDB4MTIzNDU2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biwgMHg5MWEyYm4sCi0gICIweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluID09PSAweDkxYTJi
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTFuLCAtMHhhbiwgIi01biA+PiAtMW4gPT09
IC0weGFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAtMm4sIC0weDE0biwgIi01biA+PiAt
Mm4gPT09IC0weDE0biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTNuLCAtMHgyOG4sICIt
NW4gPj4gLTNuID09PSAtMHgyOG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDFuLCAtM24s
ICItNW4gPj4gMW4gPT09IC0zbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gMm4sIC0ybiwg
Ii01biA+PiAybiA9PT0gLTJuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAzbiwgLTFuLCAi
LTVuID4+IDNuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTFuID4+IC0xMjhuLCAtMHgx
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTFuID4+IC0xMjhuID09PSAtMHgx
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0x
biA+PiAwbiwgLTFuLCAiLTFuID4+IDBuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTFu
ID4+IDEyOG4sIC0xbiwgIi0xbiA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
LTB4MjQ2biA+PiAwbiwgLTB4MjQ2biwgIi0weDI0Nm4gPj4gMG4gPT09IC0weDI0Nm4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI3biA9PT0gLTB4MTIzMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gLTEy
OG4sIC0weDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4gPj4g
LTEyOG4gPT09IC0weDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNz
ZXJ0LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjluLCAtMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjluID09PSAtMHg0OGMwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAxMjhu
LCAtMW4sICItMHgyNDZuID4+IDEyOG4gPT09IC0xbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4sCi0g
ICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biA9PT0g
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAw
biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC0zMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4MDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IC0zMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4MDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAtMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3ODAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4biA+PiAwbiA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM1biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAxNm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzVuIik7Ci1hc3Nl
cnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzNuLAotICAiLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiA9PT0gLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYm4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gNjRuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JibiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDEyN24sIC0weDI0NjhhZG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gMTI3biA9PT0gLTB4MjQ2OGFkbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
LTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4sIC0weDEy
MzQ1N24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
MTI4biA9PT0gLTB4MTIzNDU3biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIC0weDkxYTJjbiwKLSAgIi0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluID09PSAtMHg5
MWEyY24iKTsKLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLXBy
b3Zlbi10eXBlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLXByb3Zlbi10eXBl
LmpzCmluZGV4IGQyZjUzOTc5OGM1Li5kZTEyMmM5ZGZkNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvYmlnLWludC10eXBlLW9mLXByb3Zlbi10eXBlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwpAQCAtMSw4ICsxLDggQEAKIC8vQCBydW5E
ZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIpCiAK
LWZ1bmN0aW9uIGFzc2VydChhKSB7Ci0gICAgaWYgKCFhKQotICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkJhZCBhc3NlcnRpb24iKTsKK2Z1bmN0aW9uIGFzc2VydChpbnB1dCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJh
ZCByZXN1bHQ6ICIgKyBpbnB1dCk7CiB9CiAKIGZ1bmN0aW9uIGZvbyhvKSB7CkBAIC0xMyw2ICsx
Myw1IEBAIGZ1bmN0aW9uIGZvbyhvKSB7CiBub0lubGluZShmb28pOwogCiBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICBhc3NlcnQoZm9vKDNuKSA9PT0gIjMiKTsKKyAgICBh
c3NlcnQoZm9vKDNuKSwgIjMiKTsKIH0KLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY29t
cGFyZS1udW1iZXItYW5kLW90aGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1udW1iZXIt
YW5kLW90aGVyLmpzCmluZGV4IDg1NDZiZjM3ZWExLi44MjVlODVkNmI2MSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvY29tcGFyZS1udW1iZXItYW5kLW90aGVyLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwpAQCAtNTksMTcgKzU5LDE3IEBAIGZv
ciAobGV0IG9wZXJhdG9yIG9mIG9wZXJhdG9ycykgewogICAgICAgICAgICAgbm9JbmxpbmUodGVz
dE1vbm9tb3JwaGljUmlnaHRDb25zdGFudCR7dGVzdENhc2VJbmRleH0pOwogCiAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRl
c3RNb25vbW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pICE9ICR7bGxp
bnRSZXN1bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RDYXNl
SW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAg
ICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgk
e2xlZnR9LCAke3JpZ2h0fSkiOwotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWNM
ZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0fSkK
KyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2Fz
ZUluZGV4fSgke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRl
eH0oJHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljUmlnaHRD
b25zdGFudCR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAg
ICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5k
ZXh9KCR7bGVmdH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7
bGVmdH0pIjsKICAgICAgICAgICAgICAgICBpZiAodGVzdFBvbHltb3JwaGljKCR7bGVmdH0sICR7
cmlnaHR9KSAhPT0gJHtsbGludFJlc3VsdH0pCi0gICAgICAgICAgICAgICAgICAgIHRocm93ICJG
YWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0pIjsKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgIkZhaWxlZCBwb2x5bW9ycGhpY1ZlcnNpb24oJHtsZWZ0fSwgJHtvcGVyYXRvcn0sICR7
cmlnaHR9LCBleHBlY3RlZCByZXN1bHQ6ICR7bGxpbnRSZXN1bHR9KSI7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBgKTsKICAgICAgICAgICAgICsrdGVzdENhc2VJbmRleDsKICAgICAgICAg
fQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcwppbmRleCBh
ZjIyODNmOGVlNC4uN2Y1Y2IxMDRlMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NvbXBh
cmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY29t
cGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcwpAQCAtODMsNyArODMsOCBAQCBmdW5j
dGlvbiB0ZXN0QWxsVHlwZXNDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmln
aHQgPSAiICsKICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5k
ZXhdICsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJlc3VsdCA9ICIgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJpY3RFcXVhbE91dHB1dCArCisgICAgICAgICAgICAgICAgICAgICAgICAiIChjYXNlOiAi
ICsgbGVmdENhc2VJbmRleCArICIsICIgKyByaWdodENhc2VJbmRleCArICIpIjsKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBsZXQgc3RyaWN0Tm90RXF1YWxPdXRwdXQgPSBv
cGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzKGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSwgcmln
aHRDYXNlc1tyaWdodENhc2VJbmRleF0pOwpAQCAtOTMsNyArOTQsOCBAQCBmdW5jdGlvbiB0ZXN0
QWxsVHlwZXNDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmlnaHQgPSAiICsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdICsKICAg
ICAgICAgICAgICAgICAgICAgICAgICIsIFJlc3VsdCA9ICIgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyaWN0RXF1YWxPdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RF
cXVhbE91dHB1dCArCisgICAgICAgICAgICAgICAgICAgICAgICAiIChjYXNlOiAiICsgbGVmdENh
c2VJbmRleCArICIsICIgKyByaWdodENhc2VJbmRleCArICIpIjsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Z0
bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1z
dHJpY3QtZXF1YWxpdHkuanMKaW5kZXggMDQzYTc2MDdhNGYuLjhlOTZjZjQ0Mjg5IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwpAQCAtMzAsNiArMzAs
NiBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CiAgICAgdmFyIHJlc3VsdCA9
IGZvbyhhcnJheSwgYXJyYXkyW2luZGV4XSk7CiAgICAgdmFyIGV4cGVjdGVkID0gaW5kZXggPj0g
YXJyYXkubGVuZ3RoID8gbnVsbCA6IGluZGV4CiAgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQp
Ci0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQgIiAr
IGV4cGVjdGVkOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2Vw
dGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL21pc3Npbmct
ZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCmluZGV4IDk2NWE3ZDczYjcxLi5k
ZDg1YTgzODdmYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24t
Y2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1l
eGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKQEAgLTEsNiArMSw4IEBACiBjb25z
dCBzMSA9ICgtMSkudG9Mb2NhbGVTdHJpbmcoKS5wYWRFbmQoMioqMzEtMSwgJ2FhJyk7Citjb25z
dCBzMiA9ICgtMSkudG9Mb2NhbGVTdHJpbmcoKS5wYWRFbmQoMioqMzEtMSwgJ2FhJyk7CiB0cnkg
ewotICAgIHMxID09IHMxOworICAgIC8vIEZvcmNlIGV2YWx1YXRpb24gb2YgUm9wZQorICAgIHMx
ID09IHMyOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYmE2MjAxOTAyMzIuLjJjN2E3ZGU2OWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05ODYsNiArOTg2LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuaAogICAgIHJ1bnRpbWUvU2NvcGVPZmZzZXQuaAogICAgIHJ1bnRpbWUvU2Nv
cGVkQXJndW1lbnRzVGFibGUuaAorICAgIHJ1bnRpbWUvU2NyaWJibGUuaAogICAgIHJ1bnRpbWUv
U2NyaXB0RXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAog
ICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZjUyOGJhZjM1OS4uZTU2MGY3M2ZkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4NyBAQAorMjAyMC0wNC0wNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIFN1cHBvcnQgYW4gaW5saW5lZCByZXByZXNlbnRhdGlvbiBpbiBKU1Zh
bHVlIG9mIHNtYWxsIEJpZ0ludHMgKCJCaWdJbnQzMiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxODIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRvIG9wdGltaXpl
IHRoZSBwZXJmb3JtYW5jZSBvZiBCaWdJbnRzLCB3aGVuIHRoZXkgYXJlIHNtYWxsICgzMiBiaXQg
b3IgbGVzcykuCisgICAgICAgIEl0IHdvcmtzIGJ5IGlubGluaW5nIHRoZW0gaW50byBKU1ZhbHVl
IG9uIDY0LWJpdCBwbGF0Zm9ybXMsIGF2b2lkaW5nIHRoZSBhbGxvY2F0aW9uIG9mIGEgSlNCaWdJ
bnQuCisgICAgICAgIFRoZSBiaXQgcGF0dGVybiB3ZSB1c2UgaXMgMDAwMDpYWFhYOlhYWFg6MDAx
MgorICAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxv
d2luZyB0aGluZ3M6CisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBEb3Vi
bGUgb3IgSW50ZWdlciB0aGFua3MgdG8gdGhlIHRvcCBiaXRzCisgICAgICAgIC0gSXQgY2Fubm90
IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdo
aWNoIGlzIHNldCB0byB0cnVlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGgg
YSBwb2ludGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQor
ICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIHRydWUvZmFsc2UgYmVjYXVzZSBi
aXQgMiBpcyBzZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9y
IG51bGwvdW5kZWZpbmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKKworICAgICAgICBU
aGlzIGVudGlyZSBjaGFuZ2UgaXMgZ2F0ZWQgYnkgVVNFKEJJR0lOVDMyKSwgdG8gbWFrZSBpdCBl
YXNpZXIgdG8gZGlzYWJsZSBpZiBpdCB0dXJucyBvdXQgdG8gaGF2ZSBidWdzLgorICAgICAgICBJ
dCBzaG91bGQgYWxzbyBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvIHZlcmlmeSBpZiBhIGdpdmVuIGJ1
ZyBjb21lcyBmcm9tIGl0IG9yIGZyb20gc29tZXRoaW5nIGVsc2UuCisKKyAgICAgICAgTm90ZSB0
aGF0IGluIHRoaXMgcGF0Y2ggd2UgY3JlYXRlIHN1Y2ggc21hbGwgQmlnSW50cyB3aGVuIHBhcnNp
bmcgQmlnSW50IGNvbnN0YW50cywgYW5kIG1vc3Qgb3BlcmF0aW9ucyAoZS5nLiBBZGQgb3IgQml0
T3IpIHByb2R1Y2UgYSBCaWdJbnQzMiBpZiBib3RoIG9mIHRoZWlyIG9wZXJhbmRzIGFyZSBCaWdJ
bnQzMiwKKyAgICAgICAgYnV0IHdlIGRvbid0IHByb2R1Y2UgYSBCaWdJbnQzMiBmcm9tIGZvciBl
eGFtcGxlIHRoZSBzdWJzdHJhY3Rpb24vZGl2aXNpb24gb2YgdHdvIGxhcmdlIGhlYXAtYWxsb2Nh
dGVkIEpTQmlnSW50cywgZXZlbiBpZiB0aGUgcmVzdWx0IGZpdHMgaW4gMzItYml0cy4KKyAgICAg
ICAgQXMgYSByZXN1bHQsIHNtYWxsIEJpZ0ludHMgY2FuIG5vdyBlaXRoZXIgYmUgaGVhcC1hbGxv
Y2F0ZWQgb3IgaW5saW5lZCBpbiB0aGUgSlNWYWx1ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
Y2x1ZGVzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3Igb2YgdmFyaW91cyBzbG93IHBhdGhzLCB3aGlj
aCBhcmUgbm93IGdyb3VwZWQgdG9nZXRoZXIgaW4gT3BlcmF0aW9ucy5oCisgICAgICAgIEJlY2F1
c2UgdGhpcyBpbmNyZWFzZWQgdGhlIHNpemUgb2YgT3BlcmF0aW9ucy5oIHNpZ25pZmljYW50bHks
IEkgc3BsaXQgdGhlIHBhcnRzIG9mIE9wZXJhdGlvbnMuaCB3aGljaCBhcmUgb25seSB1c2VkIGJ5
IHRoZSBHQyBpbnRvIFNjcmliYmxlLmgsIHRvIGF2b2lkIGJsb2F0aW5nIGNvbXBpbGUgdGltZXMu
CisKKyAgICAgICAgSW4gdGhlIERGRyBhbmQgRlRMIHdlIG5vdyBoYXZlIDMgVXNlS2luZHMgZm9y
IEJpZ0ludHM6IEhlYXBCaWdJbnRVc2UsIEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UuCisg
ICAgICAgIFRoZSBsYXR0ZXIgaXMgdXNlZnVsIHdoZW4gd2Uga25vdyB0aGF0IHdlIGFyZSByZWNl
aXZpbmcgQmlnSW50cywgYnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBvZiBoZWFwLWFs
bG9jYXRlZCBhbmQgc21hbGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAgIFVuZm9ydHVu
YXRlbHksIGEgbmFpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWduaWZpY2FudGx5
IHJlZ3Jlc3NlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMgdmFyaWFudHMp
LCBhcyBpdCBpcyBubyBsb25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24tY2VsbCBjYW5u
b3QgYmUgZXF1YWwuCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29kZSB3YXMganVt
cGluZyB0byBhIHNsb3cgcGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9w
ZXJhbmQgaXMgYSBkb3VibGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFyZSBjZWxscwor
ICAgICAgICBOb3csIGl0IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0
IGxlYXN0IG9uZSBpcyBhIGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBwZXJmb3JtYW5j
ZSBjb3N0LCBJIHNpZ25pZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20KKyAgICAgICAg
ICBpZiAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAgICAgIGlmIChs
ZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQgaXMgSW50MzIp
IHsKKyAgICAgICAgICAgIGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBz
bG93UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJbnQzMikgewor
ICAgICAgICAgICAgaWYgKHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93
UGF0aAorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodAorICAgICAg
ICBUbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBpZiAobGVm
dCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBJIGJlbGlldmUgdGhpcyB0byBiZSBmYXN0
ZXIgdGhhbiBqdXN0IHJlcGxhY2luZyAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGJ5
IGFuIHx8LCBiZWNhdXNlIEkgZm91bmQgYSBiaXQtdHJpY2sgdG8gY2hlY2sgKGxlZnQgaXMgRG91
YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkgd2hpY2ggc2hvdWxkIGhlbHAgcmVkdWNlIHRoZSBwcmVz
c3VyZSBvbiB0aGUgYnJhbmNoIHByZWRpY3Rvci4KKyAgICAgICAgRWFybHkgSmV0U3RyZWFtMiB0
ZXN0cyBhcHBlYXIgdG8gY29uZmlybSB0aGF0IHRoaXMgcGF0Y2ggaXMgcm91Z2hseSBuZXV0cmFs
IHdoaWxlIGl0IHdhcyBhIDAuNSUgcmVncmVzc2lvbiBiZWZvcmUgSSB1c2VkIHRoaXMgdHJpY2ss
IGJ1dCB0aGUgbnVtYmVycyBhcmUgc3RpbGwgdG9vIG5vaXN5LCBJIHBsYW4gdG8gZG8gbW9yZSBt
ZWFzdXJlbWVudHMgYmVmb3JlIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICBJIGRvbid0
IHlldCBoYXZlIHBlcmZvcm1hbmNlIG51bWJlcnMgZm9yIHRoaXMgcGF0Y2ggb24gYSBCaWdJbnQg
YmVuY2htYXJrLCBJIHdpbGwgZ2V0IHN1Y2ggbnVtYmVycyBiZWZvcmUgdHJ5aW5nIHRvIGxhbmQg
aXQsIGJ1dCBJJ2QgbGlrZSBzb21lIHJldmlldyBpbiB0aGUgbWVhbnRpbWUuCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFz
c2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXI6Om1lbW9y
eU1vZFJNKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAgICAo
SlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0lu
dDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNo
b3VsZEVtaXRTZXRIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
PEJpdGZpZWxkVHlwZT46OmVtaXRTZXRIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmls
ZS5oOgorICAgICAgICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVOb25JbnQzMik6
CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUJpZ0ludCk6CisgICAg
ICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQpOgorICAgICAg
ICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6
QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpvYnNlcnZlUmVzdWx0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6
CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6
OnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJv
bVZhbHVlKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAg
KEpTQzo6bGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQmln
SW50MzJTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSGVhcEJpZ0ludFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6aXNCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRCaWdJbnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9U
aGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvTnVtZXJpYyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6b2JzZXJ2ZVVzZUtpbmRPbk5vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZh
bHVlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05v
ZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMik6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCk6Cisg
ICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlQml0Tm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlw
ZWRPckFueUJpZ0ludEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQml0d2lzZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVEaXYpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVNb2QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVQb3cpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlj
dEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJp
Z0ludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp+U3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJh
bmQ6OmVkZ2UgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3Bl
cmFuZDo6bm9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kOjpncHIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZDo6dXNlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCaWdJbnQzMik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJ
bnQzMkJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAg
ICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZv
cik6CisgICAgICAgIChKU0M6OkRGRzo6aXNDZWxsKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMQ29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6
OmluaXRpYWxpemVDb25zdGFudHMpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuaDoK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0QW5kKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0T3IpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRYb3IpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRSU2hpZnQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRSU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRM
U2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFs
dWVCaXRMU2hpZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQml0VVJTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVJc0JpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmVtaXRCaW5hcnlTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6ZW1pdEJpbmFyeUJpdE9wU25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpidWlsZFR5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6Omxvd0hlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpsb3dCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omlz
QmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEJp
Z0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hCaWdJ
bnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEJpZ0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RBbnlCaWdJbnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBCaWdJbnRVbmtub3du
V2hldGhlckNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05v
dEhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0hl
YXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxh
dGVIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3Bl
Y3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKiBmdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6
CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lu
bGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAg
ICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVt
YmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEJpZ0ludDMy
S25vd25Ob3ROdW1iZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElm
SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RI
ZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveEJpZ0ludDMy
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hCaWdJbnQzMik6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFR5cGVPZik6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
ICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVnYXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BT
dHJpY3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5jcHA6CisgICAgICAgIChKU0M6
OklkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKToKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6dG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpj
YWxsQmlnSW50Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6QmlnSW50T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpC
aWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6dG9UaGlzQmlnSW50VmFsdWUpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNU
b1N0cmluZ0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFBy
b2ZpbGVGb3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVG
b3JCaW5hcnlBcml0aE9wKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpwYXJzZUludCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludCk6
CisgICAgICAgIChKU0M6OkpTQmlnSW50OjppbmMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
ZGVjKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmJpdHdpc2VBbmQpOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVx
dWFsc1RvTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKEpTQzo6YXNIZWFwQmlnSW50
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjp0b051bWJlclNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9P
YmplY3RTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhpc1Nsb3dD
YXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjphc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojppc0JpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzSGVhcEJpZ0ludCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50MzIgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpiaWdJbnQzMkFzSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjppc1ByaW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmdldFBy
aW1pdGl2ZU51bWJlcik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtZXJpYyBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpzdHJpY3RFcXVhbEZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0
RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmlzSGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Cb29sZWFuIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvQm9vbGVh
biBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZS5jcHA6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxs
KToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Y29tcGFy
ZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpiaWdJbnRDb21wYXJlKToK
KyAgICAgICAgKEpTQzo6anNMZXNzKToKKyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAg
ICAoSlNDOjphcml0aG1ldGljQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc1N1Yik6CisgICAg
ICAgIChKU0M6OmpzTXVsKToKKyAgICAgICAgKEpTQzo6anNEaXYpOgorICAgICAgICAoSlNDOjpq
c1JlbWFpbmRlcik6CisgICAgICAgIChKU0M6OmpzUG93KToKKyAgICAgICAgKEpTQzo6anNJbmMp
OgorICAgICAgICAoSlNDOjpqc0RlYyk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU5vdCk6Cisg
ICAgICAgIChKU0M6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNMU2hpZnQpOgorICAgICAgICAo
SlNDOjpqc1JTaGlmdCk6CisgICAgICAgIChKU0M6OmJpdHdpc2VCaW5hcnlPcCk6CisgICAgICAg
IChKU0M6OmpzQml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU9yKToKKyAgICAg
ICAgKEpTQzo6anNCaXR3aXNlWG9yKToKKyAgICAgICAgKiBydW50aW1lL1NjcmliYmxlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oLgor
ICAgICAgICAoSlNDOjpzY3JpYmJsZUZyZWVDZWxscyk6CisgICAgICAgIChKU0M6OmlzU2NyaWJi
bGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpzY3JpYmJsZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1p
dGl2ZUltcGwpOgorCiAyMDIwLTA0LTE2ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24gdW5pZmll
ZCBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyNTAxOWZkOTA1Li42
YWFiMTIwMGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg2Nyw2ICs4Njcs
NyBAQAogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3
RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJCTJBRjczODJE
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyNUJBMTMzN0U0
MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
MTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1Bh
dGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzM0IyQTU0
NzIyNjUzNDgxMDA1QTBGNzkgLyogQjNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1ZhbHVlSW5saW5lcy5oICovOyB9OwpAQCAtMzUxNCw2ICszNTE1LDcgQEAKIAkJMkFGNzM4MkIx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVy
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbVNpZ25hdHVy
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMxMTFCOEEyMzk3MjU2
NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09w
dGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0aCA9IGIzL0IzT3B0
aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZl
RXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNz
aW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM5NUM3MDQyMjU1NUY2
QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9CM0Vs
aW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1NjIs
NiArNzU2NCw3IEBACiAJCQkJMEZFMDUwMjAxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlLmggKi8sCiAJCQkJMEZFMDUwMjExQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zm
c2V0LmNwcCAqLywKIAkJCQkwRkUwNTAyMjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCAqLywKKwkJCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLywKIAkJ
CQkxNDczNDFFMDFEQzJDRTk2MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5jcHAgKi8sCiAJ
CQkJMTQ3MzQxQ0QxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCAqLywKIAkJ
CQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hlci5oICovLApAQCAtODky
OCw2ICs4OTMxLDcgQEAKIAkJCQkwRkVDODU5MTFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMzQzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3NjIwQjFEQjk1OUY5
MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzExMUI4
QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENF
MTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzBDQjVFMUZDRTRFMzcwMDRCNTMyMyAvKiBBbGxvY2F0b3JGb3JNb2Rl
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCmluZGV4IGMxMDAyNDA0ZWY2Li4zNTc4NjgzYjU5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC00Njk4LDcgKzQ2
OTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIEltbWVkaWF0ZXM6CiAgICAgICAgIC8vCi0g
ICAgICAgIC8vIEFuIGltbWVkYWl0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlh
dGUgYWZ0ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KKyAgICAgICAgLy8gQW4gaW1tZWRpYXRl
IHNob3VsZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVl
biBlbWl0dGVkLgogICAgICAgICAvLyBUaGUgd3JpdGVzIGFyZSB1bmNoZWNrZWQgc2luY2UgdGhl
IG9wY29kZSBmb3JtYXR0ZXJzIGFib3ZlIHdpbGwgaGF2ZSBlbnN1cmVkIHNwYWNlLgogCiAgICAg
ICAgIHZvaWQgaW1tZWRpYXRlOChpbnQgaW1tKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCBmZWE2Njc0NWI2Mi4uODVlYzcyODMyZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogdGVtcGxh
dGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBl
Pjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3Ms
IFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBH
UFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewotICAgIGlmICghc2hvdWxk
RW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRF
bWl0U2V0QmlnSW50KCkpCisgICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3Vs
ZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRIZWFwQmlnSW50KCkgJiYgIXNo
b3VsZEVtaXRTZXRCaWdJbnQzMigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGRvbmU7CkBAIC00OCw5ICs0OCwxOCBAQCB2b2lkIEFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1
ZVJlZwogCiAgICAgbm90RG91YmxlLmxpbmsoJmppdCk7CiAKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdEJpZ0ludDMyID0gaml0LmJyYW5jaElmTm90QmlnSW50
MzJLbm93bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsKKyAgICBlbWl0U2V0QmlnSW50MzIoaml0
KTsKKyAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKKyAgICBub3RCaWdJbnQzMi5saW5rKCZq
aXQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odGVtcEdQUik7CisjZW5kaWYKKwogICAgIG5v
bk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwocmVncywgbW9kZSkpOwotICAgIG5v
bk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkp
OwotICAgIGVtaXRTZXRCaWdJbnQoaml0KTsKKyAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZW1pdFNldEhlYXBC
aWdJbnQoaml0KTsKICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKIAogICAgIG5vbk51bWVy
aWMubGluaygmaml0KTsKQEAgLTg4LDE5ICs5NywzOSBAQCB2b2lkIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotYm9vbCBBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Citib29sIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdAoreworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9ic2VydmVkUmVzdWx0czo6Qmln
SW50MzI7CisgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEhlYXBCaWdJ
bnQoKSBjb25zdAogewotICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpC
aWdJbnQ7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJ
bnQ7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0
CiB7Ci0gICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgZW1pdFVuY29uZGl0
aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludCk7CisgICAgaWYgKHNob3VsZEVt
aXRTZXRIZWFwQmlnSW50KCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2Jz
ZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3RlbXBs
YXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlw
ZT46OmVtaXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3sKKyAgICBpZiAo
c2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGpp
dCwgT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMik7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQml0ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1p
dFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxkVHlwZSBtYXNrKSBj
b25zdAogewpAQCAtMTQ5LDggKzE3OCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogICAgICAgICAgICAgb3V0
LnByaW50KHNlcGFyYXRvciwgIkludDUyT3ZlcmZsb3ciKTsKICAgICAgICAgICAgIHNlcGFyYXRv
ciA9ICJ8IjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50
KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgb3V0
LnByaW50KHNlcGFyYXRvciwgIkhlYXBCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9
ICJ8IjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50MzIo
KSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkJpZ0ludDMyIik7CiAgICAg
ICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggNmFkZDFhMjZiMGEuLjdj
MWZlNzEzYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzQsMjEgKzc0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgTm9uTnVtZXJpYyAg
ICAgICA9IDEgPDwgMiwKICAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICAg
ICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAgQmlnSW50ICAgICAgICAgICA9
IDEgPDwgNSwKKyAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwKKyAgICAgICAgQmln
SW50MzIgICAgICAgICA9IDEgPDwgNiwKICAgICB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgbnVtQml0c05lZWRlZCA9IDY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBu
dW1CaXRzTmVlZGVkID0gNzsKIAogICAgIE9ic2VydmVkUmVzdWx0cygpID0gZGVmYXVsdDsKICAg
ICBleHBsaWNpdCBPYnNlcnZlZFJlc3VsdHModWludDhfdCBiaXRzKQogICAgICAgICA6IG1fYml0
cyhiaXRzKQogICAgIHsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSB7IHJldHVy
biBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmlj
IHwgQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4gbV9i
aXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEhl
YXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KICAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7IHJl
dHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CiAgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk5l
Z1plcm9Eb3VibGU7IH0KICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyByZXR1
cm4gbV9iaXRzICYgTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVy
aWMoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZl
QmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0KKyAg
ICBib29sIGRpZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJpZ0lu
dDsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgQmln
SW50MzI7IH0KICAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4gbV9i
aXRzICYgSW50MzJPdmVyZmxvdzsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSB7IHJldHVybiBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9CiAKQEAgLTEwOSwxMyArMTEyLDE2
IEBAIHB1YmxpYzoKICAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyBy
ZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKTsgfQogICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3Vs
dHMoKS5kaWRPYnNlcnZlTm9uTnVtZXJpYygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50
KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludCgpOyB9
CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVk
UmVzdWx0cygpLmRpZE9ic2VydmVIZWFwQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVC
aWdJbnQzMigpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJ
bnQzMigpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCk7IH0KICAgICBi
b29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1
bHRzKCkuZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKTsgfQogCiAgICAgdm9pZCBzZXRPYnNlcnZl
ZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk5lZ1plcm9E
b3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChP
YnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5v
bk51bWVyaWMoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6Ok5vbk51bWVyaWMpOyB9Ci0gICAg
dm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRS
ZXN1bHRzOjpIZWFwQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsg
c2V0Qml0KE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZl
ZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cp
OyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZl
ZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cpOyB9CiAKQEAgLTEyNyw4ICsxMzMsMTIgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyB8
IE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyB8IE9ic2VydmVkUmVzdWx0czo6Tm9uTmVn
WmVyb0RvdWJsZSB8IE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJsZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQo
KSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50OworICAg
ICAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2Jz
ZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAg
IG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQ7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6Tm9uTnVt
ZXJpYzsKQEAgLTEzOSwxOSArMTQ5LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJs
ZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQogICAgIC8vIGRvdWJsZS4gU2V0cyBOb25O
dW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVz
dWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycyk7CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBK
U1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVn
aXN0ZXJzKTsKIAogICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgogICAgIGJvb2wgc2hvdWxkRW1pdFNl
dERvdWJsZSgpIGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKIAotICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQgZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0OworICAgIHZvaWQg
ZW1pdFNldEhlYXBCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisKKyAgICBib29sIHNob3Vs
ZEVtaXRTZXRCaWdJbnQzMigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGVt
aXRTZXRCaWdJbnQzMihDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyNlbmRpZgogCiAgICAgdm9pZCBl
bWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0Owog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCkBAIC0xNzUsNyArMTg4LDcgQEAgdXNpbmcgVW5hcnlBcml0
aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CiBjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1Ymxp
YyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IE9ic2VydmVkUmVzdWx0czo6bnVt
Qml0c05lZWRlZDsKIAotICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBP
YnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZp
ZWxkLiIpOworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4
LCAiU2hvdWxkIGZpdCBpbiB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2Jz
ZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigw
YjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOwogCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xh
c3MgQmluYXJ5QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFBy
b2ZpbGVCYXNlPiB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxo
c09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0g
c2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50
MzJfdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRoZSB1bmRlcmx5aW5nIHR5cGUuIik7CiAgICAgc3Rh
dGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNf
YXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywg
IlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzcGVjaWFsRmFzdFBhdGhCaXQpID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH5jbGVhckxoc09ic2VydmVk
VHlwZUJpdE1hc2spKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNp
YWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMWY1NjY5NGNlNzAuLjJl
YzM3ODZmOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTMyOSw2ICszMjksNyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAg
OmlzX3VuZGVmaW5lZF9vcl9udWxsLAogICAgICAgICA6aXNfYm9vbGVhbiwKICAgICAgICAgOmlz
X251bWJlciwKKyAgICAgICAgOmlzX2JpZ19pbnQsCiAgICAgICAgIDppc19vYmplY3QsCiAgICAg
ICAgIDppc19vYmplY3Rfb3JfbnVsbCwKICAgICAgICAgOmlzX2Z1bmN0aW9uLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWM1NGI0M2RkYzMuLmM2MDk2NWJjYzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MC4uZWVhNWZhNGMzZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE3NCw2ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwo
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BJ
c1VuZGVmaW5lZE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5k
KQogICAgIFVTRVMoT3BJc051bWJlciwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNCaWdJbnQsIG9w
ZXJhbmQpCiAgICAgVVNFUyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVj
dE9yTnVsbCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5cGUsIG9wZXJhbmQpCkBA
IC00MjMsOSArNDI0LDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1
bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElk
ZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQogICAg
IERFRlMoT3BJc1VuZGVmaW5lZCwgZHN0KQotICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVsbCwg
ZHN0KQorICAgIERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jv
b2xlYW4sIGRzdCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKKyAgICBERUZTKE9wSXNCaWdJ
bnQsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3RP
ck51bGwsIGRzdCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDUzYjFiNDQ5MjAuLjNm
ZmMyYzM5OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCi0jaW5jbHVkZSAiSlNCaWdJ
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EYXRhRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCmluZGV4IDMyZjU4OGRiZmY2Li4zZWU2MWY5M2MzZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxNCBA
QCBlbnVtIERhdGFGb3JtYXQgOiB1aW50OF90IHsKICAgICBEYXRhRm9ybWF0Qm9vbGVhbiA9IDUs
CiAgICAgRGF0YUZvcm1hdENlbGwgPSA2LAogICAgIERhdGFGb3JtYXRTdG9yYWdlID0gNywKLSAg
ICBEYXRhRm9ybWF0SlMgPSA4LAorICAgIERhdGFGb3JtYXRCaWdJbnQzMiA9IDgsIC8vIEZJWE1F
OiBjdXJyZW50bHkgdW51c2VkCisgICAgRGF0YUZvcm1hdEpTID0gMTYsCiAgICAgRGF0YUZvcm1h
dEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAgICAgRGF0YUZvcm1h
dEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwKICAgICBEYXRhRm9y
bWF0SlNDZWxsID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdENlbGwsCiAgICAgRGF0YUZvcm1h
dEpTQm9vbGVhbiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCb29sZWFuLAotICAgIAorICAg
IERhdGFGb3JtYXRKU0JpZ0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJpZ0ludDMy
LAorCiAgICAgLy8gTWFya2VyIGRlbGltaW5hdGluZyBvcmRpbmFyeSBkYXRhIGZvcm1hdHMgYW5k
IE9TUi1vbmx5IGRhdGEgZm9ybWF0cy4KICAgICBEYXRhRm9ybWF0T1NSTWFya2VyID0gMzIsIAog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcwMWMzMzA4OWI5Li44MzBm
NmQ2NzVkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcg
QEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlOjpmcm9tTGF6eU9wZXJhbmQoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBq
aXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNvbnN0Cit2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkgY29uc3QKIHsKICAgICBz
d2l0Y2ggKG1fa2luZCkgewogICAgIGNhc2UgTm9uZToKQEAgLTY3LDEyICs2NywxMiBAQCB2b2lk
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBl
cnMmIGppdCwgSlNWYWx1ZVJlZwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBVbmFyeUFyaXRo
UHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZl
UmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS51bmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCB0ZW1wR1BSLCBtb2Rl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxl
UmVhZHk6IHsKLSAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0
KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgdS5iaW5hcnlBcml0
aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgdGVtcEdQUiwgbW9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5k
ZXggZThiNjVlYWQ0NmUuLjNhYmExYTMyYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUluZGV4LmgiCiAjaW5jbHVkZSAi
R1BSSW5mby5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiVGFnUmVnaXN0ZXJz
TW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODMsNyArODQsOCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAh
PSBOb25lOyB9CiAKLSAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1Zh
bHVlUmVncykgY29uc3Q7CisgICAgLy8gVGhlIHRlbXBvcmFyeSByZWdpc3RlciBpcyBvbmx5IG5l
ZWRlZCBvbiA2NC1iaXRzIGJ1aWxkcyAoZm9yIHRlc3RpbmcgQmlnSW50MzIpLgorICAgIHZvaWQg
ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQ
UiwgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpIGNvbnN0OwogICAgIHZvaWQg
cmVwb3J0VmFsdWUoSlNWYWx1ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCAxMDUzYmE1MmI1NC4uNzcx
Yzc5Yjg1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzOSwxMSArMjM5LDYgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24o
UHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAgICAg
ICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1Rv
cCA9IGZhbHNlOwotCi0gICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQpCi0gICAgICAgICAg
ICBzdHJPdXQucHJpbnQoIkJpZ0ludCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpc1Rv
cCA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgPT0gU3BlY0ludDMyT25seSkK
QEAgLTI3OCw3ICsyNzMsMjMgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91
dFN0cmVhbSwgU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGlzVG9wID0gZmFsc2U7CiAgICAgfQotICAgIAorCisgICAgaWYgKCh2YWx1ZSAmIFNwZWNCaWdJ
bnQpID09IFNwZWNCaWdJbnQpCisgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGVsc2UgeworICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50
MzIpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkJpZ0ludDMyIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHZhbHVlICYgU3BlY0hl
YXBCaWdJbnQpCisgICAgICAgICAgICBzdHJPdXQucHJpbnQoIkhlYXBCaWdJbnQiKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICB9CisjZW5kaWYKKwogICAg
IGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1cmVOYU4pCiAgICAgICAgIHN0ck91dC5wcmludCgi
RG91YmxlSW1wdXJlTmFOIik7CiAgICAgCkBAIC00MzEsNyArNDQyLDcgQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQog
ICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKICAgICAKICAgICBpZiAoY2xhc3NJbmZvID09IEpT
QmlnSW50OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgICAgICByZXR1
cm4gU3BlY0hlYXBCaWdJbnQ7CiAKICAgICBpZiAoY2xhc3NJbmZvID09IEpTRmluYWxPYmplY3Q6
OmluZm8oKSkKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKQEAgLTQ5OSw4ICs1MTAs
OCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIGlmIChzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpID09IFN5bWJvbFR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjU3lt
Ym9sOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEJpZ0ludFR5cGUp
Ci0gICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJ
bnQ7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRGVyaXZlZEFycmF5
VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNEZXJpdmVkQXJyYXk7CiAgICAgcmV0dXJuIHNwZWN1
bGF0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKQEAgLTUzNiw2ICs1
NDcsOCBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlIHZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0RvdWJsZTsKICAgICAgICAgcmV0dXJu
IFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CisgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBpZiAodmFsdWUuaXNDZWxsKCkpCiAg
ICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKICAgICBp
ZiAodmFsdWUuaXNCb29sZWFuKCkpCkBAIC01OTUsOCArNjA4LDggQEAgT3B0aW9uYWw8U3BlY3Vs
YXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkKICAgICAgICAgcmV0
dXJuIFNwZWNTdHJpbmc7CiAgICAgY2FzZSBTeW1ib2xUeXBlOgogICAgICAgICByZXR1cm4gU3Bl
Y1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFR5cGU6Ci0gICAgICAgIHJldHVybiBTcGVjQmlnSW50
OworICAgIGNhc2UgSGVhcEJpZ0ludFR5cGU6CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0lu
dDsKICAgICBjYXNlIEFycmF5VHlwZToKICAgICAgICAgcmV0dXJuIFNwZWNBcnJheTsKICAgICBj
YXNlIERlcml2ZWRBcnJheVR5cGU6CkBAIC02MzIsNiArNjQ1LDEwIEBAIFNwZWN1bGF0ZWRUeXBl
IGxlYXN0VXBwZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKFNwZWN1bGF0
ZWRUeXBlIHR5CiAKICAgICBpZiAodHlwZSAmIFNwZWNTdHJpbmcpCiAgICAgICAgIHR5cGUgfD0g
U3BlY1N0cmluZzsKKworICAgIGlmICh0eXBlICYgU3BlY0JpZ0ludCkKKyAgICAgICAgdHlwZSB8
PSBTcGVjQmlnSW50OworCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNWRiMThjNjQ4MmQuLmRm
MGI5MWE3MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk4LDEyICs5OCwxNCBAQCBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0
ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8CiBz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51bGwg
b3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTWlzYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXI7IC8v
IEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCiBz
dGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAxdWxsIDw8IDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFs
dWUgbWFya2VyLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgQmlnSW50Lgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdP
YmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgSlNEYXRhVmlldy4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBC
aWdJbnQgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEJpZ0ludCB0aGF0IGlzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcAorc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQmlnSW50MzIgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMXVsbCA8PCA0MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgc21hbGwgQmlnSW50IHRoYXQgaXMg
aW5saW5lIHRoZSBKU1ZhbHVlCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNC
aWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQmlnSW50MzIgfCBTcGVjSGVh
cEJpZ0ludDsKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RhdGFWaWV3T2Jq
ZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDM7IC8vIEl0J3MgZGVmaW5pdGVseSBh
IEpTRGF0YVZpZXcuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRp
dmUgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNw
ZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBhbnkgbm9u
LU9iamVjdCBKU1ZhbHVlLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY0Fy
cmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwgU3BlY0RpcmVjdEFyZ3Vt
ZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2JqZWN0IHwgU3BlY1JlZ0V4
cE9iamVjdCB8IFNwZWNEYXRlT2JqZWN0IHwgU3BlY1Byb21pc2VPYmplY3QgfCBTcGVjTWFwT2Jq
ZWN0IHwgU3BlY1NldE9iamVjdCB8IFNwZWNXZWFrTWFwT2JqZWN0IHwgU3BlY1dlYWtTZXRPYmpl
Y3QgfCBTcGVjUHJveHlPYmplY3QgfCBTcGVjRGVyaXZlZEFycmF5IHwgU3BlY09iamVjdE90aGVy
IHwgU3BlY0RhdGFWaWV3T2JqZWN0OyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFu
eSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8
IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8IFNwZWNCaWdJbnQ7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3Zl
LCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCitzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2Vs
bE90aGVyIHwgU3BlY0hlYXBCaWdJbnQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KK3N0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMyIHwgU3BlY0J5dGVjb2RlTnVtYmVy
IHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNw
ZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
SGVhcFRvcCB8IFNwZWNFbXB0eTsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2Vw
dCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUltcHVyZU5hTi4gQ29ycmVzcG9uZHMg
dG8gd2hhdCBjb3VsZCBiZSBmb3VuZCBpbiBhIGJ5dGVjb2RlIGxvY2FsLgogc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1iZXI7IC8vIEl0IGNhbiBiZSBhbnl0aGlu
ZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4b3RpYyBlbmNvZGluZ3Mgb2YgbnVtYmVy
cy4KIApAQCAtMTg1LDkgKzE4NywxOSBAQCBpbmxpbmUgYm9vbCBpc1N5bWJvbFNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjU3ltYm9sOwog
fQogCitpbmxpbmUgYm9vbCBpc0JpZ0ludDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQzMjsKK30KKworaW5saW5lIGJv
b2wgaXNIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIHZhbHVlID09IFNwZWNIZWFwQmlnSW50OworfQorCiBpbmxpbmUgYm9vbCBpc0JpZ0lu
dFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjQmlnSW50OworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNCaWdJbnQp
ID09IHZhbHVlOwogfQogCiBpbmxpbmUgYm9vbCBpc0FycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYzZDM2MmNhYzE5Li40NGUxNWMyMDY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE3MDMsNyArMTcwMywxMSBAQCBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMxLCBSZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUJp
Z0ludCgpICYmIHZhbHVlID09ICJiaWdpbnQiKSB7CiAgICAgICAgICAgICAgICAgcmV3aW5kKCk7
Ci0gICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1f
dmFsdWUsIEJpZ0ludFR5cGUpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBP
cElzQmlnSW50OjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSk7CisjZWxzZQorICAgICAgICAg
ICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBIZWFw
QmlnSW50VHlwZSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAib2JqZWN0IikgewpAQCAtMjkxMSw3
ICsyOTE1LDcgQEAgSlNWYWx1ZSBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQmlnSW50Q29uc3RhbnQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDgKICAgICByZXR1cm4gbV9iaWdJbnRN
YXAuZW5zdXJlKEJpZ0ludE1hcEVudHJ5KGlkZW50aWZpZXIuaW1wbCgpLCByYWRpeCwgc2lnbiks
IFsmXSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKCkpOwog
ICAgICAgICBhdXRvIHBhcnNlSW50U2lnbiA9IHNpZ24gPyBKU0JpZ0ludDo6UGFyc2VJbnRTaWdu
OjpTaWduZWQgOiBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZDsKLSAgICAgICAgSlNC
aWdJbnQqIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtKCksIGlk
ZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93
RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKKyAgICAgICAgSlNWYWx1ZSBiaWdJbnRJbk1hcCA9
IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCBy
YWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50
U2lnbik7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIGFkZENv
bnN0YW50VmFsdWUoYmlnSW50SW5NYXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZWE2Y2QyYjZkNWIu
LjZiZTU3ZDgzZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMDkyLDcgKzEwOTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB1c2luZyBOdW1iZXJNYXAgPSBIYXNoTWFwPGRvdWJsZSwgSlNW
YWx1ZT47CiAgICAgICAgIHVzaW5nIElkZW50aWZpZXJTdHJpbmdNYXAgPSBIYXNoTWFwPFVuaXF1
ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD47Ci0gICAgICAgIHVz
aW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU0JpZ0lu
dCo+OworICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRN
YXBFbnRyeSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
clNldCA9IEhhc2hTZXQ8UmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4+OwogICAgICAgICB1
c2luZyBUZW1wbGF0ZURlc2NyaXB0b3JNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvciosIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4
IDdlMjYzODBjNjA1Li41MmU3NmQyOTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDcg
KzQ2LDYgQEAKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1h
dGhDb21tb24uaCIKICNpbmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5n
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKQEAgLTIxNSw3ICsyMTQsNyBA
QCBpbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2Rl
IGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJgogICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9
IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUg
PSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVj
dCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9s
VHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBCaWdJbnRUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVCh0
eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUo
KSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKTsKICAgICAg
ICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKICAgICAgICAgICAgICAgICBBU1NFUlQo
dHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkg
YWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgpAQCAtNTAzLDcgKzUwMiwx
NSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkK
KyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgewor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNC
aWdJbnQzMik7CisjZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hl
YXBCaWdJbnQpOworICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
QW55QmlnSW50VXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC01MzMs
NyArNTQwLDE2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVD
b25zdGFudEJpbmFyeUJpdHdpc2VPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBG
SVhNRTogdGhpcyB1c2Ugb2YgYmluYXJ5VXNlS2luZCBtZWFucyB0aGF0IHdlIGNhbm5vdCBzcGVj
aWFsaXplIHRvIChmb3IgZXhhbXBsZSkgYSBIZWFwQmlnSW50IGxlZnQtb3BlcmFuZCBhbmQgYSBC
aWdJbnQzMiByaWdodC1vcGVyYW5kLgorICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgc2V0VHlw
ZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBlRm9y
Tm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShu
b2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29y
bGQoKTsKQEAgLTcyMywxMSArNzM5LDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAg
ICBjYXNlIFZhbHVlU3ViOgogICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBub2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKLSAgICAgICAgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2Up
CiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwor
ICAgICAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBuZWVkIFNwZWNTdHJpbmcgaGVyZSBm
b3IgVmFsdWVTdWI/IEl0IHNlZW1zIGxpa2Ugd2Ugb25seSBuZWVkIGl0IGZvciBWYWx1ZUFkZC4K
ICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNTdHJpbmcgfCBTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTg4
Nyw2ICs5MDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBWYWx1ZU5lZ2F0ZTogeworICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gbXVj
aCBzbWFydGVyIHRoaW5ncyBmb3IgQmlnSW50cywgc2VlIFZhbHVlQWRkL1ZhbHVlU3ViLgogICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0J5
dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTU5LDcgKzk3
OSwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBjYXNlIERvdWJsZVJlcFVz
ZToKICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCB0eXBlT2ZEb3VibGVJ
bmNPckRlYyhmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNl
OgorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICBjYXNl
IEJpZ0ludDMyVXNlOgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTk3NSw3ICs5OTks
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkWSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChjaGlsZFggJiYgY2hp
bGRZICYmIGNoaWxkWC5pc051bWJlcigpICYmIGNoaWxkWS5pc051bWJlcigpKSB7CiAgICAgICAg
ICAgICAvLyBXZSBuZWVkIHRvIGNhbGwgYGRpZEZvbGRDbG9iYmVyV29ybGRgIGhlcmUgYmVjYXVz
ZSB0aGlzIHBhdGggaXMgb25seSBwb3NzaWJsZQotICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51
c2VLaW5kIGlzIFVudHlwZWRVc2UuIEluIHRoZSBjYXNlIG9mIEJpZ0ludFVzZSwgY2hpbGRyZW4g
d2lsbCBiZQorICAgICAgICAgICAgLy8gd2hlbiBub2RlLT51c2VLaW5kIGlzIFVudHlwZWRVc2Uu
IEluIHRoZSBjYXNlIG9mIEFueUJpZ0ludFVzZSBvciBmcmllbmRzLCBjaGlsZHJlbiB3aWxsIGJl
CiAgICAgICAgICAgICAvLyBjbGVhcmVkIGJ5IGBBYnN0cmFjdEludGVycHJldGVyOjpleGVjdXRl
RWZmZWN0c2AuCiAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CiAgICAgICAgICAg
ICAvLyBPdXIgYm94aW5nIHNjaGVtZSBoZXJlIG1hdGNoZXMgd2hhdCB3ZSBkbyBpbiBvcGVyYXRp
b25WYWx1ZVBvdy4KQEAgLTk4Myw3ICsxMDA3LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAg
ICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTk5Myw3ICsxMDE5LDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZU11bDogewotICAg
ICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgLy8g
RklYTUU6IHdoeSBpcyB0aGlzIGNvZGUgbm90IHNoYXJlZCB3aXRoIFZhbHVlU3ViPworICAgICAg
ICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwg
U3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7
CkBAIC0xMDU3LDcgKzEwODYsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBp
ZiAoaGFuZGxlQ29uc3RhbnREaXZPcChub2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRU
eXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC0x
MzgxLDYgKzE0MTIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgSXNVbmRl
ZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAg
ICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNP
YmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTE0MDksNiArMTQ0MSw5IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzTnVt
YmVyKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNCaWdJ
bnQ6CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZh
bHVlKCkuaXNCaWdJbnQoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNCb29sZWFuKE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNoaWxkLnZhbHVlKCkp
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYzLDcgKzE1OTgsMjIgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgICAgICBpZiAoIShjaGls
ZC5tX3R5cGUgJiB+U3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCEoY2hpbGQubV90eXBlICYgU3BlY0JpZ0ludCkpIHsKKyAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICBjb25z
dGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpZiB0aGUgU3BlY3VsYXRlZFR5cGUgaW5mb3JtcyB1
cyB0aGF0IHdlIHdvbid0IGhhdmUgYSBCaWdJbnQzMiAob3IgdGhhdCB3ZSB3b24ndCBoYXZlIGEg
SGVhcEJpZ0ludCksIHRoZW4gd2UgY2FuIHRyYW5zZm9ybSB0aGlzIG5vZGUgaW50byBhIElzQ2Vs
bFdpdGhUeXBlKEhlYXBCaWdJbnRUeXBlKSAob3IgYSBoeXBvdGhldGljYWwgSXNCaWdJbnQzMiBu
b2RlKS4KIAorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2Vy
OgogICAgICAgICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKSB7CiAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKQEAgLTE5
MzcsMTMgKzE5ODcsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjaGVjayBoZXJlLCBh
bmQgbm90IGxhdGVyIChhZnRlciB0aGUgdHlwZS1iYXNlZCByZXBsYWNlbWVudCBieSBmYWxzZSku
CisgICAgICAgIC8vIFNhYW0gc2VlbXMgdG8gYWdyZWUgdGhhdCB0aGUgdHdvIGNoZWNrcyBjb3Vs
ZCBiZSBzd2l0Y2hlZCwgSSdsbCB0cnkgdGhhdCBpbiBhIHNlcGFyYXRlIHBhdGNoCiAgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBSZXZpc2l0IHRoaXMgY29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRv
IEpTQy4KLSAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdDZWxsQ29uc3RhbnQgPSBbXSAoSlNW
YWx1ZSB2YWx1ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0Nl
bGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gaXNOb25TdHJpbmdP
ckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYm
ICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlm
IChpc05vblN0cmluZ0NlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25zdGFu
dChyaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0
YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nT3JCaWdJbnRDZWxsQ29uc3RhbnQocmlnaHQpKSB7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7
CiAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29sZWFu
KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5NTgsMTkgKzIwMDksMjQgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5z
aWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpID09IG5vZGUtPmNoaWxkMigpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEludDMyVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChJbnQ1MlJlcFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
dHJpbmdJZGVudFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
U3ltYm9sVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmpl
Y3RVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2Us
IFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UsIE1pc2NVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdWYXJVc2UpIHx8Ci0gICAgICAgICAgICAgICAg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpIHx8
Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSwgVW50eXBl
ZFVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVz
ZSwgU3RyaW5nVXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoZXJlIGFueSBjYXNl
IG5vdCBpbnZvbHZpbmcgTmFOIHdoZXJlIHggPT09IHggaXMgbm90IGd1YXJhbnRlZWQgdG8gcmV0
dXJuIHRydWU/CisgICAgICAgICAgICAvLyBJZiBub3QgSSBtaWdodCBzbGlnaHRseSBzaW1wbGlm
eSB0aGF0IGNoZWNrLgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29s
ZWFuVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVz
ZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2Up
CisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpCisg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkKKyAgICAg
ICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQorICAgICAgICAg
ICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQorICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNl
KQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVz
ZSwgTm90U3RyaW5nVmFyVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpCisgICAgICAgICAg
ICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkKKyAg
ICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpCisgICAg
ICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpCisgICAg
ICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKICAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMmY0ZjAwODQwYy4uODE4MTQ2Mzhh
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCkBAIC01NzMwLDYgKzU3MzAsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX251bWJlcik7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2lzX2JpZ19pbnQ6IHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcElzQmlnSW50PigpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUu
bV9vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJ
c0JpZ0ludCwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX2JpZ19pbnQp
OworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxs
V2l0aFR5cGU+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29w
ZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDc1OWI3NzgwYTZjLi4wM2U4OWIyNmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQ5LDYgKzE0OSw3IEBAIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9pc191bmRlZmluZWRfb3JfbnVsbDoKICAgICBj
YXNlIG9wX2lzX2Jvb2xlYW46CiAgICAgY2FzZSBvcF9pc19udW1iZXI6CisgICAgY2FzZSBvcF9p
c19iaWdfaW50OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgogICAgIGNhc2Ugb3BfaXNfb2JqZWN0
X29yX251bGw6CiAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlwZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzcxNGYxNTIwNDMuLjU2M2Y1YjY1YmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3NSw2
ICsxNzUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgSXNVbmRlZmluZWRP
ck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNl
IElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6
CiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgpAQCAtMjYwLDcgKzI2MSw3IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFk
LCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgVmFsdWVCaXROb3Q6
Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Cisg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShu
b2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY4MCw3ICs2ODEsOSBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAg
ICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAg
Y2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIGNhc2Ug
SGVhcEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAgICAgICAgICAgICBk
ZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOgpAQCAtNzAyLDcgKzcwNSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBWYWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0TFNoaWZ0OgogICAgIGNhc2UgVmFs
dWVCaXRSU2hpZnQ6Ci0gICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNl
KSkgeworICAgICAgICAvLyBGSVhNRTogdGhpcyB1c2Ugb2Ygc2luZ2xlLWFyZ3VtZW50IGlzQmlu
YXJ5VXNlS2luZCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gc3BlY2lhbGl6aW5nIChmb3IgZXhhbXBs
ZSkgZm9yIGEgSGVhcEJpZ0ludCBsZWZ0LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3Bl
cmFuZC4KKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBlMGM5NTg2ZjIw
ZC4uM2E1ZmM2ZDRiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDcsOSArMTQ3LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWUgY2hpbGQyQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCku
bm9kZSgpKS52YWx1ZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0
IHRoaXMgY29uZGl0aW9uIHdoZW4gaW50cm9kdWNpbmcgQmlnSW50IHRvIEpTQy4KICAgICAgICAg
ICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpT
VmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2
YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAm
JiAhdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNIZWFwQmlnSW50KCk7CiAgICAgICAgICAg
ICAgICAgICAgIH07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nT3JCaWdJ
bnRDZWxsQ29uc3RhbnQoY2hpbGQxQ29uc3RhbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggNjQ0ZWZlMmQ1ZDAuLjkyZTc0Y2I0OWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZH
Tm9kZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCkBAIC0xNDcsNiArMTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jv
b2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2Ug
TnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9y
TnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IDhkN2RlMjcxZGIwLi5hNWZiZmM2MTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAyLDE0ICsyMDIsMzQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IHRoZSBmcmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChz
aW5jZSB0aGUgSlNDZWxsIGlzIGtlcHQgYWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBj
b21waWxlIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0
aW1pemUgaW5jL2RlYyB0byBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0
aGF0IGNhc2UuCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVB
ZGQgOiBWYWx1ZVN1Yik7CisgICAgICAgICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29u
c3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuaGVhcEJpZ0lu
dENvbnN0YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNl
dENoaWxkMihFZGdlKG5vZGVDb25zdGFudE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBC
aWdJbnRzIGFyZSBjZWxscywgc28gdGhlIGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2Qg
aGVyZQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2Rl
LT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAg
ICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJs
b2NrLCBTcGVjQmlnSW50MzIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3Jh
cGguZnJlZXplKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2gg
Zm9yIG5vdy4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3Bl
Y2lhbCByZXByZXNlbnRhdGlvbiBmb3Igc21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1
c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1
c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBt
aWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0
ZWFkIGluIHRoYXQgY2FzZS4KICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMg
PyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKLSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBK
U0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0lu
dENvbnN0YW50T25lLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwg
SlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJl
bi5zZXRDaGlsZDIoRWRnZShub2RlQ29uc3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBh
cmUgY3VycmVudGx5IGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29v
ZCBoZXJlCisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBn
b29kIGhlcmUKKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIz
NSwxMiArMjU1LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2Rl
LT5jaGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwog
CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEu
bm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJp
Z0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KGNoaWxkMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBV
U0UoQklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50
KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+
KGNoaWxkMik7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwog
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGlj
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMik7CkBAIC0yNjgsOCArMjk2LDIxIEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewog
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMxMyw3ICszNTQsMTcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmln
SW50KCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUo
KS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4ob3BlcmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9w
ZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihv
cGVyYW5kRWRnZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4ob3BlcmFuZEVkZ2UpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRF
ZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxz
ZSB7CkBAIC00NTgsOSArNTA5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50
KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+
KGNoaWxkMik7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0lu
dChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KGNoaWxkMik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNl
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIu
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCks
IGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+
KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7
CisjZW5kaWYKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4o
Y2hpbGQyKTsKQEAgLTU0Niw4ICs2MDUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2Um
IHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVC
aWdJbnQzMihsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxl
ZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAg
ICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTU4OCwxMiArNjYwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAg
ICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwg
cmlnaHRDaGlsZC5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihsZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
cmlnaHRDaGlsZCk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdl
bmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0Uo
QklHSU5UMzIpCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxl
ZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50VXNlPihsZWZ0Q2hpbGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVz
ZT4obGVmdENoaWxkKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmln
aHRDaGlsZCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAog
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGlj
KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8VW50eXBlZFVzZT4obGVmdENoaWxkKTsKQEAgLTY1NywxMiArNzM3LDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1NDQsNiArMjYzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNC
b29sZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50Ogog
ICAgICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAg
ICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMjg4NSw3ICsyOTc0LDE2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxz
ZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTU4LDcgKzMwNTYsMTYg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBj
aGlsZCBpcyBCaWdJbnQsIHdlIGF0dGVtcHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRp
dHksIHNpbmNlIGl0IGNhbiBvbmx5IHJldHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4K
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewot
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0zNDUyLDEzICszNTU5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3Ry
aW5nVXNlOgogICAgICAgICBjYXNlIEtub3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJv
bFVzZToKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVz
ZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JT
dHJpbmdPYmplY3RVc2U6CiAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRp
dmVzKCkKICAgICAgICAgICAgICAgICB8fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJl
ZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZh
cmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNl
IGFuZCBBbnlCaWdJbnRVc2UgPworICAgICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBh
Ym91dCBhbGwgb2YgdGhlIFVzZUtpbmRzIHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dp
dGNoPwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTM5NzIsMTIgKzQwODEsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5k
RGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBm
aXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSkgeworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkgewotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4
RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNl
dE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0
cmluZ0lkZW50KCkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDQy
Nzk0Yzc5Y2NhLi44OTJlNWRjYzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNs
dWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBlNTZjNWZmYzFkYy4uNzRlMTkzNjI0
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYyMiw2ICsyNjIyLDE4
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24oKSk7CiAgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRT
cGVjdWxhdGVIZWFwQmlnSW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNw
ZWN1bGF0ZUJpZ0ludCgpCiAgICAgewpAQCAtMjgyMiw3ICsyODM0LDE5IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+
c2hvdWxkU3BlY3VsYXRlQmlnSW50KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9k
ZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
MzIoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisK
KyAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9k
ZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJp
Z0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAg
IHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSog
b3AyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmpl
Y3QoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAppbmRleCA3ZTk2YTI2ODRjZS4uYjBiYTZiYjdlOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaApAQCAtNTQsNiArNTQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVNYXlOZWda
ZXJvSW5CYXNlbGluZSAgICAgICAgIDB4MDAyMDAKICNkZWZpbmUgTm9kZU1heU5lZ1plcm9JbkRG
RyAgICAgICAgICAgICAgMHgwMDQwMAogI2RlZmluZSBOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1
bHQgICAgICAweDAwODAwCisvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgc2VwYXJhdGUgZmxhZ3Mg
Zm9yIEhlYXBCaWdJbnQgYW5kIEJpZ0ludDMyLCBjdXJyZW50bHkgcHJlZGljdGlvbiBwcm9wYWdh
dGlvbiB3aWxsIHBlc3NpbWl6ZSB0aGluZ3MuCiAjZGVmaW5lIE5vZGVNYXlIYXZlQmlnSW50UmVz
dWx0ICAgICAgICAgIDB4MDEwMDAKICNkZWZpbmUgTm9kZU1heUhhdmVOb25JbnRSZXN1bHQgICAg
ICAgICAgKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0IHwgTm9kZU1heUhhdmVOb25OdW1lcmljUmVz
dWx0IHwgTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDkzZDE3
YmUzMzk2Li4zYmU0Mzg2OTI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaApAQCAtMzk2LDYgKzM5Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhJc1VuZGVmaW5lZE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBt
YWNybyhJc0Jvb2xlYW4sIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNOdW1iZXIs
IE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgLyogSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4g
VVNFX0JJR0lOVDMyLiBPdGhlcndpc2Ugd2UgZW1pdCBJc0NlbGxXaXRoVHlwZSAqL1wKKyAgICBt
YWNybyhJc0JpZ0ludCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhOdW1iZXJJc0lu
dGVnZXIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNPYmplY3QsIE5vZGVSZXN1
bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNPYmplY3RPck51bGwsIE5vZGVSZXN1bHRCb29sZWFu
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUyZGJk
ZDliOS4uZjYzNzJhZGQ0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmNwcApAQCAtMzgzLDEwICszODMsMTMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0
ZXIuIFNvIHVzZSB0aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2lu
Y2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KICAgICAgICAgICAgICAgICBqaXQubG9hZDY0
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3Mo
KSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxl
LmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgYWxzbyB1c2UgdGhlIG5vdENlbGxNYXNrUmVn
aXN0ZXIgYXMgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIsIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IGZpbmQgYSBsZXNzIGdyb3NzIHdheSBvZiBkb2luZyB0aGlz
LCBtYXliZSB0aHJvdWdoIGRlbGF5aW5nIHRoZXNlIG9wZXJhdGlvbnMgdW50aWwgd2UgYWN0dWFs
bHkgaGF2ZSBzb21lIHNwYXJlIHJlZ2lzdGVycyBhcm91bmQ/CisgICAgICAgICAgICAgICAgcHJv
ZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3RlciksIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lz
dGVycyk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFs
dWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOworICAgICAg
ICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuZ3ByKCkpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05v
dEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKTsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYg
KGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8g
U2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCkBAIC0zOTgsNyArNDAxLDcgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2go
c2NyYXRjaFRhZywgc2NyYXRjaFBheWxvYWQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGppdC5sb2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNj
cmF0Y2gpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2Ny
YXRjaCk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3Jh
dGNoLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBq
aXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jl
c3RvcmUoc2NyYXRjaFBheWxvYWQpOwpAQCAtNDA3LDEwICs0MTAsMTAgQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBl
eGl0LCBjb25zdAogICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwog
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4
aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9h
ZEdQUigpKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVl
LCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0
Y2hUYWcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0
UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOworICAgICAgICAg
ICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
cmVncygpLCBJbnZhbGlkR1BSUmVnKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCA5ZTli
Y2VhNDgxYy4uZTBlODcyMWVlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXgg
NmVhZjcwZGQ5NTQuLjg2NmFjZjhhYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04OSw3ICs4OSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJh
eUlubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogI2lmIEVOQUJMRShKSVQpCiAjaWYg
RU5BQkxFKERGR19KSVQpCkBAIC0yMjQsNTYgKzIyMyw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgcHV0V2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsCiAgICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1
ZSwgc2xvdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5h
bWUgTnVtYmVyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUg
YmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRp
b24mJiBiaWdJbnRPcCwgTnVtYmVyT3BlcmF0aW9uJiYgbnVtYmVyT3AsIGNvbnN0IGNoYXIqIGVy
cm9yTWVzc2FnZSkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMg
PSBvcDIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsK
LQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBl
cnJvck1lc3NhZ2UpOwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobnVtYmVyT3AoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0
TnVtZXJpYyksIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KLXN0
YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJ
bnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9w
MSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9C
aWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1l
c3NhZ2UpOwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoaW50MzJPcChXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJsZSBpbnB1dCkKIHsK
ICAgICBpbnQgYXNJbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGlucHV0KTsKQEAgLTQ3Myw3MSArNDIy
LDM0IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBb
XSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50
KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5k
ZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVy
T3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAg
cmV0dXJuIGpzTW9kKGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9w
KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1i
ZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIg
b3BlcmF0aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSZW1haW5kZXIoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51
bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5k
TnVtZXJpYykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJh
bmROdW1lcmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlICsg
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNJbmMoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpOwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJ
bnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxk
b3VibGU+KG9wZXJhbmROdW1lcmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHZhbHVlIC0gMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEZWMoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0K
LSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKIAotICAgIGF1
dG8gb3BlcmFuZE51bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OmJpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1l
cmljKSkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIofldURjo6Z2V0
PGludDMyX3Q+KG9wZXJhbmROdW1lcmljKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTQ2LDE1ICs0NTgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJ
bnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBs
ZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgJiBy
aWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4i
X3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlQW5kKGdsb2JhbE9iamVj
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJp
dE9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NjMsMTUgKzQ2Nyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4g
SlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQz
Ml90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVm
dCB8IHJpZ2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRp
b24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU9yKGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTgwLDE1ICs0NzYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlWG9yKGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAo
aW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJu
IGxlZnQgXiByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9i
YWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9w
ZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlWG9yKGds
b2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTk3LDE1ICs0
ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNo
aWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0g
W10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0lu
dCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNo
aWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMy
T3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAg
ICAgcmV0dXJuIGxlZnQgPDwgKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBi
aXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YmlnSW50T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTFNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpA
QCAtNjE0LDE1ICs0OTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBs
ZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9
OwotCi0gICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gaW50MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDB4MWYpOwotICAg
IH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY2MCwxNSArNTMyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0Jp
Z0ludCogewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxl
ZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVm
dCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0
OwotICAgIH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2Rl
ZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRGl2KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKQpAQCAtNjc3LDE1ICs1NDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAg
ICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVy
biBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAg
IH07Ci0KLSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQp
IC0+IGRvdWJsZSB7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0
KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIl9zKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUG93KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogZG91
YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhBYnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKQEAgLTE0ODIsNyArMTMzOCw3IEBA
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBy
ZWdleHAtPnRlc3QoZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
dWJIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTQ5NCw3ICsx
MzUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1
YihnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dE5vdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MDUsNyArMTM2MSw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlTm90KGds
b2JhbE9iamVjdCwgb3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTE3LDcgKzEzNzMsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFs
T2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KICAgICAKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTI5
LDcgKzEzODUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0lu
dDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9
CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CkBAIC0xNTQxLDcgKzEzOTcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAg
IHJldHVybiBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTUzLDcgKzE0MDksNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwg
bGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFu
ZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTY1LDcgKzE0
MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0
d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1K
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMTU3Nyw3ICsxNDMzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVy
YW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QWRkQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU4OSw3ICsxNDQ1LDcgQEAgSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3Qs
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRSU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYw
MSw3ICsxNDU3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJp
Z0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNCaWdJ
bnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjEzLDcgKzE0NjksNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKgogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVm
dE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
cDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhl
YXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjMxLDcgKzE0ODcs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3QsIG9wMSwgb3Ay
KTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGFyZzEsIEVuY29kZWRKU1ZhbHVl
IGFyZzIpCkBAIC0xNjc2LDEwICsxNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byB2YXJpYW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHZh
cmlhbnQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdURjo6Z2V0PEpTQmlnSW50
Kj4odmFyaWFudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpn
ZXQ8ZG91YmxlPih2YXJpYW50KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGE4YTRjYmQyMGU2Li5k
N2E4YTYzZDkxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xODMsMTggKzE4MywxOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSgogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCogb3AxKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hp
ZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9J
TlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25TdWJIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVh
cEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXROb3RIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5B
TDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9w
MSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2Vs
bCogb3AyKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1l
VmFsdWUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0
aW9uRGlyZWN0KFZNKiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2Rl
ZEpTVmFsdWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFy
Z3VtZW50cyhWTSosIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgbWluQ2Fw
YWNpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZTQ5YzMxMzAzNi4uMGY0MTk3MGQ5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01MzIsNyArNTMyLDE5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1i
b2wpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hl
YXBCaWdJbnQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNCaWdJbnQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMDQsNiArMTAx
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAg
IGNhc2UgSXNCb29sZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElz
QmlnSW50OgogICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgY2FzZSBJc09i
amVjdDoKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOGVjZDM1MzFmYzMuLmRlNzQ3N2FlNTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAt
NzksNyArNzksOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBj
YXNlIFN0cmluZ09yT3RoZXJVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBj
YXNlIEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2Ug
SGVhcEJpZ0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgY2FzZSBT
dHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgTm90U3RyaW5nVmFyVXNlOgpAQCAtMjYzLDYgKzI2NSw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElz
Qm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2Fz
ZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0
T3JOdWxsOgpAQCAtNjc3LDEwICs2ODAsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAg
ICBjYXNlIFZhbHVlRGl2OgogICAgIGNhc2UgVmFsdWVNb2Q6CiAgICAgY2FzZSBWYWx1ZVBvdzoK
LSAgICAgICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpOworICAgICAg
ICByZXR1cm4gbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJp
Z0ludFVzZSk7CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICByZXR1cm4gbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlOwogCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCmluZGV4IGRlNzYzMjM3ZmFlLi41Njc2NzcwM2JmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjgsNiAr
MzY4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnR5cGVDaGVjayhKU1ZhbHVlU291cmNlIHNv
dXJjZSwgRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0CiAgICAgc3BlY3VsYXRpb25DaGVjayhl
eGl0S2luZCwgc291cmNlLCBlZGdlLm5vZGUoKSwganVtcFRvRmFpbCk7CiB9CiAKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnR5cGVDaGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwgRWRnZSBlZGdlLCBT
cGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBqdW1wTGlzdFRvRmFpbCwgRXhpdEtpbmQgZXhpdEtpbmQpCit7CisgICAgQVNTRVJUKG5lZWRz
VHlwZUNoZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCkpOworICAgIG1faW50ZXJwcmV0ZXIu
ZmlsdGVyKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7CisgICAgc3BlY3VsYXRpb25DaGVjayhl
eGl0S2luZCwgc291cmNlLCBlZGdlLm5vZGUoKSwganVtcExpc3RUb0ZhaWwpOworfQorCiBSZWdp
c3RlclNldCBTcGVjdWxhdGl2ZUpJVDo6dXNlZFJlZ2lzdGVycygpCiB7CiAgICAgUmVnaXN0ZXJT
ZXQgcmVzdWx0OwpAQCAtMTcwOCw2ICsxNzE1LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
CiAKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAg
ICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRp
b24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCB8fCBjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAg
IGNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlv
bik7CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
SW50NTJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzUsMjQgKzM1
NDYsNDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5v
ZGUpCiB7CiAgICAgRWRnZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hp
bGQxLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYg
KGNoaWxkMS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRo
ZSByZXByZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVk
IGlmIHdlIG1vdmUgYml0cyBhcm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6
QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6Qmln
SW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50
NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0
cykpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRz
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0
R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJp
Z0ludDMyIC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQo
dGhpcywgY2hpbGQxKTsKICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigp
OwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJU
KGNoaWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFu
eUJpZ0ludFVzZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8v
IFJlcXVpcmVkIGZvciB0aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVy
YW5kUmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CkBAIC0zNTgwLDE0ICszNjE0LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3
aXNlTm90KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0
b3IsIEpfSklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVk
Z2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBu
b2RlLT5jaGlsZDIoKTsKIAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgfHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGls
ZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UpOworCiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkg
fHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlz
LCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5q
c1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1Zh
bHVlUmVncygpOwogCkBAIC0zNjMyLDExICszNjcwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9w
ZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICgh
bGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0
Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8g
UmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFs
dWVSZWdzKCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAg
ICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBs
YWNlKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
IHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVz
ZQogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAg
LTM2NzIsNTIgKzM3MTIsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0
d2lzZU9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7
CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRD
aGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2lu
ZCgpID09IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNl
KSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCk7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3By
KCksIHJlc3VsdEdQUik7CisKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZh
bHVlQml0QW5kOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0
b3IsIG9wZXJhdGlvblZhbHVlQml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgY2FzZSBWYWx1ZUJpdFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklU
Qml0WG9yR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRv
ZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAg
ICAgbV9qaXQuYW5kNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRP
cDxKSVRCaXRPckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3Ig
ZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAg
ICAgICBtX2ppdC5vcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVt
b3ZlcyB0aGUgdGFnLCBzbyB3ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVy
YXRpb24KKyAgICAgICAgICAgIG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgbV9qaXQub3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcp
LCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiBy
aWdodENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9
IGxlZnQuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8g
RklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRp
ZgogCi0gICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgc3BlY3Vs
YXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICBpZiAobGVmdENoaWxkLnVzZUtp
bmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJ
bnRVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAg
ICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENo
aWxkLCBsZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCBy
aWdodEdQUik7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJp
dEFuZDoKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0lu
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRp
b25WYWx1ZUJpdEFuZD4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0
WG9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhv
ckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dE9yQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55Qmln
SW50Qml0T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOwor
ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQpAQCAtMzc1Nyw3ICszODI5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMy
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAg
Sl9KSVRPcGVyYXRpb25fR0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9
PSBWYWx1ZUJpdFJTaGlmdAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3Bl
cmF0aW9uVmFsdWVCaXRVUlNoaWZ0OwpAQCAtMzc2Nyw5ICszODM5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUo
KSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0
Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVm
dENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1
ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJl
Z3MoKTsKIApAQCAtMzg2MSwyNyArMzkzNSwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVMU2hpZnRPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUt
PmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6
IHN1cHBvcnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBC
aWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNl
S2luZCgpID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSk7Ci0gICAgZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlv
blZhbHVlQml0TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8
SklUTGVmdFNoaWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2Rl
KQpAQCAtMzg4OSwyNyArMzk2MywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGls
ZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9y
dCBCaWdJbnQzMgorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkp
IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAg
ICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRH
UFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09
IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAg
ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0lu
dFJpZ2h0U2hpZnRCaXRPcChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNoaWZ0T3AoTm9kZSogbm9kZSkKQEAgLTM5MjAsNyArMzk5NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAg
IGVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9y
QmlnSW50UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0zOTUwLDE5ICs0MDI0LDY3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFk
ZChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAg
IEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
cmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklY
TUU6IGRvIHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRh
dGUgbGVmdC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2Ug
YW5kIG90aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAg
ICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxl
ZnQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAg
IG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBz
b21lIHdheSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92
ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAg
IG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBs
ZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNw
ZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3Mg
PSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJp
Z2h0LmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2Fs
bCBhIG1vcmUgc3BlY2lhbGl6ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJ
bnQzMi9IZWFwQmlnSW50CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxl
ZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxh
dGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmln
aHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRC
aWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJp
Z2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtNDAwOCw0NCArNDEzMCw5MCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBu
b2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAK
LSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAg
ICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29s
IG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBS
UmVnID0gdHJ1ZTsKLSNlbmRpZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMy
T3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmln
SW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBG
SVhNRTogZG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11
dGF0ZSBsZWZ0L3JpZ2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVz
ZSBhbmQgb3RoZXIgdHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUo
bGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1
bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0
aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBKSVRTdWJJ
Qyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsK
LSAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGlt
aXplOwotICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
U3ViOworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3Zl
cmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5i
cmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwg
cmVzdWx0R1BSKTsKIAotICAgICAgICBjb21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1Nj
cmF0Y2hHUFJSZWcsIG5lZWRzU2NyYXRjaEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVz
dWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmln
SW50MzIvSGVhcEJpZ0ludAogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmln
SW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklY
TUU6IHdoeSBkbyBjb21waWxlVmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90
TnVtYmVyIGJ1dCBub3QgVmFsdWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBBbnlCaWdJbnRVc2UpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZUFueUJpZ0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlC
aWdJbnQocmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5q
c1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1Zh
bHVlUmVncygpOwogCi0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwotICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmln
aHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAKLSAgICBzcGVjdWxhdGVCaWdJ
bnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0
R1BSKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQ
UlJlZyA9IGZhbHNlOworI2Vsc2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7
CisgICAgYm9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9j
a0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyog
c3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAg
ICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7Cisg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAg
IGNvbXBpbGVNYXRoSUMobm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3Jh
dGNoRlBSUmVnLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5j
dGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYzMCw2ICs0Nzk4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAg
IC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHBy
b2JhYmx5IGFsc28gZm9yIEhlYXBCaWdJbnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CkBAIC00ODEwLDI5ICs0OTc5LDYxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRD
aGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGls
ZDIoKTsKIAotICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdo
dENoaWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
aWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBG
SVhNRTogdGhlIGNvZGUgYmV0d2VlbiBjb21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBh
bmQgY29tcGlsZVZhbHVlTXVsIGZvciBCaWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0
cnkgdG8gZ2V0IHJpZCBvZiB0aGUgZHVwbGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0lu
dDMyT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRl
QmlnSW50MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAv
LyBGSVhNRTogZG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdl
IG11dGF0ZSBsZWZ0L3JpZ2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBS
ZXVzZSBhbmQgb3RoZXIgdHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2Rl
LgorICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1v
dmUobGVmdC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihy
ZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAg
ICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTog
YWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxl
cjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAg
ICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1F
OiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAg
ICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQu
dXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBz
cGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChs
ZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hp
bGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25O
b3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxk
Lm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBp
ZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVy
KHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNl
KSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywg
cmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRl
KG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTUw
MTIsMjkgKzUyMTMsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5v
ZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRn
ZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VL
aW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkg
eworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkg
d2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2Rl
IGZvciBEaXYgZ2V0cy4KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0lu
dFVzZSkpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hp
bGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxk
KTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcg
cmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENo
aWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0
R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwor
ICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5v
ZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihs
ZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywg
bGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNW
YWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1
ZVJlZ3MoKTsKIApAQCAtNTA0OCw2ICs1MjUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBB
U1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFs
PEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdo
dDsKIApAQCAtNTI5NywyOSArNTUwNCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEo
KTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBm
YXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBw
YXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVm
dEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdwcigp
OwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk1vZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5k
IG9wMSh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdo
dENoaWxkKTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5i
aW5hcnlVc2VLaW5kKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMs
IHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5v
ZGUsIGxlZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpT
VmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBv
cDJSZWdzID0gb3AyLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4
NjEsMzAgKzYwNzIsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5v
ZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRn
ZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3Qg
cGF0aCBmb3IgQmlnSW50MzIgZm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJl
dHR5IG9mdGVuLgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdo
dEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQs
IGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAg
ICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwor
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8
fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSk7CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAg
SlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
SlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUo
bm9kZSwgcmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFs
dWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3Mo
KTsKIApAQCAtNjAzMiw2ICs2MjQ2LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUo
Tm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIGNvbXBpbGVC
aWdJbnQzMkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyNlbmRpZgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2Rl
LCBjb25kaXRpb24pOwpAQCAtNjA2MCw2ICs2MjgwLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBhZGQgSGVh
cEJpZ0ludCBjYXNlIGhlcmUuCisgICAgLy8gTm90IGhhdmluZyBpdCBtZWFucyB0aGF0IHRoZSBj
b21wYXJlIHdpbGwgbm90IGJlIGZ1c2VkIHdpdGggdGhlIGJyYW5jaCBmb3IgdGhpcyBjYXNlLgor
CiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVCb29sZWFu
Q29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjEzOCw3ICs2MzYxLDI0IEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAg
ICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7
CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAg
ICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwor
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9k
ZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2Rl
ID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAg
ICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwog
ICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTg1LDgg
KzY0MjUsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9k
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5
KG5vZGUpOworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKQEAgLTYyODAsOCArNjUyMCw4IEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5n
VG9VbnR5cGVkRXF1YWxpdHkobm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55Qmln
SW50VXNlKSk7CiAgICAgcmV0dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAK
QEAgLTEwNTQwLDE4ICsxMDc4MCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
eW1ib2woRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigp
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwg
R1BSUmVnIGNlbGwpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVk
Z2UgZWRnZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwg
bV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNI
ZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJ
bnQoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBv
cGVyYW5kLmdwcigpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2Vs
bChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MpCkBAIC0xMDcyMSw4ICsxMDk2MSwxNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNl
IFN5bWJvbFVzZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxh
dGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6
CisgICAgICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5k
aWYKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
ZWRnZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAg
ICBzcGVjdWxhdGVTdHJpbmdPYmplY3QoZWRnZSk7CkBAIC0xMzA4MSwxNyArMTMzMjksMTggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpT
VmFsdWVSZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2gg
PSB0ZW1wLmdwcigpOworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMy
IGhlcmUgKGFuZCBmb3IgdHlwZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMg
Y2FsbGVkIGluIHRoaXMgZmlsZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5j
aElmTm90Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGlzQmlnSW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkp
KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7
CiAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90TnVtYmVyKGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJ
bnQubGluaygmbV9qaXQpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9q
aXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9O
dW1lcmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRS
ZWdzKSk7CkBAIC0xMzk4MCw5ICsxNDIyOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAg
ICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtF
U05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFs
cyBmb3IgQmlnSW50VXNlCisgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNw
ZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5OTQsOCArMTQy
NDMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSog
bm9kZSkKICAgICBsZWZ0LnVzZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRl
QmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9k
ZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNo
aWxkMSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigp
LCByaWdodEdQUik7CiAKICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBm
NzUzNTg5NDVlYS4uN2Q2ZjFjZWJhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQ
UlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRl
Q2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7Cisj
ZW5kaWYKICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0lu
dDMyKE5vZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9w
ZXJhdGlvbl9HSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSos
IE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAg
ICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2Rl
LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZv
aWQgY29tcGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwg
SklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlRG91YmxlQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91
YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3lt
Ym9sRXF1YWxpdHkoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwog
ICAgIHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xF
ZGdlLCBFZGdlIHVudHlwZWRFZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2Rl
KiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICB2b2lkIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5D
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNv
bmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3Nl
bWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21waWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBTbmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5j
dGlvbj4KLSAgICB2b2lkIGVtaXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVu
dHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3Ao
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZv
aWQgZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlw
ZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVM
U2hpZnRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZVNoaWZ0T3AoTm9kZSopOwpAQCAtMTU2MSw2ICsxNTcwLDcgQEAgcHVi
bGljOgogICAgIC8vIEhlbHBlcnMgZm9yIHBlcmZvcm1pbmcgdHlwZSBjaGVja3Mgb24gYW4gZWRn
ZSBzdG9yZWQgaW4gdGhlIGdpdmVuIHJlZ2lzdGVycy4KICAgICBib29sIG5lZWRzVHlwZUNoZWNr
KEVkZ2UgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKSB7IHJldHVybiBt
X2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7IH0K
ICAgICB2b2lkIHR5cGVDaGVjayhKU1ZhbHVlU291cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0
eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIEV4aXRL
aW5kID0gQmFkVHlwZSk7CisgICAgdm9pZCB0eXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwgRWRnZSwg
U3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QganVtcExpc3RUb0ZhaWwsIEV4aXRLaW5kID0gQmFkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBz
cGVjdWxhdGVDZWxsVHlwZVdpdGhvdXRUeXBlRmlsdGVyaW5nKEVkZ2UsIEdQUlJlZyBjZWxsR1BS
LCBKU1R5cGUpOwogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbFR5cGUoRWRnZSwgR1BSUmVnIGNlbGxH
UFIsIFNwZWN1bGF0ZWRUeXBlLCBKU1R5cGUpOwpAQCAtMTU3Miw2ICsxNTgyLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lk
IHNwZWN1bGF0ZURvdWJsZVJlcEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQorI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOwor
ICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJl
YWxOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpA
QCAtMTYyMSw4ICsxNjM1LDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JT
dHJpbmdPYmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVn
IGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3Vs
YXRlQmlnSW50KEVkZ2UsIEdQUlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChF
ZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOwor
ICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5v
dENlbGwoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVt
cCk7CkBAIC0yNjAwLDYgKzI2MTQsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPcklu
dmFsaWQ7CiB9OwogCisjaWYgVVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAg
ICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NF
UlQobV9qaXQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAg
ICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0K
KworICAgIH5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2Nr
KG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJl
ZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmln
SW50MzIoZWRnZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKwor
ICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdl
OworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMy
KQorCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3Vy
Y2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAg
IEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2MjVjYTBlYTZkNy4uMDdh
ZGQxOTBhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE4Niw3ICs0MTg2LDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5Ogog
ICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5
IG9ubHkgdXNlZCBpbiA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKwor
ICAgIGNhc2UgSXNCaWdJbnQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2Rl
LCAiSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25s
eSBiZSB0cnVlIGluIDY0IGJpdCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDFlNjAyYTc1ODEyLi5iNjQ1MDBmOWMzNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM4LDcgKzEzOCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUoRWRnZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0
YUZvcm1hdEpTQm9vbGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBj
YXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAt
MzQwLDggKzM0MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtl
biA9IHRtcDsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJn
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3Bl
Y3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEu
Z3ByKCk7CiAgICAgR1BSUmVnIGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQz
ICszNjcsNjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0
cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25a
ZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0
KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsK
LSAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5j
aElmSW50MzIoYXJnMUdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUg
PSBtX2ppdC5icmFuY2hJZk51bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1f
aml0KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElm
SW50MzIoYXJnMkdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0g
bV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9q
aXQpOwotICAgICAgICAKLSAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5v
dEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0g
ICAgICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29D
ZWxsc0Nhc2UubGluaygmbV9qaXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8g
KGFzc3VtaW5nICdpbnZlcnQnIHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERv
dWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAg
ICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAg
ICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBz
bG93UGF0aDsKKyAgICAgICAgIGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMg
ZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwg
d2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZl
bHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAg
ICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBh
ZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdo
IGJpdHMgYXQgMAorICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVu
IDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcg
b25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOwor
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2pp
dC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhp
Z2hCaXRzKSwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIo
KSwgcmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4
dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAg
ICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkp
OworCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQ
UiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91
YmxlLmxpbmsoJm1faml0KTsKLSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAg
ICAgICAKLSAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0g
ICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8g
YSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJp
Z0ludCA9PT0gQmlnSW50MzIpCisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50
MzIsIHdlIG9ubHkgaGF2ZSB0byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFy
ZSBjZWxscyAoZm9yIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3Ry
aW5nKQorICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRv
IGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMg
Q2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMg
Q2VsbCkKKyAgICAgICAgLy8gICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAg
ICAgICAgLy8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0
IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdo
dCkgaXMgQ2VsbCkKKyAgICAgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUg
dG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAg
ICAgIElmIGF0IGxlYXN0IG9uZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwg
YmUgMC4KKyAgICAgICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhl
biB0aGUgJ090aGVyJyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVk
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BS
LCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BS
LCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2Vu
IDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQ
UikpOwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBK
SVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAg
ICAganVtcChub3RUYWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAv
LyBGSVhNRTogc29tZSBvZiB0aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNw
ZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwogICAgIEpTVmFsdWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwog
ICAgIEpTVmFsdWVSZWdzIGFyZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJl
ZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7
CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwpAQCAtNDI4LDMzICs0NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wg
aW52ZXJ0KQogICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJy
ZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLQotICAgIG1faml0Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCBy
ZXN1bHRHUFIpOworICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVy
dCcgdG8gYmUgZmFsc2UpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3Vi
bGUpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQp
OworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToK
KyAgICByZXR1cm4gcmVzdWx0OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd1BhdGhDYXNlczsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1f
aml0LmJyYW5jaElmQ2VsbChyZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVm
dE9LID0gbV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAg
ICBsZWZ0T0subGluaygmbV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBt
X2ppdC5icmFuY2hJZkludDMyKGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk51bWJlcihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0
T0subGluaygmbV9qaXQpOwotCi0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBp
bGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJS
ZWdzLmdwcigpLCByZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKLQotICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1Bh
dGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcx
UmVncy5ncHIoKSwgYXJnMlJlZ3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxl
bWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUg
YnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlm
IHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBp
cyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQg
d2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8v
IElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25s
eSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVh
bCAxPDw1MC4KKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3Zl
KGFyZzFHUFIsIHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdw
cigpKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdo
Qml0cyksIHJlc3VsdEdQUik7CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0
Y2guZ3ByKCksIHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3Qg
bmV4dExvd2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7Cisg
ICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3Zl
T3JFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7
CisKKyAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcy
R1BSLCByZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFu
Y2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3
ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qg
b25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAg
Ly8gSWYgd2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEg
c2xvdyBwYXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0g
SGVhcEJpZ0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2lu
ZyB0d28gYnJhbmNoZXMsIHdlIGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0
CisgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBh
cyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGln
aCBiaXRzIGFyZSAwIgorICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEg
ZG91YmxlLCAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8g
KChsZWZ0ICYgcmlnaHQpIGlzIENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwg
dGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAg
IC8vICAgICAgSWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMg
d2lsbCBiZSAwLgorICAgIC8vICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRo
ZW4gdGhlICdPdGhlcicgdGFnIHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2Vl
ZAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCBy
ZXN1bHRHUFIpOworI2Vsc2UKKyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3Vs
dEdQUik7CisjZW5kaWYKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNl
bGwocmVzdWx0R1BSKSk7CiAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
NjQoIWludmVydCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCks
IHJlc3VsdEdQUik7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRv
bmUubGluaygmbV9qaXQpOwogCisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCks
IHJlc3VsdEdQUik7CisKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9j
dXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwNCw2
ICsxMDU5LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRl
cm5hbChFZGdlIGVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRT
dG9yYWdlOgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZv
cm1hdEpTQmlnSW50MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJl
bnROb2RlLCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0x
MTg0LDYgKzEyNDEsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxs
KEVkZ2UgZWRnZSkKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dpdGNoIChpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkpIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGVzZSBjYXNlcyBsb29r
IGxpa2UgdGhleSBjb3VsZCBzaGFyZSBjb2RlLgorICAgIC8vIExvb2sgYXQgZmlsbFNwZWN1bGF0
ZUludDMySW50ZXJuYWwgZm9yIGFuIGV4YW1wbGUuCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTog
ewogICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTIzNSw2ICsxMjk0LDgg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQz
MjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9q
aXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAK
ICAgICBkZWZhdWx0OgpAQCAtMTMxMiw2ICsxMzczLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3Rv
cmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJp
Y3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50
Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMy
MCw2ICsxMzgzLDEyNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAo
U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Cisg
ICAgR1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAgICAvLyBJIGlubGlu
ZWQgc3BlY3VsYXRlSGVhcEJpZ0ludCBiZWNhdXNlIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0byBj
YWxsIGl0IGhlcmUgaWYgaXQgZGlkIEpTVmFsdWVPcGVyYW5kIC8gU3BlY3VsYXRlWFhYT3BlcmFu
ZCwKKyAgICAvLyBhcyBpdCB3b3VsZCBjb25mdXNlIHRoZSBERkcgcmVnaXN0ZXIgYWxsb2NhdG9y
LgorICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywgZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBT
cGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KHZhbHVlUmVncy5ncHIo
KSkpOworICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICBub3RDZWxsLmxpbmsoJm1f
aml0KTsKKyAgICBERkdfVFlQRV9DSEVDSyh2YWx1ZVJlZ3MsIGVkZ2UsIFNwZWNDZWxsQ2hlY2sg
fCBTcGVjQmlnSW50MzIsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzIodmFsdWVSZWdzLmdwcigp
LCB0ZW1wR1BSKSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgdW5sb2NrKHRlbXBHUFIp
OworfQorCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCaWdJbnQzMihFZGdl
IGVkZ2UpCit7CisgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRn
ZSk7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKKworICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQmlnSW50MzIpOworICAgIGlmICh2YWx1ZS5pc0Ns
ZWFyKCkpIHsKKyAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5kKCkpKQor
ICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIDApOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVy
KCk7CisgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFs
UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZv
cm1hdCgpKSB7CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogeworICAgICAgICBHUFJSZWcgZ3By
ID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+YXNKU1ZhbHVlKCk7CisgICAgICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQp
OworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNCaWdJbnQzMigpKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNWYWx1ZSkpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICAgICAgfQorCisgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9y
bWF0KCk7CisgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwg
KHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
QmlnSW50MzIsIHNwaWxsRm9ybWF0KTsKKworICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisKKyAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRCaWdJbnQzMikgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBub3Qg
eWV0IGltcGxlbWVudGVkIHRoaXMKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRK
U0JpZ0ludDMyKSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEpTVmFs
dWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgICAgIHJl
dHVybiBncHI7CisgICAgICAgIH0KKworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICBpbmZvLmZpbGxK
U1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlMpOworICAgICAgICBtX2dwcnMudW5s
b2NrKGdwcik7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKworICAgIGNhc2UgRGF0YUZv
cm1hdEpTOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dw
cnMubG9jayhncHIpOworICAgICAgICBpZiAodHlwZSAmIH5TcGVjQmlnSW50MzIpIHsKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAg
R1BSUmVnIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk51bWJlcihncHIpKTsKKyAgICAgICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKGdwciwgdGVt
cEdQUikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhncHIpLCBlZGdlLCBmYWlsdXJlQ2FzZXMpOworICAgICAgICAgICAgdW5sb2NrKHRlbXBHUFIp
OworICAgICAgICB9CisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERh
dGFGb3JtYXRKU0JpZ0ludDMyKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNC
b29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0
SW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0
SlNDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0RG91
YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50
NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0
QmlnSW50MzI6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2Rl
LCAiQmFkIGRhdGEgZm9ybWF0Iik7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkNvcnJ1cHQgZGF0YSBmb3JtYXQiKTsKKyAg
ICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQorI2VuZGlmIC8vIFVTRShCSUdJ
TlQzMikKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFN0cmljdEVxdWFsaXR5
KEVkZ2Ugb2JqZWN0Q2hpbGQsIEVkZ2Ugb3RoZXJDaGlsZCkKIHsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBvcDEodGhpcywgb2JqZWN0Q2hpbGQpOwpAQCAtMTU1Niw2ICsxNzM5LDU1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqIG5vZGUs
IE5vZGUqIGJyYW5jaE5vZGUsIEpJCiAgICAganVtcChub3RUYWtlbik7CiB9CiAKKyNpZiBVU0Uo
QklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50MzJDb21wYXJlKE5v
ZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikK
K3sKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisKKyAg
ICBpZiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0g
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSB7CisgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gg
dGhlIG9wZXJhbmRzLCBzaW5jZSB0aGUgdGFnIGJpdHMgYXJlIGlkZW50aWNhbAorICAgICAgICBt
X2ppdC5jb21wYXJlNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAg
ICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0
LnVuYm94QmlnSW50MzIocmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDIuZ3By
KCksIHRlbXAuZ3ByKCkpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHRlbXAuZ3ByKCkp
OworICAgICAgICBtX2ppdC5jb21wYXJlNjQoY29uZGl0aW9uLCByZXN1bHQuZ3ByKCksIHRlbXAu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfQorCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZv
cm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKE5v
ZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmRpdGlvbikKK3sKKyAgICAvLyBPdGhlciBjb25kaXRpb25zIHdvdWxkIHJlcXVpcmUg
dW5ib3hpbmcgdGhlIEJpZ0ludDMyIHRvIGdldCBjb3JyZWN0IHJlc3VsdHMgb24gbmVnYXRpdmUg
bnVtYmVycy4KKyAgICBBU1NFUlQoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8
fCBjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKTsKKworICAgIEJhc2ljQmxv
Y2sqIHRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBC
YXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4u
YmxvY2s7CisKKyAgICAvLyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwgYnJhbmNoIHRvIHRo
ZSB0YWtlbiBibG9jay4KKyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0Y2ggdGFrZW4gd2l0
aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3ZSBjYW4gZmFsbCB0
aHJvdWdoLgorICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBjb25kaXRp
b24gPSBKSVRDb21waWxlcjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAgIEJhc2ljQmxvY2sq
IHRtcCA9IHRha2VuOworICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBub3RUYWtl
biA9IHRtcDsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgb3AyKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKworICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBv
cDIuZ3ByKCksIHRha2VuKTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9k
ZSogbm9kZSkKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CkBAIC00MDg3LDYgKzQzMTksMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIElzQmlnSW50OiB7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVlLmdwcigpKTsKKworICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spLCByZXN1
bHRHUFIpOworICAgICAgICBtX2ppdC5hbmQ2NCh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
KyAgICAgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1wKCk7CisKKyAgICAgICAg
aXNDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVx
dWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBCaWdJbnRUeXBlKSwgcmVz
dWx0R1BSKTsKKworICAgICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOworICAgICAgICB1
bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisjZWxzZQorICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggNzVmM2EwNmIwZmMuLjZh
MjU0Y2U3YzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTEyNSw3ICsxMjUsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFZhbHVlQml0T3I6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRBbmQ6CiAgICAg
ICAgIGNhc2UgVmFsdWVCaXRYb3I6IHsKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG1h
eWJlIHN1cHBvcnQgdGhlIGNhc2Ugd2hlcmUgb25lIG9wZXJhbmQgaXMgYWx3YXlzIEhlYXBCaWdJ
bnQgYW5kIHRoZSBvdGhlciBpcyBhbHdheXMgQmlnSW50MzI/CisgICAgICAgICAgICBpZiAobV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBC
aWdJbnRVc2UpCiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM3NSw3ICszNzYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICAgICAgaWYgKG1fbm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG1fbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpID09IEhlYXBCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55Qmln
SW50VXNlKQogICAgICAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKIAogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAppbmRl
eCA4ZWY3M2I2ZjJlOC4uYWI2MzFjOWNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NSw4ICsxNDUsMTQgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNlIFN5bWJvbFVzZToKICAg
ICAgICAgb3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmln
SW50VXNlOgotICAgICAgICBvdXQucHJpbnQoIkJpZ0ludCIpOworICAgIGNhc2UgQW55QmlnSW50
VXNlOgorICAgICAgICBvdXQucHJpbnQoIkFueUJpZ0ludCIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkhlYXBCaWdJbnQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIG91dC5wcmlu
dCgiQmlnSW50MzIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNl
OgogICAgICAgICBvdXQucHJpbnQoIlN0cmluZ09iamVjdCIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaAppbmRleCA5YzEzYzViY2QzNS4uZjRmN2IzM2JiNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsOSBAQCBlbnVtIFVz
ZUtpbmQgewogICAgIEtub3duU3RyaW5nVXNlLAogICAgIEtub3duUHJpbWl0aXZlVXNlLCAvLyBU
aGlzIGJpemFycmUgdHlwZSBhcmlzZXMgZm9yIG9wX3N0cmNhdCwgd2hpY2ggaGFzIGEgYnl0ZWNv
ZGUgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBvbmx5IHNlZSBwcmltaXRpdmVzIChpLmUuIG5vdCBv
YmplY3RzKS4KICAgICBTeW1ib2xVc2UsCi0gICAgQmlnSW50VXNlLAorICAgIEFueUJpZ0ludFVz
ZSwKKyAgICBIZWFwQmlnSW50VXNlLAorICAgIEJpZ0ludDMyVXNlLAogICAgIERhdGVPYmplY3RV
c2UsCiAgICAgTWFwT2JqZWN0VXNlLAogICAgIFNldE9iamVjdFVzZSwKQEAgLTE1Miw4ICsxNTQs
MTIgQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1c2VLaW5k
KQogICAgICAgICByZXR1cm4gU3BlY0hlYXBUb3AgJiB+U3BlY09iamVjdDsKICAgICBjYXNlIFN5
bWJvbFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRVc2U6
CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CiAgICAgICAgIHJldHVybiBTcGVjQmlnSW50OworICAg
IGNhc2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OworICAg
IGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgY2Fz
ZSBQcm9taXNlT2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY1Byb21pc2VPYmplY3Q7CiAg
ICAgY2FzZSBEYXRlT2JqZWN0VXNlOgpAQCAtMjEyLDI0ICsyMTgsNiBAQCBpbmxpbmUgYm9vbCBt
YXlIYXZlVHlwZUNoZWNrKFVzZUtpbmQga2luZCkKICAgICByZXR1cm4gIXNob3VsZE5vdEhhdmVU
eXBlQ2hlY2soa2luZCk7CiB9CiAKLWlubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2lu
ZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEludDMyVXNlOgotICAgIGNhc2Ug
S25vd25JbnQzMlVzZToKLSAgICBjYXNlIE51bWJlclVzZToKLSAgICBjYXNlIFJlYWxOdW1iZXJV
c2U6Ci0gICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICBj
YXNlIERvdWJsZVJlcFJlYWxVc2U6Ci0gICAgY2FzZSBBbnlJbnRVc2U6Ci0gICAgY2FzZSBEb3Vi
bGVSZXBBbnlJbnRVc2U6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIGlubGluZSBib29sIGlzRG91YmxlKFVzZUtp
bmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTI2MSw3ICsyNDksNyBAQCBpbmxp
bmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgU3RyaW5nVXNlOgogICAgIGNh
c2UgS25vd25TdHJpbmdVc2U6CiAgICAgY2FzZSBTeW1ib2xVc2U6Ci0gICAgY2FzZSBCaWdJbnRV
c2U6CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgog
ICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgY2FzZSBEYXRlT2JqZWN0VXNl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDQ4OWIwNmQ1OGViLi40Njc5ZDE4NzQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjYxLDYgKzI2MSw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgSXNVbmRlZmluZWRPck51
bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKKyAgICBjYXNlIElz
QmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6CiAg
ICAgY2FzZSBJc09iamVjdE9yTnVsbDoKQEAgLTQ4NCw3ICs0ODUsOSBAQCBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgICAgICAgICBjYXNlIEJp
Z0ludFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAg
ICAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVz
ZToKICAgICAgICAgICAgICAgICBjYXNlIERhdGVPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAg
Y2FzZSBNYXBPYmplY3RVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTZXRPYmplY3RVc2U6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKaW5kZXggNWI0
OTI1Y2ZmYmMuLmMwZjRmMmIwNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21tb25WYWx1ZXMuY3BwCkBAIC01OCw2ICs1OCw5IEBAIHZvaWQgQ29tbW9uVmFsdWVzOjpp
bml0aWFsaXplQ29uc3RhbnRzKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBi
bG9jCiAgICAgaW50UHRyVGhyZWUgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAzKTsKICAgICBpbnRQdHJFaWdodCA9IGJsb2NrLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDgpOwogICAgIGRvdWJsZVplcm8gPSBibG9jay0+
YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGJpZ0ludDMyWmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgSlNWYWx1ZTo6QmlnSW50MzJUYWcpOworI2VuZGlmCiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbW1vblZhbHVlcy5oCmluZGV4IGMxZDZkNWE1NTFkLi4zMWEzOTMyOTA1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCkBAIC01Niw3ICs1NiwxMCBA
QCBwdWJsaWM6CiAgICAgTFZhbHVlIGludFB0clRocmVlIHsgbnVsbHB0ciB9OwogICAgIExWYWx1
ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKICAgICBMVmFsdWUgZG91YmxlWmVybyB7IG51bGxw
dHIgfTsKLSAgICAKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGJpZ0ludDMyWmVybyB7
IG51bGxwdHIgfTsKKyNlbmRpZgorCiAgICAgY29uc3QgdW5zaWduZWQgcmFuZ2VLaW5kIHsgMCB9
OwogICAgIGNvbnN0IHVuc2lnbmVkIHByb2ZLaW5kIHsgMCB9OwogICAgIGNvbnN0IExWYWx1ZSBi
cmFuY2hXZWlnaHRzIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGU1NGI2ZjYzZjZkLi4yMmZlMTExYjQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTM1OCw2
ICsxMzU4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc051bWJlcjoKICAgICAgICAgICAg
IGNvbXBpbGVJc051bWJlcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXNC
aWdJbnQ6CisgICAgICAgICAgICBjb21waWxlSXNCaWdJbnQoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGNvbXBpbGVOdW1i
ZXJJc0ludGVnZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE0MSwxMSArMjE0NCwyOCBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIo
bGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihy
aWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0
ZUFkZCh1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3Vs
YXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisK
KyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7Cisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJ
bnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFw
QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25BZGRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNjIsMTEgKzIxODIsMjgg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJpZ0ludDMy
KGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94QmlnSW50MzIo
cmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5zcGVjdWxh
dGVTdWIodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVzc1NwZWN1
bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOwor
CisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1bHQpOwor
ICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTgz
LDExICsyMjIwLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogCi0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2Up
KSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0g
dW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1
bmJveEJpZ0ludDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0g
bV9vdXQuc3BlY3VsYXRlTXVsKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAg
ICAgYmxlc3NTcGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIs
IG1fb3JpZ2luKTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50
MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk11bEJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjkxLDcg
KzIzNDUsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVu
YzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1f
bm9kZTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSUMgeWV0LgorICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5v
ZGUtPmNoaWxkMigpKTsKIApAQCAtMjU2MCwxMSArMjYyOCwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29tcGlsZVZhbHVlRGl2KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgLy8gRklYTUU6IGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5
cGUoKSwgb3BlcmF0aW9uRGl2QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxl
ZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMjYzOSwxOCArMjcwOCwyMSBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29tcGlsZVZhbHVlTW9kKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2Up
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAvLyBGSVhNRTogYWRkIGEgQmlnSW50MzIgZmFzdCBwYXRoIGhlcmUKKyAgICAg
ICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uTW9kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7
CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJh
dGlvbk1vZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7
Ci0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IFVudHlwZWRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlLCBt
X25vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVmFsdWVNb2QsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1
bHQpOwogICAgIH0KQEAgLTI4MTUsMTcgKzI4ODcsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVWYWx1ZVBvdygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwot
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAg
ICAgICAgTFZhbHVlIGJhc2UgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUKKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAg
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgZXhwb25lbnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvblBvd0JpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgYmFzZSwgZXhwb25lbnQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChw
b2ludGVyVHlwZSgpLCBvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBleHBvbmVudCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEFTU0VSVChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlC
aWdJbnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBleHBvbmVu
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZVBvdywgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgYmFzZSwgZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQpAQCAtMzIwNiw5ICszMjgyLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFs
dWVCaXROb3QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAg
ICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAgICAg
ICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJp
dE5vdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgb3BlcmFuZCk7CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBC
aWdJbnQzMlVzZSkgeworICAgICAgICAgICAgTFZhbHVlIG9wZXJhbmQgPSBsb3dCaWdJbnQzMiht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJpY2sgcmVs
aWVzIG9uIGRldGFpbHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEJpZ0ludDMyLCBhbmQgd2ls
bCBoYXZlIHRvIGJlIHVwZGF0ZWQgaWYgd2UgbW92ZSBiaXRzIGFyb3VuZC4KKyAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgxMik7CisgICAgICAgICAg
ICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayA9PSAweGZmZmUwMDAwMDAwMDAw
MTIpOworICAgICAgICAgICAgdWludDY0X3QgbWFza0ZvckJpZ0ludDMyQml0cyA9IDB4MDAwMGZm
ZmZmZmZmMDAwMDsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRYb3Iob3Bl
cmFuZCwgbV9vdXQuY29uc3RJbnQ2NChtYXNrRm9yQmlnSW50MzJCaXRzKSk7CisgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNl
bmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmln
SW50VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIG9wZXJhbmQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjI2LDExICszMzE2LDIzIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRBbmQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVu
Ym94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5kCisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0QW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
I2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRV
c2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNDYsMTEgKzMz
NDgsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE9yKCkKICAgICB7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRPckJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYg
KG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
Ly8gTm8gbmVlZCB0byB1bmJveCwgc2luY2UgdGhlIHRhZ2dpbmcgaXMgbm90IGFmZmVjdGVkIGJ5
IGJpdEFuZAorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKGxlZnQsIHJp
Z2h0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjY2LDExICsz
MzgwLDIzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRYb3IoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdE1pc3NpbmdUYWcgPSBtX291dC5iaXRYb3IobGVmdCwgcmlnaHQpOwor
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdE9yKHJlc3VsdE1pc3NpbmdUYWcs
IG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlm
CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7
CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI4NiwxMSArMzQxMiwyOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcGlsZVZhbHVlQml0UlNoaWZ0KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJ
bnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludDMyVXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGRvIHNvbWV0aGluZyBzbWFydGVy
IGhlcmUKKyAgICAgICAgICAgIC8vIFRoaW5ncyBhcmUgYSBiaXQgdHJpY2t5IGJlY2F1c2UgYSBy
aWdodC1zaGlmdCBieSBhIG5lZ2F0aXZlIG51bWJlciBpcyBhIGxlZnQtc2hpZnQgZm9yIEJpZ0lu
dHMuCisgICAgICAgICAgICAvLyBTbyBldmVuIGEgcmlnaHQgc2hpZnQgY2FuIG92ZXJmbG93Lgor
CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uVmFsdWVCaXRSU2hp
ZnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2Vu
ZGlmIC8vIFVTRShCSUdJTlQzMikKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJp
Z0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzAyLDI0
ICszNDQ2LDI1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5hU2hy
KAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksCi0gICAgICAgICAgICBt
X291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIo
MzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQy
KCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhh
dCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBv
ZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcml0aEJpdExTaGlm
dCgpCiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5zaGwoCiAgICAgICAgICAgICBsb3dJ
bnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7CisgICAgICAgICAg
ICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50
MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNl
ZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0TFNoaWZ0KCkKICAgICB7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludCht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludCht
X25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIGFkZGluZyBhIGZh
c3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZS4KKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlm
dEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRM
U2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7
CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTMzMzYsNyArMzQ4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAg
ICAgc2V0SW50MzIobV9vdXQubFNocigKICAgICAgICAgICAgIGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQy
KCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmJpdEFuZChs
b3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7IC8vIEZJ
WE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0IGlzIGluY2x1
ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlVUludDMyVG9OdW1iZXIoKQpAQCAtNzQwOSw2ICs3NTU0LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIGlmIChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSAmIChTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KSkgewogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbm90TnVtYmVyID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisjZW5kaWYKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbFBhdGggPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKQEAgLTc0MTgsMTAgKzc1NjYsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAg
Ly8gbm90TnVtYmVyIGNhc2UuCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKG5vdE51bWJlciwgY29udGludWF0aW9uKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZSht
X25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90QmlnSW50
MzIpKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyKTsKKyNlbmRpZgog
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUt
PmNoaWxkMSgpKSksIHVuc3VyZShpc0NlbGxQYXRoKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2VsbFBhdGgpOwotICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOworICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSks
IHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgpOwogICAgICAgICAgICAgLy8gV2Ug
aGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWVyaWMuIEJ1dCBUb051bWVyaWMg
c3RpbGwgZXhpc3RzLgpAQCAtODQ5MSw3ICs4NjQzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKQogICAgICAgICAgICAgfHwg
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQogICAgICAgICAgICAgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpKSB7CisgICAgICAgICAgICB8fCBtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChTdHJpbmdVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChBbnlCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVxKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTg1MzQsNyArODY4OSw5NCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IC8vIE5vIG5lZWQgdG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBi
b3RoIHNpZGVzCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwg
cmlnaHQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFu
eUJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0IHdp
dGggaWYgKGxlZnQgPT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdodCBj
aGVja3MgKHNlZSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAgICAv
LyBUaGUgY29kZSB0aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBwc2V1
ZG8tY29kZToKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIobGVm
dCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNLKGlz
SGVhcEJpZ0ludChyaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50
OjplcXVhbHNUb0ludDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlmIChs
ZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
IGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0Jp
Z0ludDo6ZXF1YWxzVG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAgICAg
Q0hFQ0soaXNIZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNC
aWdJbnQ6OmVxdWFscyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgICAgICBMQmFzaWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0ludDMy
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNOb3RC
aWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNCaWdJbnQzMihsZWZ0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGxl
ZnRJc0JpZ0ludDMyKSwgdW5zdXJlKGxlZnRJc05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBzZXQgdGhlIG9yZGVyIG9mIHRoZSBibG9ja3MgdG8gbWF4aW1pemUgZmFsbHRo
cm91Z2gKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0JpZ0ludDMyKTsKKyAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQyKCkpKSwgdW5zdXJlKGJvdGhBcmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmln
SW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyKTsK
KyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0
LmFuY2hvcihtX291dC5lcXVhbChsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhvbmx5TGVmdElz
QmlnSW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVy
Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9
IHVuYm94QmlnSW50MzIobGVmdCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRM
ZWZ0SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgcmlnaHQsIHVuYm94ZWRMZWZ0KSkpOworICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNO
b3RCaWdJbnQzMik7CisgICAgICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRo
ZXJDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmVxdWFsKGxlZnQsIHJpZ2h0KSwgdW5zdXJlKGxlZnRFcXVhbHNSaWdodCksIHVuc3VyZShsZWZ0
SXNIZWFwQmlnSW50KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRFcXVhbHNS
aWdodCk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRMZWZ0RXF1YWxzUmlnaHQg
PSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNIZWFw
QmlnSW50KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92
ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKHJpZ2h0SXNCaWdJbnQzMiksIHVuc3Vy
ZShyaWdodElzTm90QmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmln
aHRJc0JpZ0ludDMyKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJp
Z0ludDMyKHJpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0SXNC
aWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90Qmln
SW50MzIpOworICAgICAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludFVua25vd25XaGV0aGVyQ2Vs
bChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJ
bnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBp
bnRzCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyODk1CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayByZXN1bHRCb3RoSGVhcEJpZ0lu
dCA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25Db21wYXJlU3RyaWN0RXEsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAgICAgICAgc2V0Qm9vbGVh
bihtX291dC5waGkoSW50MzIsIHJlc3VsdEJvdGhBcmVCaWdJbnQzMiwgcmVzdWx0TGVmdElzQmln
SW50MzIsIHJlc3VsdExlZnRFcXVhbHNSaWdodCwgcmVzdWx0UmlnaHRJc0JpZ0ludDMyLCByZXN1
bHRCb3RoSGVhcEJpZ0ludCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBraW5k
KTsKQEAgLTg2MTcsMTEgKzg4NTksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENy
ZWF0ZSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIEJpZ0ludFVzZQor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIENyZWF0ZSBzcGVjaWFsaXplZCB2
ZXJzaW9uIG9mIHN0cmljdCBlcXVhbHMgZm9yIGJpZyBpbnRzCiAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1Ci0gICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwpAQCAtODcwNyw2ICs4OTQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2gg
c21hcnRlciBoZXJlLCBzZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4g
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSk7CiAgICAgICAgIG5vblNwZWN1bGF0aXZlQ29tcGFyZSgKICAgICAgICAgICAgIFsmXSAo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgewpAQCAtMTA2NzAsNyArMTA5MTMsMzYgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3Vs
dCwgcGF0Y2hwb2ludFJlc3VsdCkpOwogICAgIH0KLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICB2b2lkIGNvbXBpbGVJc0JpZ0ludCgpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlz
Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBpc05vdENl
bGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZh
bHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbENhc2UpLCB1
bnN1cmUoaXNOb3RDZWxsQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSwgaXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoaXNCaWdJbnQzMih2YWx1ZSwg
cHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGludWF0
aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihp
c0NlbGxXaXRoVHlwZSh2YWx1ZSwgbV9ub2RlLT5xdWVyaWVkVHlwZSgpLCBtX25vZGUtPnNwZWN1
bGF0ZWRUeXBlRm9yUXVlcnkoKSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKElu
dDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CisgICAgfQorI2Vsc2UgLy8gaWYgIVVT
RShCSUdJTlQzMikKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEFMV0FZU19JTkxJTkUgdm9p
ZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBkZWFs
aW5nIHdpdGggQmlnSW50MzIsIHdlIHNob3VsZCBqdXN0IGVtaXQgSXNDZWxsV2l0aFR5cGUoSGVh
cEJpZ0ludCkgaW5zdGVhZC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisjZW5kaWYKICAgICB2b2lkIGNvbXBpbGVJc0NlbGxXaXRoVHlwZSgpCiAgICAgewog
ICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpA
QCAtMTQ0MDAsOSArMTQ2NzIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVtaXRCaW5hcnlTbmlw
cGV0KEpfSklUT3BlcmF0aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFu
ZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAgICAgICAg
IFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDQ2OCw4ICsxNDc0MiwxMSBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBBU1NFUlQobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJ
bnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dK
U1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQyKCkpOwogCiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAg
U25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkucmVzdWx0VHlwZSgpKTsKQEAgLTE1MDgxLDcgKzE1MzU4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wg
ZmxvdyBzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
ICAgICAgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQor
ICAgICAgICAgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJp
Z0ludCkKICAgICAgICAgICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAg
ICAgICAgICAgICAvLyAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgICAgIGRvIGV2aWwg
dGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTE1MDkxLDYgKzE1MzY4LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFs
dWUpCiAgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgICAg
ICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgICAgICAgICAv
LyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAgICAgICAgICAvLyAgICAgcmVz
dWx0ID0gKHZhbHVlICE9IEJpZ0ludDMyVGFnKQogICAgICAgICAgICAgLy8gfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAgICAgICAgIC8v
IH0KQEAgLTE1MDk4LDEzICsxNTM3NywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90U3RyaW5nQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBzdHJpbmdDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Js
b2NrIGJpZ0ludENhc2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90U3RyaW5nT3JCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3REb3VibGVDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnQz
MkNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Qmln
SW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrPiByZXN1bHRzOwpAQCAtMTUxMTgsMjAgKzE1
NDAxLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdFN0cmluZ0Nhc2UsIHN0cmluZ0Nhc2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNw
ZWNDZWxsIC0gU3BlY1N0cmluZykpLAotICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNl
KSwgdW5zdXJlKG5vdFN0cmluZ09yQmlnSW50Q2FzZSkpOworICAgICAgICAgICAgICAgIGlzSGVh
cEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcp
KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoaGVhcEJpZ0ludENhc2UpLCB1bnN1cmUobm90U3Ry
aW5nTm9ySGVhcEJpZ0ludENhc2UpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3Ry
aW5nQ2FzZSwgYmlnSW50Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdD
YXNlLCBoZWFwQmlnSW50Q2FzZSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5h
bmNob3IobV9vdXQubm90RXF1YWwodmFsdWUsIHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmcobV9n
cmFwaC5tX3ZtKSkpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAK
LSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIG5vdFN0cmluZ09yQmlnSW50
Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhoZWFwQmlnSW50Q2FzZSwgbm90U3Ry
aW5nTm9ySGVhcEJpZ0ludENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIG5vblplcm9CaWdJbnQg
PSBtX291dC5ub3RaZXJvMzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRp
dmUodmFsdWUsIG1faGVhcHMuSlNCaWdJbnRfbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChtX291dC5hbmNob3Iobm9uWmVyb0JpZ0ludCkpOwogICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RTdHJpbmdPckJpZ0ludENhc2UsIG5vdENlbGxDYXNlKTsKKyAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CiAg
ICAgICAgICAgICBMVmFsdWUgaXNUcnV0aHlPYmplY3Q7CiAgICAgICAgICAgICBpZiAobWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAg
ICBpc1RydXRoeU9iamVjdCA9IG1fb3V0LmJvb2xlYW5UcnVlOwpAQCAtMTUxNzQsOCArMTU0NTcs
MjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1bmJveERvdWJsZSh2YWx1ZSksIG1fb3V0
LmNvbnN0RG91YmxlKDApKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hv
cihkb3VibGVJc1RydXRoeSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91
YmxlQ2FzZSwgYmlnSW50MzJDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAg
ICAgICAgICAgICBpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgflNwZWNDZWxs
KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoYmlnSW50MzJDYXNlKSwgdW5zdXJlKG5vdEJpZ0lu
dDMyQ2FzZSkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnQzMkNhc2UsIG5v
dEJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAgICBMVmFsdWUgYmlnSW50MzJOb3RaZXJvID0gbV9v
dXQubm90RXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcp
KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihiaWdJbnQzMk5vdFpl
cm8pKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzJDYXNlLCBjb250aW51YXRp
b24pOworI2Vsc2UKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGNv
bnRpbnVhdGlvbik7CisjZW5kaWYKICAgICAgICAgICAgIExWYWx1ZSBtaXNjSXNUcnV0aHkgPSBt
X291dC5lcXVhbCgKICAgICAgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKG1pc2NJc1RydXRoeSkpOwpAQCAtMTU3ODAsMTMgKzE2MDc3LDE1IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vICAgICAgICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlm
IChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAg
IC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2ludCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlm
IChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAg
ICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCiAg
ICAgICAgIC8vICAgICB9CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVtYmVyKSB7CiAgICAg
ICAgIC8vICAgICByZXR1cm4gbnVtYmVyCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50
MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIGlm
IChpcyBudWxsKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0g
ZWxzZSBpZiAoaXMgYm9vbGVhbikgewpAQCAtMTU4MTQsNiArMTYxMTMsOSBAQCBwcml2YXRlOgog
ICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIG51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBM
QmFzaWNCbG9jayBub3ROdW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisjZW5kaWYKICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBib29sZWFuQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHVuZGVmaW5lZENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwpAQCAtMTU4NjYsNyArMTYxNjgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKG5vdFN0cmluZ0Nhc2UsIGJpZ0ludENhc2UpOwogICAgICAgICBtX291dC5icmFuY2go
Ci0gICAgICAgICAgICBpc0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0Nl
bGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmluZykpLAorICAgICAgICAgICAgaXNIZWFwQmlnSW50
KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNwZWNPYmplY3QgLSBTcGVj
U3RyaW5nKSksCiAgICAgICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShzeW1ib2xD
YXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgc3ltYm9sQ2FzZSk7
CkBAIC0xNTg4Miw4ICsxNjE4NCwxNSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgbm90TnVtYmVyQ2FzZSk7CiAgICAgICAgIGZ1bmN0b3Io
VHlwZW9mVHlwZTo6TnVtYmVyKTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIH5T
cGVjQ2VsbCksIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgbm90TnVsbENhc2UpOwor
I2Vsc2UKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwgbm90TnVsbENhc2Up
OworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBpc051bGw7CiAgICAgICAgIGlmIChwcm92ZW5UeXBl
KGNoaWxkKSAmIFNwZWNPdGhlcikKICAgICAgICAgICAgIGlzTnVsbCA9IG1fb3V0LmVxdWFsKHZh
bHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwpAQCAtMTY1ODEsMTUg
KzE2ODkwLDMzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgTFZhbHVlIGxvd0JpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SGVhcEJpZ0lu
dChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJh
bmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9
PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50VXNl
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKTsKIAogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdlLCBtb2RlKTsKLSAgICAgICAgc3BlY3VsYXRlQmln
SW50KGVkZ2UsIHJlc3VsdCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgcmVz
dWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgTFZhbHVlIGxvd0JpZ0ludDMyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSk7CisKKyAgICAgICAgTG93ZXJlZE5vZGVW
YWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBp
ZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2YWx1ZS52
YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHJlc3VsdCks
IGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMihyZXN1bHQpKTsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVj
ayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwor
ICAgICAgICByZXR1cm4gbV9vdXQuYmlnSW50MzJaZXJvOworICAgIH0KKyNlbmRpZgorCiAgICAg
TFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NF
UlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2Uu
dXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBAIC0xNjc3NSw3ICsxNzEwMiw3MiBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBJ
bnQ2NCksIG1fbnVtYmVyVGFnKTsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgTFZhbHVlIGlzQmlnSW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsK
KyAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpz
VmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAg
ICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAg
IExWYWx1ZSBpc05vdEJpZ0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVu
OworICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRB
bmQoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9
CisgICAgTFZhbHVlIHVuYm94QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9vdXQuY2FzdFRvSW50MzIobV9vdXQubFNocihqc1ZhbHVlLCBtX291dC5jb25z
dEludDY0KDE2KSkpOworICAgIH0KKyAgICBMVmFsdWUgYm94QmlnSW50MzIoTFZhbHVlIGludDMy
VmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQuYml0T3IoCisgICAgICAgICAgICBt
X291dC5zaGwobV9vdXQuemVyb0V4dChpbnQzMlZhbHVlLCBCMzo6SW50NjQpLCBtX291dC5jb25z
dEludDY0KDE2KSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0lu
dDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSBpc05vdEFueUJpZ0ludChMVmFsdWUganNWYWx1
ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50KSkKKyAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgLy8gaWYgKGlzQmlnSW50MzIpCisgICAg
ICAgIC8vICAgcmV0dXJuIGZhbHNlCisgICAgICAgIC8vIGlmICghaXNDZWxsKQorICAgICAgICAv
LyAgIHJldHVybiB0cnVlOworICAgICAgICAvLyByZXR1cm4gIWlzSGVhcEJpZ0ludAorICAgICAg
ICBMQmFzaWNCbG9jayBpc0JpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGlzTm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0
LmJyYW5jaChpc0JpZ0ludDMyKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNCaWdJbnQzMkNhc2Up
LCB1bnN1cmUoaXNOb3RCaWdJbnQzMkNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhp
c0JpZ0ludDMyQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybkZhbHNlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc05vdEJpZ0ludDMyQ2FzZSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwoanNWYWx1ZSwgdHlwZSksIHVuc3VyZShpc0NlbGxD
YXNlKSwgdW5zdXJlKGlzTm90Q2VsbENhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhp
c05vdENlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuVHJ1ZSA9IG1fb3V0
LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlKTsKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgcmV0dXJuSXNOb3RIZWFwQmlnSW50ID0gbV9vdXQuYW5jaG9yKGlzTm90SGVh
cEJpZ0ludChqc1ZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24pOworICAgICAgICByZXR1cm4gbV9v
dXQucGhpKEludDMyLCByZXR1cm5GYWxzZSwgcmV0dXJuVHJ1ZSwgcmV0dXJuSXNOb3RIZWFwQmln
SW50KTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAgICAgTFZhbHVlIGlzQ2Vs
bE9yTWlzYyhMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9w
KQogICAgIHsKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUs
IFNwZWNDZWxsQ2hlY2sgfCBTcGVjTWlzYykpCkBAIC0xNzA4Nyw4ICsxNzQ3OSwxNiBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29s
ZWFuKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgot
ICAgICAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUJpZ0ludDMyKGVk
Z2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAg
ICAgICAgICAgc3BlY3VsYXRlQW55QmlnSW50KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAg
ICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTm90U3RyaW5nVmFyVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlTm90U3Ry
aW5nVmFyKGVkZ2UpOwpAQCAtMTcyNzQsMTggKzE3Njc0LDM4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3ltYm9sU3RydWN0dXJlLT5pZCgpKSk7CiAgICAg
fQogCi0gICAgTFZhbHVlIGlzTm90QmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludFVua25vd25XaGV0
aGVyQ2VsbChMVmFsdWUgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
ICAgICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYg
U3BlY0NlbGwsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1By
b3ZlblZhbHVlKHR5cGUsIH5TcGVjSGVhcEJpZ0ludCkpCisgICAgICAgICAgICByZXR1cm4gcHJv
dmVuOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGRlZmF1bHRUb0ZhbHNlID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHR5
cGUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGNvbnRp
bnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVybkZvckNlbGwgPSBtX291dC5h
bmNob3IoaXNIZWFwQmlnSW50KHZhbHVlLCB0eXBlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQzMiwgZGVmYXVsdFRv
RmFsc2UsIHJldHVybkZvckNlbGwpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQ
cm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIH5TcGVjSGVhcEJpZ0ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJvdmVuOwogICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCiAgICAgICAg
ICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLmJpZ0ludFN0cnVjdHVyZS0+aWQoKSkpOwog
ICAgIH0KIAotICAgIExWYWx1ZSBpc0JpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUg
dHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc0hlYXBCaWdJbnQoTFZhbHVlIGNlbGws
IFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChM
VmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNCaWdJbnQp
KQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWND
ZWxsLCBTcGVjSGVhcEJpZ0ludCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwogICAgICAg
ICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9o
ZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLApAQCAtMTc3NDMsMTYgKzE4MTYzLDM1IEBAIHByaXZh
dGU6CiAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9
CiAKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAg
IHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsK
KyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjSGVh
cEJpZ0ludCwgaXNOb3RIZWFwQmlnSW50KGNlbGwpKTsKKyAgICB9CisgICAgdm9pZCBzcGVjdWxh
dGVIZWFwQmlnSW50KEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAgIEZUTF9UWVBFX0NIRUNLKGpz
VmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RCaWdJbnQoY2VsbCkpOwor
ICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwogICAgIH0K
IAotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSkKKyAgICB2b2lkIHNwZWN1bGF0
ZUhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAg
IEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNIZWFwQmlnSW50
LCBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwodmFsdWUpKTsKICAgICB9CiAKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgdm9pZCBzcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCisg
ICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1
ZSksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMih2YWx1ZSkpOworICAgIH0KKwor
ICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0Jp
Z0ludCwgaXNOb3RBbnlCaWdJbnQodmFsdWUpKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQg
c3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjT2JqZWN0
LCBpc05vdE9iamVjdChjZWxsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggZDM3MjI3N2ZjMDYuLjNjOTEzN2VmNzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBA
IC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25l
ZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUpCi0gICAgICAgICAg
ICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZVByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwg
SlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICAgICAgICAgIGV4aXQubV9kZXNjcmlw
dG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJ
bmZvOjpyZWdUMCksIEdQUkluZm86OnJlZ1QxKTsKICAgICB9CiAKICAgICAvLyBNYXRlcmlhbGl6
ZSBhbGwgb2JqZWN0cy4gRG9uJ3QgbWF0ZXJpYWxpemUgYW4gb2JqZWN0IHVudGlsIGFsbApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApp
bmRleCBhYjNlOWM2MjlhZC4uMjU4OWUyY2ZjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC00MjIsNyArNDIyLDcgQEAg
U3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAoY29uc3QgSGVh
cFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KIAogICAgICAgICB2b2lkKiB3cmFwcGVkQWRkcmVzcyA9
IDA7CiAgICAgICAgIHVuc2lnbmVkIGxhYmVsSW5kZXggPSAwOwotICAgICAgICBpZiAoIW5vZGUu
Y2VsbC0+aXNTdHJpbmcoKSAmJiAhbm9kZS5jZWxsLT5pc0JpZ0ludCgpKSB7CisgICAgICAgIGlm
ICghbm9kZS5jZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7
CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUuY2VsbC0+c3RydWN0dXJl
KHZtKTsKICAgICAgICAgICAgIGlmICghc3RydWN0dXJlIHx8ICFzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpKQogICAgICAgICAgICAgICAgIGZsYWdzIHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihO
b2RlRmxhZ3M6OkludGVybmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKaW5kZXggOTlmYTQwZWJiNDQuLmYyN2VlZjRiNDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgi
CiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5j
bHVkZSAiU2NyaWJibGUuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJW
TS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5jcHAKaW5kZXggNmNiYWVjMTY0NDMuLjAzMjQ2OWZlNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJT
Y3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDgxMzMyZDIxMDkxLi42MWYyZTc2NWYy
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0xODcsOCArMTg3LDggQEAgdm9pZCBJ
bnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgaGVhcE9iamVjdElkLAogICAgIH0KIAogICAgIC8vIEJpZ0ludCBwcmV2aWV3LgotICAgIGlm
IChjZWxsLT5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50Ojp0
cnlHZXRTdHJpbmcodm0sIGFzQmlnSW50KGNlbGwpLCAxMCk7CisgICAgaWYgKGNlbGwtPmlzSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgIHJlc3VsdFN0cmluZyA9IEpTQmlnSW50Ojp0cnlHZXRTdHJp
bmcodm0sIGFzSGVhcEJpZ0ludChjZWxsKSwgMTApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAppbmRleCBjNGQ5YzcyN2UwNy4uYWQ0YjIxNWM1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBA
IHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5n
VHlwZToKICAgICBjYXNlIFN5bWJvbFR5cGU6Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgorICAgIGNh
c2UgSGVhcEJpZ0ludFR5cGU6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAgYXJndW1lbnRzKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBlMzA5ZWNmYzU1
MS4uYzg5ZjY4NWZmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQog
ewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cgc3RydWN0dXJl
OgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2YWx1ZSBpcyBz
dHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5n
IG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQgPSAhIXZhbHVl
LT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBldmlsIHRoaW5n
cyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC02OTgsNiArNjk4LDggQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmUKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveEludDMyKHZhbHVl
KQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBCaWdJ
bnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFsdWUpCiAgICAg
Ly8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVlCiAgICAgLy8g
fQpAQCAtNzA2LDcgKzcwOCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZh
bHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAKICAgICBhdXRv
IG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNTdHJpbmcgPSBi
cmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNCaWdJbnQgPSBi
cmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNIZWFwQmlnSW50
ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAgICBpZiAoc2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChzY3JhdGNo
SWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQUlJlZyk7CkBA
IC03MjksNyArNzMxLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVU
b0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKICAgICBjb21wYXJlUHRy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHZhbHVlLnBheWxvYWRHUFIoKSwgcmVzdWx0LCBy
ZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRo
aXMpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIGxvYWQzMihBZGRyZXNzKHZh
bHVlLnBheWxvYWRHUFIoKSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHQpOwog
ICAgIGNvbXBhcmUzMihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCByZXN1bHQsIFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0KTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwpAQCAtNzUyLDYgKzc1
NCwxNSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihW
TSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7
CiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgYXV0
byBpc05vdEJpZ0ludDMyID0gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHZhbHVl
LmdwcigpLCByZXN1bHQpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdCk7CisgICAgdXJz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgY29tcGFyZTMyKGludmVydCA/
IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAg
IGRvbmUuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY29tcGFyZTY0
KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVUcnVlKSwgcmVzdWx0KTsKICNlbHNlCkBAIC03NjcsNyArNzc4LDcgQEAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0m
IHZtLCBKU1ZhbHVlUmVncyB2YWwKIHsKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcg
Y29udHJvbCBmbG93IHN0cnVjdHVyZToKICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAg
IC8vICAgICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEJpZ0ludCkKKyAgICAvLyAg
ICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1ZSBpcyBIZWFwQmlnSW50KQogICAgIC8vICAg
ICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgLy8gICAgIGVsc2UgewogICAgIC8v
ICAgICAgICAgZG8gZXZpbCB0aGluZ3MgZm9yIG1hc3F1ZXJhZGVzLWFzLXVuZGVmaW5lZApAQCAt
Nzc3LDYgKzc4OCw4IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgLy8gICAgIHJlc3Vs
dCA9ICEhdW5ib3hJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJl
cikgewogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94RG91YmxlKHZhbHVlKQorICAgIC8vIH0g
ZWxzZSBpZiAodmFsdWUgaXMgQmlnSW50MzIpIHsKKyAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJv
eEJpZ0ludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSB7CiAgICAgLy8gICAgIHJlc3VsdCA9IHZh
bHVlID09IGpzVHJ1ZQogICAgIC8vIH0KQEAgLTc4Niw3ICs3OTksNyBAQCBBc3NlbWJseUhlbHBl
cnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFs
dWVSZWdzIHZhbAogCiAgICAgYXV0byBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlKTsK
ICAgICBhdXRvIGlzU3RyaW5nID0gYnJhbmNoSWZTdHJpbmcodmFsdWUucGF5bG9hZEdQUigpKTsK
LSAgICBhdXRvIGlzQmlnSW50ID0gYnJhbmNoSWZCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsK
KyAgICBhdXRvIGlzSGVhcEJpZ0ludCA9IGJyYW5jaElmSGVhcEJpZ0ludCh2YWx1ZS5wYXlsb2Fk
R1BSKCkpOwogCiAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewog
ICAgICAgICBBU1NFUlQoc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ICE9IEludmFsaWRHUFJSZWcpOwpAQCAtODE3LDcgKzgzMCw3IEBAIEFzc2VtYmx5SGVscGVyczo6
SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJl
Z3MgdmFsCiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hQdHIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKGpzRW1wdHlTdHJpbmcodm0p
KSkpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKLSAgICBpc0JpZ0ludC5saW5rKHRoaXMp
OworICAgIGlzSGVhcEJpZ0ludC5saW5rKHRoaXMpOwogICAgIHRydXRoeS5hcHBlbmQoYnJhbmNo
VGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIo
KSwgSlNCaWdJbnQ6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKIApAQCAtODQyLDYgKzg1NSwxNSBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbAogICAgIH0K
IAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRv
IGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUu
Z3ByKCksIHNjcmF0Y2gpOworICAgIG1vdmUodmFsdWUuZ3ByKCksIHNjcmF0Y2gpOworICAgIHVy
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBzY3JhdGNoKTsKKyAgICB0cnV0aHkuYXBwZW5kKGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgc2NyYXRjaCkpOworICAgIGRvbmUu
YXBwZW5kKGp1bXAoKSk7CisKKyAgICBpc05vdEJpZ0ludDMyLmxpbmsodGhpcyk7CisjZW5kaWYg
Ly8gVVNFKEJJR0lOVDMyKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdHJ1dGh5LmFwcGVuZChi
cmFuY2g2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDNkN2VmN2M3NzI3Li5l
ZDA3M2U3NmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTI5LDcgKzkyOSw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hJ
Zk5vdEJvb2xlYW4ocmVncy50YWdHUFIoKSwgdGVtcEdQUik7CiAjZW5kaWYKICAgICB9Ci0gICAg
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyKEdQUlJlZyBn
cHIsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0
ZXJzKQorICAgIHsKKyAgICAgICAgSnVtcCBudW1iZXIgPSBicmFuY2hJZk51bWJlcihncHIsIG1v
ZGUpOworICAgICAgICBKdW1wIGJpZ0ludDMyID0gYnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVt
YmVyKGdwciwgdGVtcEdQUik7CisgICAgICAgIG51bWJlci5saW5rKHRoaXMpOworICAgICAgICBy
ZXR1cm4gYmlnSW50MzI7CisgICAgfQorICAgIEp1bXBMaXN0IGJyYW5jaElmTm90QmlnSW50MzIo
R1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVU
YWdSZWdpc3RlcnMpCisgICAgeworICAgICAgICBKdW1wTGlzdCByZXN1bHQ7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoYnJhbmNoSWZOdW1iZXIoZ3ByLCBtb2RlKSk7CisgICAgICAgIEp1bXAgYmln
SW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChqdW1wKCkpOworICAgICAgICBiaWdJbnQzMi5saW5rKHRoaXMp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZCaWdJ
bnQzMktub3duTm90TnVtYmVyKEdQUlJlZyBncHIsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1vdmUoZ3By
LCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMy
VGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgdGVtcEdQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIEp1bXAgYnJh
bmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0
ZW1wR1BSKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5v
dE51bWJlcihyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAg
eworICAgICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92
ZShncHIsIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qmln
SW50MzJUYWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0
ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisjZW5k
aWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgLy8gRklYTUU6IHJlbmFtZSB0aGVzZSB0byBtYWtl
IGl0IGNsZWFyIHRoYXQgdGhleSByZXF1aXJlIHRoZWlyIGlucHV0IHRvIGJlIGEgY2VsbC4KICAg
ICBKdW1wIGJyYW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaDgoCkBAIC05NTEsMTMgKzk5MCwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9Ci0gICAgCisKKyAg
ICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IHJlcXVp
cmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNoSWZTdHJpbmcoR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsg
fQogICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJy
YW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZT
eW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTeW1i
b2xUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsg
cmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQotICAgIEp1bXAg
YnJhbmNoSWZCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxs
R1BSLCBCaWdJbnRUeXBlKTsgfQotICAgIEp1bXAgYnJhbmNoSWZOb3RCaWdJbnQoR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBCaWdJbnRUeXBlKTsgfQor
ICAgIEp1bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZlR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5v
dEhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxs
R1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVn
IGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7
IH0KICAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJu
IGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICAKQEAgLTEz
NTYsNiArMTM5NiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgdm9pZCB1bmJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICB1cnNo
aWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoSW1tMzIoMTYpKSwgZ3ByKTsKKyAgICB9CisKKyAg
ICB2b2lkIGJveEJpZ0ludDMyKEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBsc2hpZnQ2NCh0
cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgICAgICBvcjY0KFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIGdwcik7CisgICAgfQogI2VuZGlmCiAKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTcxNSw3ICsxNzY4LDcgQEAgcHVibGljOgogICAgICAg
ICAvLyAgICAgICAgIH0KICAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgc3RyaW5nKSB7CiAg
ICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN0cmluZwotICAgICAgICAvLyAgICAgfSBlbHNlIGlm
IChpcyBiaWdpbnQpIHsKKyAgICAgICAgLy8gICAgIH0gZWxzZSBpZiAoaXMgaGVhcGJpZ2ludCkg
ewogICAgICAgICAvLyAgICAgICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIHN5bWJvbApAQCAtMTcyNiw2ICsxNzc5LDgg
QEAgcHVibGljOgogICAgICAgICAvLyAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAvLyB9IGVs
c2UgaWYgKGlzIGJvb2xlYW4pIHsKICAgICAgICAgLy8gICAgIHJldHVybiBib29sZWFuCisgICAg
ICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVybiBi
aWdpbnQKICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgLy8gICAgIHJldHVybiB1bmRlZmlu
ZWQKICAgICAgICAgLy8gfQpAQCAtMTc1NywxMCArMTgxMiwxMCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgbm90U3RyaW5nLmxpbmsodGhpcyk7CiAKLSAgICAgICAgSnVtcCBub3RCaWdJbnQgPSBicmFu
Y2hJZk5vdEJpZ0ludChjZWxsR1BSKTsKKyAgICAgICAgSnVtcCBub3RIZWFwQmlnSW50ID0gYnJh
bmNoSWZOb3RIZWFwQmlnSW50KGNlbGxHUFIpOwogICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6
OkJpZ0ludCwgZmFsc2UpOwogCi0gICAgICAgIG5vdEJpZ0ludC5saW5rKHRoaXMpOworICAgICAg
ICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6
U3ltYm9sLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBub3RDZWxsLmxpbmsodGhpcyk7CkBA
IC0xNzc2LDYgKzE4MzEsMTIgQEAgcHVibGljOgogICAgICAgICBKdW1wIG5vdEJvb2xlYW4gPSBi
cmFuY2hJZk5vdEJvb2xlYW4ocmVncywgdGVtcEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9m
VHlwZTo6Qm9vbGVhbiwgZmFsc2UpOwogICAgICAgICBub3RCb29sZWFuLmxpbmsodGhpcyk7CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIEp1bXAgbm90QmlnSW50MzIgPSBicmFuY2hJZk5v
dEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgICAgIGZ1bmN0b3Io
VHlwZW9mVHlwZTo6QmlnSW50LCBmYWxzZSk7CisgICAgICAgIG5vdEJpZ0ludDMyLmxpbmsodGhp
cyk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6VW5kZWZp
bmVkLCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYzZlNjFi
ODliZjkuLmQ1ZWE5OWYzM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zNzAs
NiArMzcwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfaXNfdW5kZWZpbmVkX29yX251bGwpCiAgICAgICAgIERFRklORV9PUChvcF9p
c19ib29sZWFuKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfbnVtYmVyKQorICAgICAgICBERUZJ
TkVfT1Aob3BfaXNfYmlnX2ludCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX29iamVjdCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2lzX2NlbGxfd2l0aF90eXBlKQogICAgICAgICBERUZJTkVfT1Ao
b3BfamVxX251bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MDczNTVjNmQ3MS4uZDA0
M2ZjZWIxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTI4LDYgKzUyOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4
IDc3ODY3M2UxOGFjLi42N2IwMGIwYTAwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NzYsNiArNDc2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVn
YXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVROZWdJ
QyogbmVnYXRlSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQcm9maWxlKTsKICAg
ICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgbmVnYXRlSUMp
OworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRp
b25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIH0KIApAQCAt
NDg0LDYgKzQ4NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IGJpdHdpc2VfY2FzdDxKSVROZWdJ
Qyo+KG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5nZXQoY3VycmVudEluc3RydWN0aW9uKSk7CisgICAg
Ly8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVl
TmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElD
U2xvdzxPcE5lZ2F0ZT4obmVnSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZE9wdGltaXplLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVy
YXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKaW5kZXggZmM5NGNhMzcyNDkuLmNlYjYwMGU3ZjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dh
LmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4Myw2ICsyODMsMzcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCisjaWYgVVNFKEJJR0lOVDMyKQor
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSXNCaWdJbnQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKKworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICBKdW1wIGlzQ2VsbCA9
IGJyYW5jaElmQ2VsbChyZWdUMCk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpC
aWdJbnQzMk1hc2spLCByZWdUMSk7CisgICAgYW5kNjQocmVnVDEsIHJlZ1QwKTsKKyAgICBjb21w
YXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCBy
ZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKKyAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7CisKKyAgICBpc0NlbGwubGluayh0aGlzKTsKKyAgICBjb21w
YXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihIZWFwQmlnSW50VHlwZSksIHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworCisgICAgZG9uZS5saW5rKHRoaXMpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKyNlbHNlIC8vIGlmICFVU0UoQklHSU5U
MzIpCitOT19SRVRVUk4gdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVj
dGlvbiopCit7CisgICAgLy8gSWYgd2Ugb25seSBoYXZlIEhlYXBCaWdJbnRzLCB0aGVuIHdlIGVt
aXQgaXNDZWxsV2l0aFR5cGUgaW5zdGVhZCBvZiBpc0JpZ0ludC4KKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorI2VuZGlmCisKIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxf
d2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4o
KTsKQEAgLTU3MCwxMiArNjAxLDUzIEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpCiAgICAgVmly
dHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXJzKHNyYzEsIHJlZ1QwLCBzcmMyLCByZWdUMSk7Ci0gICAgCisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgLyogQXQgYSBoaWdoIGxldmVsIHdlIGRvIChhc3N1bWluZyAndHlwZScgdG8g
YmUgU3RyaWN0RXEpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUp
CisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxs
IHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAg
ICByZXR1cm4gcmVzdWx0OworICAgICovCisKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVu
dHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJh
bmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdl
IHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0
aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2ls
bCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElm
IGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBo
aWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAx
PDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShyZWdUMSwgcmVnVDMpOwor
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7
CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDMpOworICAg
IGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9yNjQocmVnVDIsIHJlZ1Qz
KTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkp
OworCisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgcmVnVDEsIHJlZ1Q1KTsKKyAgICBKdW1w
IGRvbmUgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDUpOworCisgICAgbW92ZShyZWdUMCwg
cmVnVDIpOworICAgIC8vIEp1bXAgc2xvdyBpZiBhdCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBj
b3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAgICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAg
IC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhl
cmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVkIHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90
aCBhcmUgc3RyaW5ncworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikpOworCisg
ICAgZG9uZS5saW5rKHRoaXMpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlw
ZTo6TlN0cmljdEVxKQorICAgICAgICB4b3I2NChUcnVzdGVkSW1tNjQoMSksIHJlZ1Q1KTsKKyAg
ICBib3hCb29sZWFuKHJlZ1Q1LCBKU1ZhbHVlUmVncyB7IHJlZ1Q1IH0pOworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUNSk7CisjZWxzZSAvLyBpZiAhVVNFKEJJR0lOVDMyKQog
ICAgIC8vIEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAg
ICAgbW92ZShyZWdUMCwgcmVnVDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKICAgICBhZGRT
bG93Q2FzZShicmFuY2hJZkNlbGwocmVnVDIpKTsKLSAgICAKKwogICAgIC8vIEp1bXAgc2xvdyBp
ZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZpcnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGlj
aCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0CiAgICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KICAgICBK
dW1wIGxlZnRPSyA9IGJyYW5jaElmSW50MzIocmVnVDApOwpAQCAtNTkyLDYgKzY2NCw3IEBAIHZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3BTdHJpCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3Mg
eyByZWdUMCB9KTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyNlbmRpZgog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpAQCAtNjE0LDYgKzY4Nyw0NSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3Ry
aWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVP
cAogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAsIHNyYzIsIHJlZ1Qx
KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFz
c3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8
IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICBnb3RvIHNsb3dQYXRoOworICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgIGdvdG8gdGFrZW47CisgICAgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdo
dCBpcyBDZWxsKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZ290byBub3RUYWtlbjsKKyAg
ICAqLworCisgICAgLy8gVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8
fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0
IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIv
YnJhbmNoSWZOdW1iZXIKKyAgICAvLyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMg
YW4gSW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywg
bGVhdmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIg
YXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgLy8g
TGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgbW92ZShyZWdU
MCwgcmVnVDIpOworICAgIG1vdmUocmVnVDEsIHJlZ1QzKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVnVDUpOworICAgIGFkZDY0KHJlZ1Q1LCBy
ZWdUMik7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QzKTsKKyAgICBsc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMSksIHJlZ1Q1KTsKKyAgICBvcjY0KHJlZ1QyLCByZWdUMyk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWdUMywgcmVnVDUpKTsKKworICAgIEp1bXAgYXJlRXF1
YWwgPSBicmFuY2g2NChFcXVhbCwgcmVnVDAsIHJlZ1QxKTsKKyAgICBpZiAodHlwZSA9PSBDb21w
aWxlT3BTdHJpY3RFcVR5cGU6OlN0cmljdEVxKQorICAgICAgICBhZGRKdW1wKGFyZUVxdWFsLCB0
YXJnZXQpOworCisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIC8vIEp1bXAgc2xvdyBpZiBh
dCBsZWFzdCBvbmUgaXMgYSBjZWxsICh0byBjb3ZlciBzdHJpbmdzIGFuZCBCaWdJbnRzKS4KKyAg
ICBhbmQ2NChyZWdUMSwgcmVnVDIpOworICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhp
bmcgbW9yZSBwcmVjaXNlOiB1bmxlc3MgdGhlcmUgaXMgYSBCaWdJbnQzMiwgd2Ugb25seSBuZWVk
IHRvIGRvIHRoZSBzbG93IHBhdGggaWYgYm90aCBhcmUgc3RyaW5ncworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmQ2VsbChyZWdUMikpOworCisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0
RXFUeXBlOjpOU3RyaWN0RXEpIHsKKyAgICAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7Cisg
ICAgICAgIGFyZUVxdWFsLmxpbmsodGhpcyk7CisgICAgfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJ
TlQzMikKICAgICAvLyBKdW1wIHNsb3cgaWYgYm90aCBhcmUgY2VsbHMgKHRvIGNvdmVyIHN0cmlu
Z3MpLgogICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKICAgICBvcjY0KHJlZ1QxLCByZWdUMik7CkBA
IC02MjcsMTEgKzczOSwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcAogICAgIEp1bXAgcmln
aHRPSyA9IGJyYW5jaElmSW50MzIocmVnVDEpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTnVt
YmVyKHJlZ1QxKSk7CiAgICAgcmlnaHRPSy5saW5rKHRoaXMpOwotCiAgICAgaWYgKHR5cGUgPT0g
Q29tcGlsZU9wU3RyaWN0RXFUeXBlOjpTdHJpY3RFcSkKICAgICAgICAgYWRkSnVtcChicmFuY2g2
NChFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBlbHNlCiAgICAgICAgIGFkZEp1
bXAoYnJhbmNoNjQoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCksIHRhcmdldCk7CisjZW5kaWYKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC02ODYsNyArNzk4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVt
ZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOwogCiAgICAgSnVtcCBpc05vdENlbGwgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90QmlnSW50
KHJlZ1QwKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RIZWFwQmlnSW50KHJlZ1QwKSk7
CiAgICAgSnVtcCBpc0JpZ0ludCA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4
IDFjMzA3NzY5ZGFhLi40ODQwMzAwYjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMjg4LDYgKzI4OCwxMiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0U3RvcmVCb29sKGRzdCwgcmVnVDApOwogfQogCitOT19SRVRVUk4gdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgLy8gV2UgZW1pdCBp
c19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkLCBzaW5jZSBCaWdJbnQzMiBpcyBub3Qgc3VwcG9ydGVk
IG9uIDMyLWJpdCBwbGF0Zm9ybXMuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtODY2LDcgKzg3Miw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX251bWVyaWMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlz
Tm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNo
SWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJ
bnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxs
LmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA3YWUxNTBjYzY2MS4uNDA4MThmYmFjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTMxNSw2ICsxMzE1LDE5IEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGdsb2JhbE9i
amVjdCwgc3JjMSwgc3JjMik7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCitzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGhlYXBCaWdJbnQsIGludDMyX3Qgc21hbGxJbnQpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoaGVhcEJp
Z0ludC0+aXNIZWFwQmlnSW50KCkpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQmlnSW50
Kj4oaGVhcEJpZ0ludCktPmVxdWFsc1RvSW50MzIoc21hbGxJbnQpOworfQorI2VuZGlmCisKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoUHJvZmlsZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9m
aWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4MzgsNiArMjg1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqCiAgICAgcmV0dXJuIHByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwg
ZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBi
ZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJh
bmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcGVyYW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTI4NTAsOCArMjg2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBw
cmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVy
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBp
ZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgcHJpbVZhbHVl
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBp
ZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpKTsK
IAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4
NTksNiArMjg4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQogCisvLyBGSVhNRTog
aXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNp
bmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjg3MywxMCAr
Mjg5NiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVn
YXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIEpTVmFsdWUgcHJpbVZhbHVl
ID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0Jp
Z0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51
cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChw
cmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFs
dWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZh
bHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9Cisg
ICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAg
fQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hl
YXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQp
OwotCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9CiAKQEAg
LTI4ODcsNiArMjkyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVy
IHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNh
biBiZSBhIEJpZ0ludAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTA3LDkgKzI5NDEsMjAgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9Q
cmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsK
LSAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0Jp
Z0ludChwcmltVmFsdWUpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZhbHVl
LmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7Cisg
ICAgICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBw
cmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRp
ZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50
KCkpOwogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQocmVzdWx0KTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTI5MjEsNiArMjk2
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCisvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhv
c2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0lu
dAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cGVyYW5kLCBKSVROZWdJQyogbmVnSUMpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpAQCAtMjk0MCw5ICsyOTg2LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAg
ICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAK
LSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpKTsKKwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogd2h5IGRvZXMgdGhpcyBmdW5jdGlvbiBw
cm9maWxlIHRoZSBhcmd1bWVudCBidXQgbm90IHRoZSByZXN1bHQ/CisgICAgaWYgKHByaW1WYWx1
ZS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJ
bnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZh
bHVlKSk7CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1
ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJp
bVZhbHVlLmFzSGVhcEJpZ0ludCgpKSk7CiAKICAgICBkb3VibGUgbnVtYmVyID0gcHJpbVZhbHVl
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDhlZmI1YjVhYzk4Li40M2I5YTBhODY5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTIwNiw2ICsyMDYsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBK
U0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMihKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogaGVh
cEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkgV1RGX0lOVEVSTkFMOwogI2Vsc2UKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogbGVmdCwgSlNDZWxsKiByaWdodCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5k
ZXggNTI0MzVhNjYxMjAuLjJhMmJiOTlmOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC0xMzYsNiArMTM2LDEyIEBA
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0pTVkFMVUU2NCAwCiAjZW5kaWYKIAorI2lmIFVTRShCSUdJ
TlQzMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHSU5UMzIgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fQklHSU5UMzIgMAorI2VuZGlmCisKICNpZiBDUFUoQUREUkVTUzY0KQogI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBiNTY5OWMzMGQyYy4u
NmZmMTk3YjIzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5Niw2ICsxOTYsMTEgQEAgaWYgSlNWQUxVRTY0CiAg
ICAgY29uc3QgVmFsdWVOdWxsICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6OlZhbHVlTnVsbAog
ICAgIGNvbnN0IFRhZ051bWJlciAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpOdW1iZXJUYWcK
ICAgICBjb25zdCBOb3RDZWxsTWFzayAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Tm90Q2VsbE1h
c2sKKyAgICBpZiBCSUdJTlQzMgorICAgICAgICBjb25zdCBUYWdCaWdJbnQzMiA9IGNvbnN0ZXhw
ciBKU1ZhbHVlOjpCaWdJbnQzMlRhZworICAgICAgICBjb25zdCBNYXNrQmlnSW50MzIgPSBjb25z
dGV4cHIgSlNWYWx1ZTo6QmlnSW50MzJNYXNrCisgICAgZW5kCisgICAgY29uc3QgTG93ZXN0T2ZI
aWdoQml0cyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzCiBlbHNlCiAgICAg
Y29uc3QgSW50MzJUYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6SW50MzJUYWcKICAgICBjb25zdCBC
b29sZWFuVGFnID0gY29uc3RleHByIEpTVmFsdWU6OkJvb2xlYW5UYWcKQEAgLTUyMSw2ICs1MjYs
NyBAQCBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0ZXhwciBKU0Z1bmN0aW9uVHlwZQogY29u
c3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29uc3QgRGVyaXZlZEFycmF5VHlw
ZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBj
b25zdGV4cHIgUHJveHlPYmplY3RUeXBlCitjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhw
ciBIZWFwQmlnSW50VHlwZQogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBuZWVkIHRvIGJlIG51
bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBtYW51YWxseSB3cml0
dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KaW5kZXggODE4OTFjMjJlNjEuLjU4YmYxZjY2MWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQpAQCAtMTMwNiw2ICsxMzA2LDEyIEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX251bWJl
ciwgT3BJc051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKIGVuZCkK
IAogCisjIE9uIDMyLWJpdCBwbGF0Zm9ybXMgQklHSU5UMzIgaXMgbm90IHN1cHBvcnRlZCwgc28g
d2UgZ2VuZXJhdGUgb3BfaXNfY2VsbF93aXRoX3R5cGUgaW5zdGVhZCBvZiBvcF9pc19iaWdfaW50
CitsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVudXNlZCwgdW51c2Vk
LCB1bnVzZWQpCisgICAgbm90U3VwcG9ydGVkKCkKK2VuZCkKKworCiBsbGludE9wV2l0aFJldHVy
bihvcF9pc19jZWxsX3dpdGhfdHlwZSwgT3BJc0NlbGxXaXRoVHlwZSwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MCwgdDMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGFlMmUzNzcz
ZmZkLi5mOTVlN2M0NzJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NDQsMjQgKzg0NCw0OCBAQCBsbGludE9wV2l0aFJl
dHVybihvcF9pc191bmRlZmluZWRfb3JfbnVsbCwgT3BJc1VuZGVmaW5lZE9yTnVsbCwgbWFjcm8g
KHNpemUsIGdldAogZW5kKQogCiAKLW1hY3JvIHN0cmljdEVxT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmljdEVxT3Aob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWN0LCBjcmVhdGVCb29sZWFuKQogICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wXyVv
cGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgICAgICBnZXQobV9yaHMsIHQwKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCisKKyAgICAgICAgIyBBdCBhIGhpZ2ggbGV2
ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91Ymxl
KQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIHJlc3VsdCA9IChsZWZ0
ID09IHJpZ2h0KTsKKyAgICAgICAgIyBpZiAocmVzdWx0KQorICAgICAgICAjICAgICBnb3RvIGRv
bmU7CisgICAgICAgICMgaWYgKGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAg
ICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGRvbmU6CisgICAgICAgICMgcmV0dXJu
IHJlc3VsdDsKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBE
b3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBv
ZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJ
ZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBK
U1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQg
b3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgICMgSWYgaXQgaXMg
bm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0
IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUw
LgorICAgICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBtb3ZlIHQxLCB0MworICAgICAgICBtb3Zl
IExvd2VzdE9mSGlnaEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisgICAgICAgIGFkZHEg
dDUsIHQzCisgICAgICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAxLCB0NQorICAgICAg
ICBicWFlcSB0MywgdDUsIC5zbG93CisKKyAgICAgICAgY3FlcSB0MCwgdDEsIHQ1CisgICAgICAg
IGJ0cW56IHQ1LCB0NSwgLmRvbmUgI2lzIHRoZXJlIGEgYmV0dGVyIHdheSBvZiBjaGVja2luZyB0
NSAhPSAwID8KKwogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCisgICAg
ICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicgaWYgbm90IGZvciBCaWdJbnQzMiAoc2lu
Y2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2VsbCB0byBiZSBzdHJpY3RFcXVhbCB0byBh
IG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6IHQyLCBub3RDZWxs
TWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxlZnRPSwotICAgICAg
ICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5sZWZ0T0s6Ci0gICAgICAgIGJxYWVx
IHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAgIGJ0cW56IHQxLCBudW1iZXJUYWcsIC5z
bG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDAp
Ci0gICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAotICAgICAgICByZXR1cm4odDApCisKKyAgICAu
ZG9uZToKKyAgICAgICAgY3JlYXRlQm9vbGVhbih0NSkKKyAgICAgICAgcmV0dXJuKHQ1KQogCiAg
ICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkK
QEAgLTg3MSwzMyArODk1LDUzIEBAIGVuZAogCiAKIHN0cmljdEVxT3Aoc3RyaWN0ZXEsIE9wU3Ry
aWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxZXEgbGVmdCwgcmlnaHQs
IHJlc3VsdCBlbmQpCisgICAgbWFjcm8gKG9wZXJhbmQpIHhvcnEgVmFsdWVGYWxzZSwgb3BlcmFu
ZCBlbmQpCiAKIAogc3RyaWN0RXFPcChuc3RyaWN0ZXEsIE9wTnN0cmljdGVxLAotICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgcmVzdWx0KSBjcW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKKyAg
ICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZVRydWUsIG9wZXJhbmQgZW5kKQogCiAKLW1hY3Jv
IHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZXF1YWxpdHlP
cGVyYXRpb24pCittYWNybyBzdHJpY3RFcXVhbGl0eUp1bXBPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGp1bXBJZkVxdWFsLCBqdW1wSWZOb3RFcXVhbCkKICAgICBsbGludE9wV2l0aEp1bXAo
b3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRp
c3BhdGNoKQogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBnZXQobV9yaHMsIHQzKQog
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0MCkKICAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MywgdDEpCisKKyAgICAgICAgIyBBdCBhIGhpZ2gg
bGV2ZWwgd2UgZG8KKyAgICAgICAgIyBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91
YmxlKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAjIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgICAjICAgICBnb3RvIGp1bXBUYXJnZXQ7CisgICAgICAgICMgaWYgKGxl
ZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAjICAgICBnb3RvIHNsb3dQYXRo
OworICAgICAgICAjIGdvdG8gb3RoZXJKdW1wVGFyZ2V0CisKKyAgICAgICAgIyBUaGlzIGZyYWdt
ZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGgg
YSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJl
cXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgICAgICAj
IFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcg
MTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMg
YXQgMAorICAgICAgICAjIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkg
d2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAgICAgIyBMZWF2aW5nIG9ubHkgZG91
YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAg
b3JxIHQxLCB0MgorICAgICAgICBtb3ZlIHQxLCB0MworICAgICAgICBtb3ZlIExvd2VzdE9mSGln
aEJpdHMsIHQ1CisgICAgICAgIGFkZHEgdDUsIHQyCisgICAgICAgIGFkZHEgdDUsIHQzCisgICAg
ICAgIG9ycSB0MiwgdDMKKyAgICAgICAgbHNoaWZ0cSAxLCB0NQorICAgICAgICBicWFlcSB0Mywg
dDUsIC5zbG93CisKKyAgICAgICAgYnFlcSB0MCwgdDEsIC5lcXVhbAorCisgICAgICAgIG1vdmUg
dDAsIHQyCisgICAgICAgICMgVGhpcyBhbmRxIGNvdWxkIGJlIGFuICdvcicgaWYgbm90IGZvciBC
aWdJbnQzMiAoc2luY2UgaXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgQ2VsbCB0byBiZSBzdHJp
Y3RFcXVhbCB0byBhIG5vbi1DZWxsKQorICAgICAgICBhbmRxIHQxLCB0MgogICAgICAgICBidHF6
IHQyLCBub3RDZWxsTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIG51bWJlclRhZywgLmxl
ZnRPSwotICAgICAgICBidHFueiB0MCwgbnVtYmVyVGFnLCAuc2xvdwotICAgIC5sZWZ0T0s6Ci0g
ICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5yaWdodE9LCi0gICAgICAgIGJ0cW56IHQxLCBu
dW1iZXJUYWcsIC5zbG93Ci0gICAgLnJpZ2h0T0s6Ci0gICAgICAgIGVxdWFsaXR5T3BlcmF0aW9u
KHQwLCB0MSwgLmp1bXBUYXJnZXQpCi0gICAgICAgIGRpc3BhdGNoKCkKIAotICAgIC5qdW1wVGFy
Z2V0OgotICAgICAgICBqdW1wKG1fdGFyZ2V0TGFiZWwpCisgICAgICAgIGp1bXBJZk5vdEVxdWFs
KGp1bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQorCisgICAgLmVxdWFsOgorICAgICAgICBq
dW1wSWZFcXVhbChqdW1wLCBtX3RhcmdldExhYmVsLCBkaXNwYXRjaCkKIAogICAgIC5zbG93Ogog
ICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF8lb3Bjb2RlTmFtZSUpCkBAIC05
MDcsMjYgKzk1MSwyOCBAQCBlbmQKIAogCiBzdHJpY3RFcXVhbGl0eUp1bXBPcChqc3RyaWN0ZXEs
IE9wSnN0cmljdGVxLAotICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBicWVxIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kKQotCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNw
YXRjaCkganVtcCh0YXJnZXRMYWJlbCkgZW5kLAorICAgIG1hY3JvIChqdW1wLCB0YXJnZXRMYWJl
bCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kKQogCiBzdHJpY3RFcXVhbGl0eUp1bXBPcChqbnN0
cmljdGVxLCBPcEpuc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJx
bmVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kKQorICAgIG1hY3JvIChqdW1wLCB0YXJnZXRMYWJl
bCwgZGlzcGF0Y2gpIGRpc3BhdGNoKCkgZW5kLAorICAgIG1hY3JvIChqdW1wLCB0YXJnZXRMYWJl
bCwgZGlzcGF0Y2gpIGp1bXAodGFyZ2V0TGFiZWwpIGVuZCkKIAogbWFjcm8gcHJlT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uKQogICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyB1cGRhdGVBcml0aFByb2Zp
bGUodHlwZSkKLSAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICAgICAg
ICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsg
VW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0Ml0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0
KG1fc3JjRHN0LCB0MCkKLSAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MwotICAgICAgICBt
ZXRhZGF0YSh0MSwgdDIpCi0gICAgICAgICMgTWV0YWRhdGEgaW4gdDEsIHNyY0RzdCBpbiB0Mwot
ICAgICAgICBicWIgdDMsIG51bWJlclRhZywgLnNsb3cKLSAgICAgICAgaW50ZWdlck9wZXJhdGlv
bih0MywgLnNsb3cpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAgICAgIHN0b3JlcSB0
MywgW2NmciwgdDAsIDhdCisgICAgICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDEKKyAgICAgICAg
bWV0YWRhdGEodDIsIHQzKQorICAgICAgICAjIHNyY0RzdCBpbiB0MSwgbWV0YWRhdGEgaW4gdDIK
KyAgICAgICAgIyBGSVhNRTogdGhlIG5leHQgbGluZSBqdW1wcyB0byB0aGUgc2xvdyBwYXRoIGZv
ciBCaWdJbnQzMi4gV2UgY291bGQgaW5zdGVhZCBoYXZlIGEgZGVkaWNhdGVkIHBhdGggaW4gaGVy
ZSBmb3IgdGhlbS4KKyAgICAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93CisgICAgICAgIGlu
dGVnZXJPcGVyYXRpb24odDEsIC5zbG93KQorICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MQorICAg
ICAgICBzdG9yZXEgdDEsIFtjZnIsIHQwLCA4XQogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGUo
QXJpdGhQcm9maWxlSW50KQogICAgICAgICBkaXNwYXRjaCgpCiAKQEAgLTkzNCw2ICs5ODAsNyBA
QCBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb24p
CiAgICAgICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKICAgICAgICAg
ZGlzcGF0Y2goKQogICAgIGVuZCkKKwogZW5kCiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF90b19u
dW1iZXIsIE9wVG9OdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCkBA
IC0xMjc5LDYgKzEzMjYsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElz
TnVtYmVyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIHJldHVybih0
MSkKIGVuZCkKIAoraWYgQklHSU5UMzIKKyAgICBsbGludE9wV2l0aFJldHVybihvcF9pc19iaWdf
aW50LCBPcElzQmlnSW50LCBtYWNybyhzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAg
ICAgIGdldChtX29wZXJhbmQsIHQxKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIHQxLCB0MCkKKyAgICAgICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UK
KyAgICAgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEhlYXBCaWdJbnRUeXBlLCB0MQorICAg
ICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKKyAgICAgICAgcmV0dXJuKHQxKQorICAgIC5ub3RDZWxs
Q2FzZToKKyAgICAgICAgYW5kcSBNYXNrQmlnSW50MzIsIHQwCisgICAgICAgIGNxZXEgdDAsIFRh
Z0JpZ0ludDMyLCB0MAorICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICAgICAgcmV0dXJu
KHQwKQorICAgIGVuZCkKK2Vsc2UKKyMgaWYgQklHSU5UMzIgaXMgbm90IHN1cHBvcnRlZCB3ZSBn
ZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKKyAg
ICBsbGludE9wKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHVudXNlZCwgdW51c2Vk
LCB1bnVzZWQpCisgICAgICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZW5kKQorZW5kCiAKIGxsaW50
T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxX
aXRoVHlwZSwgbV90eXBlLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJBcmVuYS5jcHAKaW5kZXggODRmZTM5OWNkOGMuLjRiOTQ0NTA1ZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtODMsNiArODMsMTAgQEAg
Y29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50
aWZpZXIoVk0mIHZtLCBjb25zdCBJZGUKICAgICBpZiAocmFkaXggPT0gMTApCiAgICAgICAgIHJl
dHVybiBpZGVudGlmaWVyOwogCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworICAgIEpTVmFsdWUgYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZt
LCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpU
aHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworCiAgICAgLy8gRklYTUU6IFdlIGFyZSBhbGxvY2F0
aW5nIGEgSlNCaWdJbnQganVzdCB0byBiZSBhYmxlIHRvIHVzZQogICAgIC8vIEpTQmlnSW50Ojp0
cnlHZXRTdHJpbmcgd2hlbiByYWRpeCBpcyBub3QgMTAuCiAgICAgLy8gVGhpcyBjcmVhdGVzIHNv
bWUgR0MgcHJlc3N1cmUsIGJ1dCBzaW5jZSB0aGVzZSBpZGVudGlmaWVycwpAQCAtOTAsMTEgKzk0
LDE1IEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUJpZ0ludERlY2lt
YWxJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlCiAgICAgLy8gaXQgd29udCBiZSBtdWNoIHBy
b2JsZW1hdGljLCBnaXZlbiBzdWNoIGNhc2VzIGFyZSB2ZXJ5IHJhcmUuCiAgICAgLy8gVGhlcmUg
aXMgYSBsb3Qgb2Ygb3B0aW1pemF0aW9ucyB3ZSBjYW4gYXBwbHkgaGVyZSB3aGVuIG5lY2Vzc2Fy
eS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjI3
Ci0KLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNCaWdJ
bnQqIGJpZ0ludCA9IEpTQmlnSW50OjpwYXJzZUludChudWxscHRyLCB2bSwgaWRlbnRpZmllci5z
dHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25z
LCBKU0JpZ0ludDo6UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKLSAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBiaWdJbnQsIDEwKSkpOworICAgIEpT
QmlnSW50KiBoZWFwQmlnSW50OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoYmlnSW50Lmlz
QmlnSW50MzIoKSkKKyAgICAgICAgaGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZt
LCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBo
ZWFwQmlnSW50ID0gYmlnSW50LmFzSGVhcEJpZ0ludCgpOworCisgICAgbV9pZGVudGlmaWVycy5h
cHBlbmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2
bSwgaGVhcEJpZ0ludCwgMTApKSk7CiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKaW5kZXggZTk4MDMzYTJiYTYuLjJiYmI2YzM0ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAj
aW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJPYmplY3RQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDc3ZDhjYWYyMzY4Li44ZWQxNGFhOGU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0
cnVjdG9yLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2Fp
byBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc1LDE4ICs3NSw2IEBAIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUpCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLXN0YXRpYyBib29sIGlzU2FmZUludGVnZXIoSlNWYWx1ZSBhcmd1bWVudCkK
LXsKLSAgICBpZiAoYXJndW1lbnQuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIGlmICghYXJndW1lbnQuaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZG91YmxlIG51bWJlciA9IGFyZ3VtZW50LmFzRG91YmxlKCk7Ci0gICAgcmV0dXJuIHRydW5j
KG51bWJlcikgPT0gbnVtYmVyICYmIHN0ZDo6YWJzKG51bWJlcikgPD0gbWF4U2FmZUludGVnZXIo
KTsKLX0KLQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiB7CiAgICAgQVNTRVJUKGFyZ3VtZW50Lmlz
UHJpbWl0aXZlKCkpOwpAQCAtOTQsMjAgKzgyLDI0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0
b0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQog
ICAgIAogICAgIGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFyZ3VtZW50KTsKLSAgICAKKworICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4o
KSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7CisjZWxz
ZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZt
LCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpOworI2VuZGlmCisgICAgfQorCisgICAgaWYgKGFyZ3Vt
ZW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nVmlldyhnbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgeworICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KSk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIEFTU0VSVChhcmd1bWVudC5pc1VuZGVmaW5lZE9y
TnVsbCgpIHx8IGFyZ3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmIChh
cmd1bWVudC5pc0Jvb2xlYW4oKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVh
bigpKSkpOwotICAgIAotICAgIGlmIChhcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFy
Z3VtZW50LmlzTnVtYmVyKCkgfHwgYXJndW1lbnQuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQg
dHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwotICAgIAotICAgIEFTU0VSVChhcmd1bWVu
dC5pc1N0cmluZygpKTsKLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvU3Ry
aW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxP
YmplY3QsIHZpZXcpKTsKLSAgICB9KSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVy
YXRpb24iX3MpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
QmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCkBAIC0xMTksMjAgKzExMSwyMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdmFsdWUudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAot
ICAgIGlmIChwcmltaXRpdmUuaXNOdW1iZXIoKSkgewotICAgICAgICBpZiAoIWlzU2FmZUludGVn
ZXIocHJpbWl0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qgc2FmZSBpbnRl
Z2VyIl9zKSk7Ci0gICAgICAgIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGlm
IChwcmltaXRpdmUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworICAgIGlm
IChwcmltaXRpdmUuaXNJbnQzMigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcHJpbWl0aXZl
LmFzSW50MzIoKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzSW50MzIoKSkpOworI2VuZGlmCisgICAg
fQogCi0gICAgICAgIGlmIChwcmltaXRpdmUuaXNVSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc1VJ
bnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJs
ZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUoKTsKKyAgICAgICAgaWYgKHRydW5jKG51bWJl
cikgIT0gbnVtYmVyIHx8IHN0ZDo6YWJzKG51bWJlcikgPiBtYXhTYWZlSW50ZWdlcigpKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhIHNhZmUgaW50ZWdlciJfcykpOwogCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIodm0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KLSAgICAK
KwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJp
bWl0aXZlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludE9iamVjdC5jcHAKaW5kZXggZWUwMDQ1ZGFjOTYuLmU2MTk4MmI5M2E1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBn
bWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcs
NyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQmlnSW50T2JqZWN0
KTsKIGNvbnN0IENsYXNzSW5mbyBCaWdJbnRPYmplY3Q6OnNfaW5mbyA9IHsgIkJpZ0ludCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQmlnSW50
T2JqZWN0KSB9OwogCiAKLUJpZ0ludE9iamVjdCogQmlnSW50T2JqZWN0OjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogYmlnSW50KQorQmlnSW50
T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYmlnSW50KQogewogICAgIEJpZ0ludE9iamVjdCogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QmlnSW50T2JqZWN0Pih2bS5oZWFwKSkgQmlnSW50
T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmJpZ0ludE9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBiaWdJbnQpOwpAQCAtNDksNyArNDksNyBAQCBCaWdJ
bnRPYmplY3Q6OkJpZ0ludE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
fQogCi12b2lkIEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0JpZ0ludCog
YmlnSW50KQordm9pZCBCaWdJbnRPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1
ZSBiaWdJbnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludE9iamVjdC5oCmluZGV4IDg0NzY3MTBmMjMyLi5kZWE4MWQyMmUyZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+
LgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGVy
T2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTEgKzQwLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHZtLmJpZ0ludE9iamVjdFNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU0Jp
Z0ludCopOworICAgIHN0YXRpYyBCaWdJbnRPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgSlNCaWdJ
bnQqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc0JpZ0ludChKU1dyYXBwZXJPYmpl
Y3Q6OmludGVybmFsVmFsdWUoKSk7IH0KKyAgICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25z
dCB7IHJldHVybiBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKTsgfQogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNTcsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTQmlnSW50Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IEJpZ0ludE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KEJpZ0ludE9iamVjdCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggM2VmZDQx
ZDdkYzMuLjlhMTRmNjZhODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTgxLDEyICs4MSwyNCBAQCB2b2lkIEJpZ0ludFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAKIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShWTSYgdm0sIEpTVmFs
dWUgdGhpc1ZhbHVlKQogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvLyBGSVhNRTogaGVhcC1h
bGxvY2F0aW5nIGFsbCBiaWcgaW50cyBpcyBpbm5lZmljaWVudCwgYnV0IHJlLWltcGxlbWVudGlu
ZyB0b1N0cmluZyBmb3Igc21hbGwgQmlnSW50cyBpcyBlbm91Z2ggd29yayB0aGF0IEknbSBkZWZl
cnJpbmcgaXQgdG8gYSBsYXRlciBwYXRjaC4KKyAgICBpZiAodGhpc1ZhbHVlLmlzQmlnSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB0aGlzVmFsdWUuYmln
SW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKICAgICBpZiAodGhpc1ZhbHVlLmlzQ2VsbCgpKSB7
CiAgICAgICAgIGlmIChKU0JpZ0ludCogYmlnSW50ID0ganNEeW5hbWljQ2FzdDxKU0JpZ0ludCo+
KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChCaWdJbnRPYmplY3QqIGJpZ0ludE9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8QmlnSW50T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gYmlnSW50T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAgICAgICAgaWYgKEJp
Z0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2
bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBiaWdJbnQgPSBi
aWdJbnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
ICAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYK
KyAgICAgICAgICAgIHJldHVybiBiaWdJbnQuYXNIZWFwQmlnSW50KCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNiw2ICsxMjgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKHZtLCByZXN1bHRTdHJpbmcpKTsKIH0KIAorLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gc2hv
dWxkIGludHJvZHVjZSB0aGUgcmlnaHQgc2VwYXJhdG9ycyBmb3IgdGhvdXNhbmRzIGFuZCBzaW1p
bGFyIHRoaW5ncy4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjhk
ZTk2NTU4MmYuLjI2NjUyMGVjZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSAi
VGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVk
ZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2OSwxMyArNDY4LDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2luYykKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJ
bmM+KCk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEdFVF9DKGJ5dGVjb2RlLm1fc3JjRHN0KS5q
c1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFudCA9
IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNJbmMoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gSlNCaWdJbnQ6OmluYyhnbG9i
YWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpOwotICAgIGVsc2UK
LSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRWYXJpYW50
KSArIDEpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNE
c3QsIHJlc3VsdCwgeyB9KTsKIH0KIApAQCAtNDg0LDEzICs0NzgsOCBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZGVjKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcERlYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNE
c3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJp
YW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0RlYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6ZGVj
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAg
ZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZh
cmlhbnQpIC0gMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5t
X3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC01MDcsNyArNDk2LDE1IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEm
IG1ldGFkYXRhLCBKU1ZhCiAgICAgVW5hcnlBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0
YS5tX2FyaXRoUHJvZmlsZTsKICAgICBwcm9maWxlLm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAg
QVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0JpZ0ludCgpKTsKLSAgICBpZiAo
cmVzdWx0LmlzTnVtYmVyKCkpIHsKKworICAgIGlmIChyZXN1bHQuaXNIZWFwQmlnSW50KCkpCisg
ICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHByb2ZpbGUuc2V0
T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChy
ZXN1bHQuaXNOdW1iZXIoKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewogICAg
ICAgICAgICAgaWYgKG9wZXJhbmQuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgIHByb2ZpbGUu
c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCk7CkBAIC01MjcsMTAgKzUyNCw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEm
IG1ldGFkYXRhLCBKU1ZhCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJ
bnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7
Ci0gICAgZWxzZQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkTm9uTnVtZXJpYygpOworICAg
IH0KIH0KICNlbHNlCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRo
T3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiwgSlNWYWx1ZSwgSlNWYWx1ZSkgeyB9CkBAIC01NDUsOCAr
NTM5LDIxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAgICAgSlNWYWx1ZSBw
cmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVy
KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQo
KSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0s
IGFzQmlnSW50KHByaW1WYWx1ZSkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAocHJpbVZh
bHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJp
Z0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikgeworICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIC12YWx1ZSk7
CisgICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CisgICAgICAgICAg
ICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKG1ldGFkYXRhLCByZXN1bHQs
IG9wZXJhbmQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5k
aWYKKworICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmln
SW50KCkpOwogICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAg
ICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwg
b3BlcmFuZCk7CiAgICAgICAgIH0pOwpAQCAtNTg0LDggKzU5MSwxMiBAQCBzdGF0aWMgdm9pZCB1
cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJs
b2NrKiBjb2RlQgogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkSW50NTJP
dmVyZmxvdygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChyZXN1
bHQuaXNCaWdJbnQoKSkKLSAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludCgpOworICAg
IH0gZWxzZSBpZiAocmVzdWx0LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBwcm9maWxlLnNldE9i
c2VydmVkSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChyZXN1
bHQuaXNCaWdJbnQzMigpKQorICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50MzIoKTsK
KyNlbmRpZgogICAgIGVsc2UgCiAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmlj
KCk7CiB9CkBAIC02MDcsMTMgKzYxOCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19u
dW1lcmljKQogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRvTnVt
ZXJpYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5k
KS5qc1ZhbHVlKCk7Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gcmVzdWx0VmFyaWFu
dCA9IGFyZ3VtZW50LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSkKLSAgICAgICAgcmVzdWx0ID0gV1RGOjpnZXQ8SlNC
aWdJbnQqPihyZXN1bHRWYXJpYW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVt
YmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkpOwogICAgIFJFVFVSTl9QUk9GSUxF
RChyZXN1bHQpOwogfQogCkBAIC02NDksNyArNjU1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2FkZCkKIH0KIAogLy8gVGhlIGZvbGxvd2luZyBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9w
ZXJhdGlvbnMgbmVlZCB0byBiZSBzdXJlIHRvIHJ1bgotLy8gdG9OdW1iZXIoKSBvbiB0aGVpciBv
cGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdG9OdW1iZXIoKSBpcyBpZGVtcG90ZW50Cisv
LyB0b051bWVyaWMvdG9CaWdJbnRPckludDMyKCkgb24gdGhlaXIgb3BlcmFuZHMgaW4gb3JkZXIu
ICAoQSBjYWxsIHRvIHRoZXNlIGlzIGlkZW1wb3RlbnQKIC8vIGlmIGFuIGV4Y2VwdGlvbiBpcyBh
bHJlYWR5IHNldCBvbiB0aGUgQ2FsbEZyYW1lLikKIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X211bCkKQEAgLTY3MSwyNCArNjc3LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N1YikK
ICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU3ViPigpOwogICAgIEpTVmFsdWUgbGVmdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByaWdodCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxl
ZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N1Yihn
bG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBh
dXRvIHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwotICAgIENI
RUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
c3ViKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJ
T04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKLSAgICAg
ICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIikp
OwotICAgIH0KLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91Ymxl
PihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOwogICAgIFJF
VFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxl
Rm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVm
dCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzAwLDI2ICs2OTAsOCBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGl2KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEaXY+KCk7CiAgICAg
SlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1Zh
bHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxl
ZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzRGl2KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpkaXZpZGUoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAg
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5H
KHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFy
aXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBkaXZpc2lvbi4iKSk7Ci0gICAgfQotCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+
KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1l
cmljKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGEgLyBiKTsKICAgICBSRVRVUk5f
V0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7CiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJp
bmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxlZnQsIHJp
Z2h0KTsKICAgICB9KTsKQEAgLTczMSwyNCArNzAzLDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX21vZCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wTW9kPigpOwogICAgIEpTVmFs
dWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBy
aWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUmVtYWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIAotICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCog
cmVzdWx0ID0gSlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwot
ICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk4ocmVzdWx0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVyIG9w
ZXJhdGlvbi4iKSk7Ci0gICAgfQotICAgIAotICAgIGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91Ymxl
PihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIGIgPSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVt
ZXJpYyk7Ci0gICAgUkVUVVJOKGpzTnVtYmVyKGpzTW9kKGEsIGIpKSk7CisgICAgUkVUVVJOKHJl
c3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCkBAIC03NTcsMjUgKzcx
NCw5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3cpCiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcFBvdz4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xo
cykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3Jocyku
anNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhnbG9iYWxP
YmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1Bv
dyhnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYm
IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAg
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZShnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
ICAgICAgICBSRVRVUk4ocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIFRIUk9XKGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0gICAg
ZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUgYiA9
IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLQotICAgIFJFVFVSTihqc051bWJlcihv
cGVyYXRpb25NYXRoUG93KGEsIGIpKSk7CisgICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCkBAIC03ODQsMjIgKzcyNSwxMCBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BM
c2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUo
KTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJp
Z2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwogCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2Jh
bE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmln
SW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
VEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4iKSk7Ci0gICAgfQotCi0g
ICAgUkVUVVJOX1BST0ZJTEVEKGpzTnVtYmVyKFdURjo6Z2V0PGludDMyX3Q+KGxlZnROdW1lcmlj
KSA8PCAoV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHROdW1lcmljKSAmIDMxKSkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNMU2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCkBAIC04MDgsMjIgKzczNywxMCBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BS
c2hpZnQ+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUo
KTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHJp
Z2h0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsK
LSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlm
dChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6Omdl
dDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQogCi0g
ICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4i
X3MpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50
MzJfdD4obGVmdE51bWVyaWMpID4+IChXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpICYg
MzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1JTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQs
IHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVz
dWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpCkBAIC04NDksNzkg
Kzc2Niw0NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0bm90KQogewogICAgIEJFR0lO
KCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEJpdG5vdD4oKTsKLSAgICBhdXRvIG9w
ZXJhbmROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkgewot
ICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSk7Ci0gICAgICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICB9Cisg
ICAgYXV0byBvcGVyYW5kID0gR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7CiAK
LSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIofldURjo6Z2V0PGludDMyX3Q+KG9wZXJhbmRO
dW1lcmljKSkpOworICAgIGF1dG8gcmVzdWx0ID0ganNCaXR3aXNlTm90KGdsb2JhbE9iamVjdCwg
b3BlcmFuZCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCiB7CiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0YW5kPigpOwotICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJ
bnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJ
bnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9Q
Uk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQorICAgIGF1dG8gbGVmdCA9IEdF
VF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdodCA9IEdFVF9DKGJ5
dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIo
V1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpICYgV1RGOjpnZXQ8aW50MzJfdD4ocmlnaHRO
dW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNlQW5kKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9G
SUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0b3IpCiB7CiAg
ICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0b3I+KCk7Ci0gICAg
YXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0
byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50
T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VPcihnbG9iYWxPYmplY3QsIFdURjo6
Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVt
ZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRV
Uk5fUFJPRklMRUQocmVzdWx0KTsKLSAgICAgICAgfQorICAgIGF1dG8gbGVmdCA9IEdFVF9DKGJ5
dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdodCA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNl
ICdvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1i
ZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIHwgV1RGOjpnZXQ8aW50MzJfdD4ocmln
aHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNlT3IoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BS
T0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCiB7
CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0eG9yPigpOwot
ICAgIGF1dG8gbGVmdE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpLnRv
QmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAg
IGF1dG8gcmlnaHROdW1lcmljID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKS50b0Jp
Z0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpiaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAg
IFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iKSk7Ci0gICAgfQorICAgIGF1dG8g
bGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CisgICAgYXV0byByaWdodCA9
IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBSRVRVUk5fUFJPRklMRUQo
anNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIF4gV1RGOjpnZXQ8aW50MzJf
dD4ocmlnaHROdW1lcmljKSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCaXR3aXNlWG9yKGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJF
VFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHlw
ZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCAxZjQ2ZTM1YTlkYS4uOGZhYWMxYjQ2YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC04NywxMiArODcsMjUgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGcKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGF1dG8gdmFyaWFudCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSBiaWdJbnRPck51bWJl
ciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzd2l0Y2hPbih2YXJpYW50LCBb
Jl0oYXV0byYmIHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQtPmZvcm1hdChn
bG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICB9KSkpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICBpZiAoYmlnSW50T3JOdW1iZXIuaXNOdW1iZXIoKSkgeworICAgICAgICBkb3VibGUgdmFsdWUg
PSBiaWdJbnRPck51bWJlci5hc051bWJlcigpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICB9CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGJpZ0ludE9yTnVtYmVyLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBKU0JpZ0ludCogdmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYmln
SW50T3JOdW1iZXIuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKKyAgICB9
CisjZW5kaWYKKworICAgIEFTU0VSVChiaWdJbnRPck51bWJlci5pc0hlYXBCaWdJbnQoKSk7Cisg
ICAgSlNCaWdJbnQqIHZhbHVlID0gYmlnSW50T3JOdW1iZXIuYXNIZWFwQmlnSW50KCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3Qs
IHZhbHVlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcAppbmRleCA5YzM0NTQ0MmY1NC4uMWMyMzljYmZhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBKU0Jp
Z0ludDo6aW5pdGlhbGl6ZShJbml0aWFsaXphdGlvblR5cGUgaW5pdFR5cGUpCiAKIFN0cnVjdHVy
ZSogSlNCaWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEJpZ0ludFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhIZWFwQmlnSW50VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVplcm8o
Vk0mIHZtKQpAQCAtMTQyLDggKzE0MiwxMCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZy
b20oVk0mIHZtLCBpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJl
dHVybiBjcmVhdGVaZXJvKHZtKTsKLSAgICAKLSAgICBpZiAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7
CisKKyAgICAvLyBUaGlzIHBhdGggaXMgbm90IGp1c3QgYW4gb3B0aW1pemF0aW9uOiBiZWNhdXNl
IHdlIGRvIG5vdCBjYWxsIHJpZ2h0VHJpbSBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24sCisg
ICAgLy8gaXQgd291bGQgYmUgYSBidWcgdG8gY3JlYXRlIGEgQmlnSW50IHdpdGggbGVuZ3RoPTIg
aW4gdGhpcyBjYXNlLgorICAgIGlmIChzaXplb2YoRGlnaXQpID09IDggfHwgKHZhbHVlIDw9IElO
VF9NQVggJiYgdmFsdWUgPj0gSU5UX01JTikpIHsKICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9
IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICBpZiAodmFsdWUgPCAw
KSB7CiAgICAgICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDAsIHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4oLSh2YWx1ZSArIDEpKSArIDEpKTsKQEAgLTE4OCwzNCArMTkw
LDIxIEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxKU0JpZ0lu
dCo+KHRoaXMpOwogfQogCi1PcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xlRGlnaXRW
YWx1ZUZvclN0cmluZygpCi17Ci0gICAgaWYgKGlzWmVybygpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICAKLSAgICBpZiAobGVuZ3RoKCkgPT0gMSAmJiAhc2lnbigpKSB7Ci0gICAgICAgIERpZ2l0
IHJEaWdpdCA9IGRpZ2l0KDApOwotICAgICAgICBpZiAockRpZ2l0IDw9IDkpCi0gICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4ockRpZ2l0KTsKLSAgICB9Ci0gICAgcmV0dXJu
IHsgfTsKLX0KLQotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCitK
U1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4
Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVy
czgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2Jh
bE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBh
cnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJpbmdWaWV3IHMsIHVpbnQ4
X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUsIFBhcnNlSW50U2lnbiBzaWduKQog
ewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2Jq
ZWN0LCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9k
ZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKICAgICByZXR1cm4g
cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwg
MCwgcmFkaXgsIHBhcnNlck1vZGUsIHNpZ24sIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0
cmluZyk7CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQorSlNWYWx1ZSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBzKQog
ewogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHMsIEVycm9yUGFyc2VNb2RlOjpJ
Z25vcmVFeGNlcHRpb25zKTsKIH0KQEAgLTQ1NCwxNiArNDQzLDIzIEBAIEpTQmlnSW50KiBKU0Jp
Z0ludDo6cmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4
LCBKU0JpZ0luCiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6aW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkg
ZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gYWRkKGdsb2JhbE9iamVjdCwgeCwgdm0u
YmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgIGlmICgheC0+c2lnbigpKQorICAgICAgICBy
ZXR1cm4gYWJzb2x1dGVBZGRPbmUoZ2xvYmFsT2JqZWN0LCB4LCBTaWduT3B0aW9uOjpVbnNpZ25l
ZCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFic29sdXRlU3ViT25lKGdsb2JhbE9iamVjdCwg
eCwgeC0+bGVuZ3RoKCkpOworICAgIHJlc3VsdC0+c2V0U2lnbih0cnVlKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmRlYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogeCkKIHsKLSAgICAvLyBGSVhNRTogd2UgY2FuIHByb2JhYmx5
IGRvIHNvbWV0aGluZyBhIGZhaXIgYml0IG1vcmUgZWZmaWNpZW50IGhlcmUKLSAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIHN1YihnbG9iYWxPYmplY3QsIHgsIHZt
LmJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKKyAgICBpZiAoeC0+aXNaZXJvKCkpIHsKKyAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCAxKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICBpZiAoIXgtPnNpZ24oKSkKKyAgICAgICAgcmV0dXJuIGFic29sdXRlU3ViT25l
KGdsb2JhbE9iamVjdCwgeCwgeC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBhYnNvbHV0ZUFkZE9u
ZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlNpZ25lZCk7CiB9CiAKIEpTQmlnSW50KiBK
U0JpZ0ludDo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCBK
U0JpZ0ludCogeSkKQEAgLTUzMiw3ICs1MjgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmJpdHdp
c2VBbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSQog
ICAgIGlmICh4LT5zaWduKCkpCiAgICAgICAgIHN0ZDo6c3dhcCh4LCB5KTsKICAgICAKLSAgICAv
LyB4ICYgKC15KSA9PSB4ICYgfih5LTEpID09IHggJiB+KHktMSkKKyAgICAvLyB4ICYgKC15KSA9
PSB4ICYgfih5LTEpCiAgICAgSlNCaWdJbnQqIHkxID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2Jq
ZWN0LCB5LCB5LT5sZW5ndGgoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CiAgICAgcmV0dXJuIGFic29sdXRlQW5kTm90KHZtLCB4LCB5MSk7CkBAIC0xNjQ0LDcg
KzE2NDAsNyBAQCBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogU3RyaW5nIEpTQmlnSW50Ojp0b1N0
cmluZ0dlbmVyaWMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogeCwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgLy8gRklYTUU6IFtKU0NdIFJldmlzaXQgdXNh
Z2Ugb2YgVmVjdG9yIGludG8gSlNCaWdJbnQ6OnRvU3RyaW5nCi0gICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3CisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY3MQogICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0
U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwpAQCAtMTgw
Miw3ICsxNzk4LDcgQEAgYm9vbCBKU0JpZ0ludDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSYgbnVtYmVyLAogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJv
clBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAKQEAgLTE4MTAsNyArMTgwNiw3IEBAIEpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRh
LCB1bnNpCiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbcF0p
KQogICAgICAgICArK3A7CiAKLSAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJhY3Rl
cnMKKyAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZpcnN0IGNoYXJhY3RlcnMKICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgp
ICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0Vx
dWFsKGRhdGFbcCArIDFdLCAnYicpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2Jh
bE9iamVjdCwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVycm9yUGFyc2VNb2RlLCBQYXJz
ZUludFNpZ246OlVuc2lnbmVkLCBQYXJzZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwpA
QCAtMTgyNCwyNCArMTgyMCwxOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENoYXJUeXBlKiAgZGF0YSwgdW5zaQogCiAgICAgUGFy
c2VJbnRTaWduIHNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkOwogICAgIGlmIChwIDwgbGVu
Z3RoKSB7Ci0gICAgICAgIGlmIChkYXRhW3BdID09ICcrJykKLSAgICAgICAgICAgICsrcDsKLSAg
ICAgICAgZWxzZSBpZiAoZGF0YVtwXSA9PSAnLScpIHsKKyAgICAgICAgaWYgKGRhdGFbcF0gPT0g
Jy0nKSB7CiAgICAgICAgICAgICBzaWduID0gUGFyc2VJbnRTaWduOjpTaWduZWQ7CiAgICAgICAg
ICAgICArK3A7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhW3BdID09ICcrJykK
KyAgICAgICAgICAgICsrcDsKICAgICB9CiAKLSAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJ
bnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUs
IHNpZ24pOwotCi0gICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKLSAgICAgICAg
cmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWduOjpTaWduZWQpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwg
bGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUsIHNpZ24pOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVy
cm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkK
K0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJ
bmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBQYXJz
ZUludFNpZ24gc2lnbiwgUGFyc2VJbnRNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBBU1NFUlQobGVu
Z3RoID49IDApOwogICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4OwpAQCAtMTg1Miw3ICsxODQy
LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zKQogICAgICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcg
dG8gQmlnSW50IikpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICB9CiAKICAgICAvLyBTa2lwcGluZyBsZWFkaW5nIHplcm9zCkBAIC0xODY2
LDQ0ICsxODU2LDg0IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0CiAKICAgICBsZW5ndGggPSBl
bmRJbmRleCArIDE7CiAKLSAgICBpZiAocCA9PSBsZW5ndGgpCisgICAgaWYgKHAgPT0gbGVuZ3Ro
KSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCAwKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBjcmVhdGVaZXJvKHZtKTsKLQot
ICAgIHVuc2lnbmVkIGxpbWl0MCA9ICcwJyArIChyYWRpeCA8IDEwID8gcmFkaXggOiAxMCk7Ci0g
ICAgdW5zaWduZWQgbGltaXRhID0gJ2EnICsgKHJhZGl4IC0gMTApOwotICAgIHVuc2lnbmVkIGxp
bWl0QSA9ICdBJyArIChyYWRpeCAtIDEwKTsKLQotICAgIEpTQmlnSW50KiByZXN1bHQgPSBhbGxv
Y2F0ZUZvcihnbG9iYWxPYmplY3QsIHZtLCByYWRpeCwgbGVuZ3RoIC0gcCk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBi
ZSBudWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9j
YXRlRm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICgh
cmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJlc3VsdC0+aW5pdGlhbGl6
ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9
IHA7IGkgPCBsZW5ndGg7IGkrKywgcCsrKSB7Ci0gICAgICAgIHVpbnQzMl90IGRpZ2l0OwotICAg
ICAgICBpZiAoZGF0YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKLSAgICAgICAgICAg
IGRpZ2l0ID0gZGF0YVtpXSAtICcwJzsKLSAgICAgICAgZWxzZSBpZiAoZGF0YVtpXSA+PSAnYScg
JiYgZGF0YVtpXSA8IGxpbWl0YSkKLSAgICAgICAgICAgIGRpZ2l0ID0gZGF0YVtpXSAtICdhJyAr
IDEwOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdBJyAmJiBkYXRhW2ldIDwgbGltaXRB
KQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ0EnICsgMTA7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRk
KHN0YXRpY19jYXN0PERpZ2l0PihyYWRpeCksIHN0YXRpY19jYXN0PERpZ2l0PihkaWdpdCkpOwor
I2VuZGlmCiAgICAgfQogCi0gICAgcmVzdWx0LT5zZXRTaWduKHNpZ24gPT0gUGFyc2VJbnRTaWdu
OjpTaWduZWQgPyB0cnVlIDogZmFsc2UpOwotICAgIGlmIChwID09IGxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKKyAgICAvLyBUaGUgaWRlYSBpcyB0byBwaWNr
IHRoZSBsYXJnZXN0IG51bWJlciBzdWNoIHRoYXQgcmFkaXggKiogbGVuZ3RoTGltaXRGb3JCaWdJ
bnQzMiA8PSBJTlQzMl9NQVgKKyAgICB1bnNpZ25lZCBsZW5ndGhMaW1pdEZvckJpZ0ludDMyOwor
ICAgIHN3aXRjaCAocmFkaXgpIHsKKyAgICBjYXNlIDI6CisgICAgICAgIGxlbmd0aExpbWl0Rm9y
QmlnSW50MzIgPSAzMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgICBsZW5n
dGhMaW1pdEZvckJpZ0ludDMyID0gMTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTA6Cisg
ICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA5OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIDE2OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gNzsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDE7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEpTQmlnSW50KiBoZWFwUmVzdWx0ID0gbnVsbHB0
cjsKIAotICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIGlmIChlcnJvclBhcnNlTW9kZSA9
PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQotICAgICAgICB0aHJvd1ZNRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFp
bGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgdW5zaWduZWQgbGltaXQwID0g
JzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKKyAgICB1bnNpZ25lZCBsaW1pdGEgPSAn
YScgKyAoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmFkaXgpIC0gMTApOworICAgIHVuc2lnbmVkIGxp
bWl0QSA9ICdBJyArIChzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5z
aWduZWQgaW5pdGlhbExlbmd0aCA9IGxlbmd0aCAtIHA7CisgICAgd2hpbGUgKHAgPCBsZW5ndGgp
IHsKKyAgICAgICAgaW50MzJfdCBkaWdpdCA9IDA7CisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwg
Q3Jhc2hPbk92ZXJmbG93PiBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgJiYgcCA8IGxlbmd0aCA7ICsraSwgKytw
KSB7CisgICAgICAgICAgICBkaWdpdCAqPSByYWRpeDsKKyAgICAgICAgICAgIG11bHRpcGxpZXIg
Kj0gcmFkaXg7CisgICAgICAgICAgICBpZiAoZGF0YVtwXSA+PSAnMCcgJiYgZGF0YVtwXSA8IGxp
bWl0MCkKKyAgICAgICAgICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJzAnOworICAgICAgICAg
ICAgZWxzZSBpZiAoZGF0YVtwXSA+PSAnYScgJiYgZGF0YVtwXSA8IGxpbWl0YSkKKyAgICAgICAg
ICAgICAgICBkaWdpdCArPSBkYXRhW3BdIC0gJ2EnICsgMTA7CisgICAgICAgICAgICBlbHNlIGlm
IChkYXRhW3BdID49ICdBJyAmJiBkYXRhW3BdIDwgbGltaXRBKQorICAgICAgICAgICAgICAgIGRp
Z2l0ICs9IGRhdGFbcF0gLSAnQScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRp
b25zKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAg
ICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3lu
dGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQi
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGRpZ2l0IDwgbXVsdGlw
bGllci51bnNhZmVHZXQoKSk7CisKKyAgICAgICAgaWYgKCFoZWFwUmVzdWx0KSB7CisgICAgICAg
ICAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbiA9PSBQYXJz
ZUludFNpZ246OlNpZ25lZCkKKyAgICAgICAgICAgICAgICAgICAgZGlnaXQgKj0gLTE7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpT
QmlnSW50MzIsIGRpZ2l0KTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZy
b20odm0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGRpZ2l0KSk7CisjZW5kaWYKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGhlYXBSZXN1bHQgPSBhbGxvY2F0ZUZvcihnbG9iYWxPYmplY3QsIHZt
LCByYWRpeCwgaW5pdGlhbExlbmd0aCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgLy8gcmVzdWx0IGNhbiBzdGlsbCBiZSBu
dWxsIGlmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGdsb2JhbCBvYmplY3QsIGFzIGFsbG9jYXRl
Rm9yIGNhbm5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAg
aWYgKCFoZWFwUmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICBoZWFwUmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFpl
cm8pOworICAgICAgICB9CisgICAgICAgIGhlYXBSZXN1bHQtPmlucGxhY2VNdWx0aXBseUFkZChz
dGF0aWNfY2FzdDxEaWdpdD4obXVsdGlwbGllci51bnNhZmVHZXQoKSksIHN0YXRpY19jYXN0PERp
Z2l0PihkaWdpdCkpOworICAgIH0KIAotICAgIHJldHVybiBudWxscHRyOworICAgIGhlYXBSZXN1
bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7CisgICAgcmV0dXJuIGhl
YXBSZXN1bHQtPnJpZ2h0VHJpbSh2bSk7CiB9CiAKIGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNC
aWdJbnQ6OmRpZ2l0KHVuc2lnbmVkIG4pCkBAIC0xOTI3LDE4ICsxOTU3LDIwIEBAIGJvb2wgSlNC
aWdJbnQ6OmVxdWFsc1RvTnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCiB7CiAgICAgQVNTRVJUKG51
bVZhbHVlLmlzTnVtYmVyKCkpOwogICAgIAotICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpIHsK
LSAgICAgICAgaW50IHZhbHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOwotICAgICAgICBpZiAoIXZh
bHVlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOwotCi0gICAgICAgIHJldHVy
biAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkg
JiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNf
Y2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Ci0gICAgfQorICAgIGlmIChudW1WYWx1ZS5pc0ludDMy
KCkpCisgICAgICAgIHJldHVybiBlcXVhbHNUb0ludDMyKG51bVZhbHVlLmFzSW50MzIoKSk7CiAg
ICAgCiAgICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKICAgICByZXR1cm4g
Y29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsK
IH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihpbnQzMl90IHZhbHVlKQoreworICAg
IGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiB0aGlzLT5pc1plcm8oKTsKKyAgICByZXR1cm4g
KHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0aGlzLT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpICYm
ICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RkOjphYnMoc3RhdGljX2Nh
c3Q8aW50NjRfdD4odmFsdWUpKSkpOworfQorCiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBK
U0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSkKIHsKICAgICAv
LyBUaGlzIGFsZ29yaXRobSBleHBlY3QgdGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJRUVFIDc1
NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggOGE0ZTYwOTlm
NDcuLjhlMmMxNDhlNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8
dGljYWlvbGltYUBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04Miw2ICs4MiwxNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQogCisgICAgc3RhdGljIEpTVmFsdWUgbWFrZUhlYXBCaWdJbnRP
ckJpZ0ludDMyKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSkKKyAgICB7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBpZiAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlOKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgc3RhdGljX2Nhc3Q8
aW50MzJfdD4odmFsdWUpKTsKKyNlbmRpZgorCisgICAgICAgIGF1dG8gcHRyID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoc3RhdGljX2Nh
c3Q8SlNDZWxsKj4ocHRyKSk7CisgICAgfQorCiAgICAgZW51bSBjbGFzcyBFcnJvclBhcnNlTW9k
ZSB7CiAgICAgICAgIFRocm93RXhjZXB0aW9ucywKICAgICAgICAgSWdub3JlRXhjZXB0aW9ucwpA
QCAtOTAsMTMgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQYXJzZUludE1vZGUg
eyBEaXNhbGxvd0VtcHR5U3RyaW5nLCBBbGxvd0VtcHR5U3RyaW5nIH07CiAgICAgZW51bSBjbGFz
cyBQYXJzZUludFNpZ24geyBVbnNpZ25lZCwgU2lnbmVkIH07CiAKLSAgICBzdGF0aWMgSlNCaWdJ
bnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJh
ZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBh
cnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOwotICAgIHN0YXRpYyBKU0JpZ0lu
dCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9
IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpOwotICAgIHN0YXRpYyBKU0JpZ0ludCog
c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMg
SlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RyaW5nVmlldywgdWludDhf
dCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25z
LCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlVuc2lnbmVkKTsKKyAgICBzdGF0aWMgSlNW
YWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2Rl
ID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpTVmFsdWUg
c3RyaW5nVG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3KTsKIAogICAgIHN0YXRp
YyBTdHJpbmcgdHJ5R2V0U3RyaW5nKFZNJiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRpeCk7CiAK
LSAgICBPcHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7CiAgICAg
U3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcmFkaXgpOwogICAgIAog
ICAgIGVudW0gY2xhc3MgQ29tcGFyaXNvbk1vZGUgewpAQCAtMTEzLDYgKzEyMyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbHMoSlNCaWdJ
bnQqLCBKU0JpZ0ludCopOwogICAgIGJvb2wgZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbHNUb0ludDMyKGludDMyX3QpOwogICAgIHN0YXRp
YyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsKIAog
ICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBudW1i
ZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CkBAIC0yMjIsMTAgKzIzMywxMCBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMg
SlNCaWdJbnQqIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBwYXJzZUlu
dChKU0dsb2JhbE9iamVjdCosIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJv
clBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3Rh
dGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgs
IEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFy
c2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKKyAgICBzdGF0aWMg
SlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9y
UGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFyc2VJbnRN
b2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsKIAogICAgIHN0YXRpYyBKU0Jp
Z0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJhZGl4LCB1
bnNpZ25lZCBjaGFyY291bnQpOwogCkBAIC0yNTgsOSArMjY5LDkgQEAgcHJpdmF0ZToKICAgICBD
YWdlZFVuaXF1ZVB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBEaWdpdD4gbV9kYXRhOwogfTsKIAot
aW5saW5lIEpTQmlnSW50KiBhc0JpZ0ludChKU1ZhbHVlIHZhbHVlKQoraW5saW5lIEpTQmlnSW50
KiBhc0hlYXBCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUuYXNDZWxs
KCktPmlzQmlnSW50KCkpOworICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNIZWFwQmlnSW50
KCkpOwogICAgIHJldHVybiBqc0Nhc3Q8SlNCaWdJbnQqPih2YWx1ZS5hc0NlbGwoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNWRi
N2NkM2ZkMTkuLjNhYzljNjgwYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAorI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKQEAgLTcxLDYgKzcyLDE0IEBAIGRv
dWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc0ludDMyKCkgJiYgIWlzRG91YmxlKCkpOwogICAgIGlm
IChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b051bWJlcihnbG9iYWxPYmpl
Y3QpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxv
d2VkLiJfcyk7CisgICAgICAgIHJldHVybiAwLjA7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKGlz
VHJ1ZSgpKQogICAgICAgICByZXR1cm4gMS4wOwogICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8g
UE5hTiA6IDA7IC8vIG51bGwgYW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgpAQCAtMTAxLDYg
KzExMCwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVy
KGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKICAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgp
KQogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGds
b2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmln
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsICp0aGlzKTsKKyNlbmRpZgogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkp
OwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2Jq
ZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpAQCAtMTE4LDYgKzEzMSwxMyBAQCBKU1Zh
bHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQogICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVyKGdsb2Jh
bE9iamVjdCwgYXNWYWx1ZSgpKTsKICAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQogICAg
ICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGdsb2JhbE9i
amVjdCwgYXNWYWx1ZSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIo
KSkgeworICAgICAgICBKU0NlbGwqIGhlYXBCaWdJbnQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihK
U0JpZ0ludDo6Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIGJpZ0ludDMyQXNJbnQzMigp
KSk7CisgICAgICAgIHJldHVybiBoZWFwQmlnSW50LT50b09iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKIH0KQEAgLTEzMCw3ICsxNTAsNyBAQCBK
U09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIGlmIChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJp
bmcoKSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgp
OwotICAgICAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAgICAg
ICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3lt
Ym9sUHJvdG90eXBlKCk7CkBAIC0xNDAsNiArMTYwLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpz
eW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlclByb3RvdHlwZSgpOwogICAgIGlmIChp
c0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Ym9vbGVhblByb3RvdHlw
ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsKKyNlbmRpZgogCiAgICAgQVNT
RVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwogICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwpA
QCAtMjg2LDYgKzMxMCw4IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3Ry
dWN0dXJlKAogICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJhd1BvaW50ZXIoYXND
ZWxsKCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJD
bGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0
dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwoKSksIGNvbnRleHQp
KTsKKyAgICAgICAgZWxzZSBpZiAoaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICBvdXQucHJp
bnQoIkJpZ0ludFtoZWFwLWFsbG9jYXRlZF06IGFkZHI9IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkp
OwogICAgICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2Yo
SlNPYmplY3Q6OmluZm8oKSkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiT2JqZWN0OiAiLCBS
YXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiB3aXRoIGJ1dHRl
cmZseSAiLCBSYXdQb2ludGVyKGFzT2JqZWN0KGFzQ2VsbCgpKS0+YnV0dGVyZmx5KCkpKTsKQEAg
LTMwNSw2ICszMzEsMTAgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1
Y3R1cmUoCiAgICAgICAgIG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZp
bmVkKCkpCiAgICAgICAgIG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGVsc2UgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50
W2lubGluZV06ICVkIiwgYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAg
ICAgICBvdXQucHJpbnQoIklOVkFMSUQiKTsKIH0KQEAgLTM0Nyw2ICszNzcsMTAgQEAgdm9pZCBK
U1ZhbHVlOjpkdW1wRm9yQmFja3RyYWNlKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAg
IG91dC5wcmludCgiTnVsbCIpOwogICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IG91dC5wcmludCgiVW5kZWZpbmVkIik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYg
KGlzQmlnSW50MzIoKSkKKyAgICAgICAgb3V0LnByaW50ZigiQmlnSW50W2lubGluZV06ICVkIiwg
YmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQo
IklOVkFMSUQiKTsKIH0KQEAgLTM4NCwxOCArNDE4LDI1IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0
b1N0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgcmV0dXJu
RW1wCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MubnVsbFN0cmluZygpOwogICAgIGlm
IChpc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5l
ZFN0cmluZygpOwotICAgIGlmIChpc1N5bWJvbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmlu
ZyJfcyk7Ci0gICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgYXV0byBpbnRlZ2VyID0gYmlnSW50MzJB
c0ludDMyKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZWdlcikgPD0g
OSkKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGludGVnZXIgKyAnMCcpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZt
LCB2bS5udW1lcmljU3RyaW5ncy5hZGQoaW50ZWdlcikpOwogICAgIH0KLSAgICBpZiAoaXNCaWdJ
bnQoKSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gYXNCaWdJbnQoKnRoaXMpOwotICAg
ICAgICBpZiAoYXV0byBkaWdpdCA9IGJpZ0ludC0+c2luZ2xlRGlnaXRWYWx1ZUZvclN0cmluZygp
KQotICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoKmRpZ2l0ICsgJzAnKTsKLSAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgYmlnSW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKSk7Cisj
ZW5kaWYKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0lu
dCA9IGFzSGVhcEJpZ0ludCgpOworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJhdGhlciBo
YXZlIHR3byBjYXNlcyBoZXJlOiBvbmUtY2hhcmFjdGVyIHN0cmluZyB2cyBqc05vblRyaXZpYWxT
dHJpbmcgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmlu
ZyA9IEpTU3RyaW5nOjpjcmVhdGUodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAx
MCkucmVsZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIHJldHVyblN0cmlu
ZzsKICAgICB9CisgICAgaWYgKGlzU3ltYm9sKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5n
Il9zKTsKKyAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsKKyAgICB9CiAKICAgICBBU1NFUlQo
aXNDZWxsKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xv
YmFsT2JqZWN0LCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCmluZGV4IDQyYzUzNzc3Y2NkLi44NzJjMzYzOTk0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMTc3LDYgKzE3Nyw5IEBAIHB1
YmxpYzoKICAgICBlbnVtIEpTVHJ1ZVRhZyB7IEpTVHJ1ZSB9OwogICAgIGVudW0gSlNGYWxzZVRh
ZyB7IEpTRmFsc2UgfTsKICAgICBlbnVtIEpTQ2VsbFRhZyB7IEpTQ2VsbFR5cGUgfTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgZW51bSBKU0JpZ0ludDMyVGFnIHsgSlNCaWdJbnQzMiB9OworI2Vu
ZGlmCiAgICAgZW51bSBFbmNvZGVBc0RvdWJsZVRhZyB7IEVuY29kZUFzRG91YmxlIH07CiAKICAg
ICBKU1ZhbHVlKCk7CkBAIC0xODYsNiArMTg5LDkgQEAgcHVibGljOgogICAgIEpTVmFsdWUoSlNG
YWxzZVRhZyk7CiAgICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7CiAgICAgSlNWYWx1ZShjb25zdCBK
U0NlbGwqIHB0cik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTVmFsdWUoSlNCaWdJbnQzMlRh
ZywgaW50MzJfdCk7CisjZW5kaWYKIAogICAgIC8vIE51bWJlcnMKICAgICBKU1ZhbHVlKEVuY29k
ZUFzRG91YmxlVGFnLCBkb3VibGUpOwpAQCAtMjE5LDYgKzIyNSw5IEBAIHB1YmxpYzoKICAgICBk
b3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAg
IGRvdWJsZSBhc051bWJlcigpIGNvbnN0OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpbnQzMl90
IGJpZ0ludDMyQXNJbnQzMigpIGNvbnN0OyAvLyBtdXN0IG9ubHkgYmUgY2FsbGVkIG9uIGEgQmln
SW50MzIKKyNlbmRpZgogICAgIAogICAgIGludDMyX3QgYXNJbnQzMkZvckFyaXRobWV0aWMoKSBj
b25zdDsgLy8gQm9vbGVhbiBiZWNvbWVzIGFuIGludCwgYnV0IG90aGVyd2lzZSBsaWtlIGFzSW50
MzIoKS4KIApAQCAtMjM4LDYgKzI0Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVtYmVyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNCaWdJbnQoKSBj
b25zdDsKKyAgICBib29sIGlzSGVhcEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNCaWdJbnQz
MigpIGNvbnN0OwogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0
aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpAQCAtMjQ2LDcg
KzI1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGluaGVyaXRzKFZNJiwgY29uc3QgQ2xhc3NJbmZv
KikgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0PiBib29sIGluaGVyaXRzKFZN
JikgY29uc3Q7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Pck51bGwoVk0mKSBjb25z
dDsKLSAgICAgICAgCisKICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KICAgICBib29sIGdl
dFN0cmluZyhKU0dsb2JhbE9iamVjdCosIFdURjo6U3RyaW5nJikgY29uc3Q7CiAgICAgV1RGOjpT
dHJpbmcgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlm
IG5vdCBhIHN0cmluZwpAQCAtMjY1LDkgKzI3NiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gdG9OdW1i
ZXIgY29udmVyc2lvbiBpcyBleHBlY3RlZCB0byBiZSBzaWRlIGVmZmVjdCBmcmVlIGlmIGFuIGV4
Y2VwdGlvbiBoYXMKICAgICAvLyBiZWVuIHNldCBpbiB0aGUgQ2FsbEZyYW1lIGFscmVhZHkuCiAg
ICAgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgCi0gICAgVmFy
aWFudDxKU0JpZ0ludCosIGRvdWJsZT4gdG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
Ci0gICAgVmFyaWFudDxKU0JpZ0ludCosIGludDMyX3Q+IHRvQmlnSW50T3JJbnQzMihKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OworCisgICAgSlNWYWx1ZSB0b051bWVyaWMoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKKyAgICBKU1ZhbHVlIHRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCopIGNv
bnN0OworICAgIEpTQmlnSW50KiBhc0hlYXBCaWdJbnQoKSBjb25zdDsKIAogICAgIC8vIHRvTnVt
YmVyIGNvbnZlcnNpb24gaWYgaXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCiAg
ICAgT3B0aW9uYWw8ZG91YmxlPiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKQEAgLTMx
Niw4ICszMjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVx
dWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KTsKICAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2UoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKLSAgICBzdGF0aWMgYm9vbCBz
dHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7CisgICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogdjEsIEpTQ2VsbCogdjIpOwogICAgIHN0YXRpYyBUcmlTdGF0ZSBwdXJl
U3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAKICAgICBib29sIGlzQ2VsbCgp
IGNvbnN0OwpAQCAtNDE1LDExICs0MjYsMjAgQEAgcHVibGljOgogICAgICAqIFRoZXNlIHZhbHVl
cyBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAgICAgKiAtIEJpdCAxIChPdGhlclRh
ZykgaXMgc2V0IGZvciBhbGwgZm91ciB2YWx1ZXMsIGFsbG93aW5nIHJlYWwgcG9pbnRlcnMgdG8g
YmUKICAgICAgKiAgIHF1aWNrbHkgZGlzdGluZ3Vpc2hlZCBmcm9tIGFsbCBpbW1lZGlhdGUgdmFs
dWVzLCBpbmNsdWRpbmcgdGhlc2UgaW52YWxpZCBwb2ludGVycy4KLSAgICAgKiAtIFdpdGggYml0
IDMgaXMgbWFza2VkIG91dCAoVW5kZWZpbmVkVGFnKSBVbmRlZmluZWQgYW5kIE51bGwgc2hhcmUg
dGhlCisgICAgICogLSBXaXRoIGJpdCAzIG1hc2tlZCBvdXQgKFVuZGVmaW5lZFRhZyksIFVuZGVm
aW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKICAgICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51
bGwgJiB1bmRlZmluZWQgdG8gYmUgcXVpY2tseSBkZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5v
IHZhbGlkIEpTVmFsdWUgd2lsbCBoYXZlIHRoZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNl
ZCB0byByZXByZXNlbnQgYXJyYXkKICAgICAgKiBob2xlcywgYW5kIGFzIGEgQysrICdubyB2YWx1
ZScgcmVzdWx0IChlLmcuIEpTVmFsdWUoKSBoYXMgYW4gaW50ZXJuYWwgdmFsdWUgb2YgMCkuCisg
ICAgICoKKyAgICAgKiBXaGVuIFVTRShCSUdJTlQzMiksIHdlIGhhdmUgYSBzcGVjaWFsIHJlcHJl
c2VudGF0aW9uIGZvciBCaWdJbnRzIHRoYXQgYXJlIHNtYWxsICgzMi1iaXQgYXQgbW9zdCk6Cisg
ICAgICogICAgICAwMDAwOlhYWFg6WFhYWDowMDEyCisgICAgICogVGhpcyByZXByZXNlbnRhdGlv
biB3b3JrcyBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAqIC0gSXQgY2Fu
bm90IGJlIGNvbmZ1c2VkIHdpdGggYSBEb3VibGUgb3IgSW50ZWdlciB0aGFua3MgdG8gdGhlIHRv
cCBiaXRzCisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8g
YSBDZWxsLCB0aGFua3MgdG8gYml0IDEgd2hpY2ggaXMgc2V0IHRvIHRydWUKKyAgICAgKiAtIEl0
IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byB3YXNtIHRoYW5rcyB0byBiaXQg
MCB3aGljaCBpcyBzZXQgdG8gZmFsc2UKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3
aXRoIHRydWUvZmFsc2UgYmVjYXVzZSBiaXQgMiBpcyBzZXQgdG8gZmFsc2UKKyAgICAgKiAtIEl0
IGNhbm5vdCBiZSBjb25mdXNlZCBmb3IgbnVsbC91bmRlZmluZWQgYmVjYXVzZSBiaXQgNCBpcyBz
ZXQgdG8gdHJ1ZQogICAgICAqLwogCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyAyXjQ5LCB1c2VkIHRv
IGVuY29kZSBkb3VibGVzIHN1Y2ggdGhhdCB0aGUgZW5jb2RlZCB2YWx1ZSB3aWxsIGJlZ2luCkBA
IC00MjksMTEgKzQ0OSwxOSBAQCBwdWJsaWM6CiAgICAgLy8gSWYgYWxsIGJpdHMgaW4gdGhlIG1h
c2sgYXJlIHNldCwgdGhpcyBpbmRpY2F0ZXMgYW4gaW50ZWdlciBudW1iZXIsCiAgICAgLy8gaWYg
YW55IGJ1dCBub3QgYWxsIGFyZSBzZXQgdGhpcyB2YWx1ZSBpcyBhIGRvdWJsZSBwcmVjaXNpb24g
bnVtYmVyLgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBOdW1iZXJUYWcgPSAweGZmZmUw
MDAwMDAwMDAwMDBsbDsKKyAgICAvLyBUaGUgZm9sbG93aW5nIGNvbnN0YW50IGlzIHVzZWQgZm9y
IGEgdHJpY2sgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHN0cmljdEVxLCB0byBkZXRlY3QgaWYg
ZWl0aGVyIG9mIHRoZSBhcmd1bWVudHMgaXMgYSBkb3VibGUKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludDY0X3QgTG93ZXN0T2ZIaWdoQml0cyA9IDFVTEwgPDwgNDk7CisgICAgc3RhdGljX2Fzc2Vy
dChMb3dlc3RPZkhpZ2hCaXRzICYgTnVtYmVyVGFnKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCEoKExv
d2VzdE9mSGlnaEJpdHM+PjEpICYgTnVtYmVyVGFnKSk7CiAKICAgICAvLyBBbGwgbm9uLW51bWVy
aWMgKGJvb2wsIG51bGwsIHVuZGVmaW5lZCkgaW1tZWRpYXRlcyBoYXZlIGJpdCAyIHNldC4KICAg
ICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgT3RoZXJUYWcgICAgICAgPSAweDI7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQzMl90IEJvb2xUYWcgICAgICAgID0gMHg0OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50MzJfdCBVbmRlZmluZWRUYWcgICA9IDB4ODsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IEJpZ0ludDMyVGFnICAgID0gMHgxMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgQmlnSW50MzJNYXNrICAgPSBOdW1iZXJUYWcgfCBC
aWdJbnQzMlRhZzsKKyNlbmRpZgogICAgIC8vIENvbWJpbmVkIGludGVnZXIgdmFsdWUgZm9yIG5v
bi1udW1lcmljIGltbWVkaWF0ZXMuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVl
RmFsc2UgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwgZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQzMl90IFZhbHVlVHJ1ZSAgICAgID0gT3RoZXJUYWcgfCBCb29sVGFnIHwgdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CmluZGV4IDViM2ZmOGFjNDRlLi5iZTBmMzljNTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNiBAQAog
I2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJNYXRoQ29tbW9uLmgiCi0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzI5LDYgKzMyOCwx
MiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAor
QUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFp
c0ltcHVyZU5hTihkKSk7CkBAIC01MjIsOCArNTI3LDIyIEBAIEFMV0FZU19JTkxJTkUgSlNDZWxs
KiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJldHVybiB1LnB0cjsKIH0KIAorQUxXQVlT
X0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+
KHUucHRyKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKKyNpZiBVU0UoQklHSU5U
MzIpCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90IHZhbHVl
KQoreworICAgIC8vIFRoZSAmIH5OdW1iZXJUYWcgcGFydCBpcyBmb3IgbmVnYXRpdmUgbnVtYmVy
cywgb3RoZXJ3aXNlIHRoZXkgZ2V0IHNpZ24tZXh0ZW5kZWQuCisgICAgdS5hc0ludDY0ID0gKChz
dGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkgPDwgMTYpICYgfk51bWJlclRhZykgfCBCaWdJbnQz
MlRhZzsKK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIGlubGluZSBpbnQ2NF90IHRyeUNv
bnZlcnRUb0ludDUyKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgaWYgKG51bWJlciAhPSBudW1iZXIp
CkBAIC02MTAsOSArNjI5LDMxIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29u
c3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gaXNCaWdJbnQz
MigpIHx8IGlzSGVhcEJpZ0ludCgpOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0hlYXBC
aWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNIZWFw
QmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50MzIoKSBjb25zdAor
eworI2lmIFVTRShCSUdJTlQzMikKKyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIEJpZ0ludDMyTWFz
aykgPT0gQmlnSW50MzJUYWc7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQog
CisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YmlnSW50MzJBc0lu
dDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4odS5hc0ludDY0ID4+IDE2KTsKK30KKyNlbmRpZiAvLyBVU0UoQklH
SU5UMzIpCisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBAIC02MjAsNyArNjYxLDcg
QEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAogCiBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc1ByaW1pdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpc0NlbGwoKSB8fCBh
c0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+
aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygp
IHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0K
IAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdApAQCAtNzYwLDgg
KzgwMSwxNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudQogICAgICAgICB2YWx1ZSA9ICp0aGlz
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkp
OwotICAgIG51bWJlciA9IFBOYU47CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
bnVtYmVyID0gUE5hTjsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBm
cm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfcyk7CisgICAgbnVtYmVy
ID0gMC4wOwogICAgIHZhbHVlID0gKnRoaXM7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03NzUs
NDQgKzgyNSw0NSBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiB0b051bWJlclNsb3dD
YXNlKGdsb2JhbE9iamVjdCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgVmFyaWFudDxKU0JpZ0ludCos
IGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
IGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9OdW1lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAgICAg
ICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJu
IGFzRG91YmxlKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0lu
dCgqdGhpcyk7CisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpIHx8IGlzQmlnSW50KCkp
CisgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSBwcmltVmFsdWUgPSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51
bWJlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKHByaW1WYWx1ZS5p
c0RvdWJsZSgpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gcHJpbVZh
bHVlOworCiAgICAgZG91YmxlIHZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVl
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4ganNO
dW1iZXIodmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBpbnQz
Ml90PiBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkgY29uc3QKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50MzIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICBpZiAoaXNJbnQzMigp
KQotICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIGlmIChpc0ludDMyKCkgfHwgaXNCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIGlmIChpc0RvdWJsZSgpICYmIGNhbkJl
SW50MzIoYXNEb3VibGUoKSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pihh
c0RvdWJsZSgpKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50
KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGFz
RG91YmxlKCkpKTsKIAogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBwcmltVmFs
dWUgPSB0aGlzLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQocHJpbVZhbHVlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKHByaW1WYWx1ZS5pc0ludDMyKCkgfHwg
cHJpbVZhbHVlLmlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiBwcmltVmFsdWU7CisKICAgICBp
bnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLnRvSW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICByZXR1cm4ganNOdW1iZXIodmFsdWUpOwog
fQogCiBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CkBAIC0xMDMyLDM3ICsxMDgzLDE3IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgZG8gewotICAgICAgICBpZiAodjEu
aXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVt
YmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKLQotICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmco
KTsKLSAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7Ci0gICAgICAgIGlmIChzMSAmJiBz
MikKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcodjEpLT5l
cXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOwotCi0gICAgICAgIGlmICh2MS5pc0Jp
Z0ludCgpICYmIHMyKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdjJTdHJpbmcgPSBhc1N0cmluZyh2
MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJp
bmdUb0JpZ0ludChnbG9iYWxPYmplY3QsIHYyU3RyaW5nKTsKLSAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghbikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHYyID0gSlNW
YWx1ZShuKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodjEuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIC8vIEd1YXJh
bnRlZWluZyB0aGF0IGlmIHdlIGhhdmUgYSBudW1iZXIgaXQgaXMgdjIgbWFrZXMgc29tZSBvZiB0
aGUgY2FzZXMgYmVsb3cgc2ltcGxlci4KKyAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwgdjIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKHMxICYmIHYyLmlzQmlnSW50KCkpIHsKLSAgICAgICAg
ICAgIFN0cmluZyB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsK
LSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAg
ICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwg
djFTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKG4pOwotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBkZWFscyB3aXRoIEJvb2xlYW5zLCBC
aWdJbnQzMiwgT2JqZWN0cywgYW5kIGlzIGEgc2hvcnRjdXQgZm9yIGEgZmV3IG1vcmUgdHlwZXMu
CisgICAgICAgIC8vIEl0IGhhcyB0byBjb21lIGhlcmUgYW5kIG5vdCBiZWZvcmUsIGJlY2F1c2Ug
aXQgaXMgTk9UIHRydWUgdGhhdCBOYU4gPT0gTmFOCisgICAgICAgIGlmICh2MSA9PSB2MikKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGlmICh2MS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkKQEAgLTEwODAs
NyArMTExMSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAKICAgICAgICAgaWYgKHYxLmlz
T2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc09iamVjdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB2MSA9PSB2MjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHYx
ID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAgICAgICBKU1Zh
bHVlIHAxID0gdjEudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHYxID0gcDE7CkBAIC0x
MTAyLDU2ICsxMTMzLDg0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dD
YXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgICAgIGJvb2wg
c3ltMiA9IHYyLmlzU3ltYm9sKCk7CiAgICAgICAgIGlmIChzeW0xIHx8IHN5bTIpIHsKICAgICAg
ICAgICAgIGlmIChzeW0xICYmIHN5bTIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFzU3ltYm9s
KHYxKSA9PSBhc1N5bWJvbCh2Mik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB2
MSA9PSB2MiBpcyBhbHJlYWR5IGRlYWx0IHdpdGggcHJldmlvdXNseQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5nKCk7
CisgICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOworICAgICAgICBpZiAoczEpIHsKKyAg
ICAgICAgICAgIGlmIChzMikKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyh2MikpKTsKKyAg
ICAgICAgICAgIHN0ZDo6c3dhcCh2MSwgdjIpOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJh
bnRlZWQgdG8gZW50ZXIgdGhlIG5leHQgY2FzZSwgc28gbG9zaW5nIHRoZSBpbnZhcmlhbnQgb2Yg
b25seSB2MiBiZWluZyBhIG51bWJlciBpcyBmaW5lCisgICAgICAgIH0KICAgICAgICAgaWYgKHMx
IHx8IHMyKSB7Ci0gICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmpl
Y3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAg
ICAgICAgICAgZG91YmxlIGQyID0gdjIudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVy
biBkMSA9PSBkMjsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyYW50ZWVkIHRoYXQgdGhlIHN0
cmluZyBpcyB2MiAodGhhbmtzIHRvIHRoZSBzd2FwIGFib3ZlKQorICAgICAgICAgICAgaWYgKHYx
LmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdjJTdHJpbmcgPSBhc1N0cmlu
Zyh2MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHYyID0gSlNCaWdJbnQ6OnN0
cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOworICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXYy
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYg
KHYxID09IHYyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRm9yIEJpZ0lu
dDMyCisgICAgICAgICAgICAgICAgLy8gV2UgZmFsbHRocm91Z2ggdG8gdGhlIGdlbmVyaWMgY29k
ZSBmb3IgY29tcGFyaW5nIEJpZ0ludHMgKHdoaWNoIGlzIG9ubHkgbWlzc2luZyB0aGUgQmlnSW50
MzIvQmlnSW50MzIgY2FzZSwgaGVuY2UgdGhlIGNoZWNrIGFib3ZlKQorICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodjEuaXNOdW1iZXIoKSB8fCB2MS5pc0Jvb2xl
YW4oKSk7CisgICAgICAgICAgICAgICAgZG91YmxlIGQxID0gdjEudG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgZG91YmxlIGQyID0gdjIudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGQxID09IGQyOworICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHYxLmlzQm9vbGVhbigpKSB7CiAgICAgICAgICAgICBpZiAodjIuaXNOdW1i
ZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2MS5hc0Jv
b2xlYW4oKSkgPT0gdjIuYXNOdW1iZXIoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHYyLmlzQmln
SW50KCkpIHsKLSAgICAgICAgICAgICAgICB2MSA9IEpTVmFsdWUodjEudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICB2MSA9IEpTVmFsdWUodjEudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAg
ICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgQmlnSW50L051bWJlciBjb21wYXJpc29uIGJl
bG93CisgICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgb25lIG1vcmUgc3dhcCB0byByZXBhaXIg
dGhlIHJ1bGUgdGhhdCBvbmx5IHYyIGlzIGFsbG93ZWQgdG8gYmUgYSBudW1iZXIgaW4gdGhlc2Ug
Y29tcGFyaXNvbnMKKyAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwgdjIpOwogICAgICAgICB9IGVs
c2UgaWYgKHYyLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHYyLmFzQm9vbGVhbigpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHYxLmlzQmlnSW50KCkp
IHsKLSAgICAgICAgICAgICAgICB2MiA9IEpTVmFsdWUodjIudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICB2MiA9IEpTVmFsdWUodjIudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICAv
LyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgQmlnSW50L051bWJlciBjb21wYXJpc29uIGJlbG93CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmln
SW50KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSks
IGFzQmlnSW50KHYyKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2
Mi5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYxKS0+ZXF1YWxzVG9O
dW1iZXIodjIpOwogCi0gICAgICAgIGlmICh2Mi5pc0JpZ0ludCgpICYmIHYxLmlzTnVtYmVyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjIpLT5lcXVhbHNUb051bWJlcih2MSk7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAodjEuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
ICAgICBpZiAodjIuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5iaWdJbnQz
MkFzSW50MzIoKSA9PSB2Mi5hc0ludDMyKCk7CisgICAgICAgICAgICBpZiAodjIuaXNEb3VibGUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2MS5iaWdJbnQz
MkFzSW50MzIoKSkgPT0gdjIuYXNEb3VibGUoKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwg
djIpOworICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmICh2
MS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgaWYgKHYyLmlzSGVhcEJpZ0ludCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgp
LCB2Mi5hc0hlYXBCaWdJbnQoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYg
KHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50
KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmIC8vIFVTRShC
SUdJTlQzMikKKyAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQorICAgICAgICAgICAgICAg
IHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9OdW1iZXIodjIpOworICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fSB3aGlsZSAodHJ1ZSk7CiB9CiAKIC8vIEVDTUEgMTEuOS4zCi1BTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorQUxXQVlTX0lOTElORSBib29sIEpTVmFs
dWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiB2MSwgSlNDZWxsKiB2MikKIHsKLSAgICBBU1NFUlQodjEuaXNDZWxsKCkgJiYgdjIuaXND
ZWxsKCkpOwotCi0gICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgp
LT5pc1N0cmluZygpKQorICAgIGlmICh2MS0+aXNTdHJpbmcoKSAmJiB2Mi0+aXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0cmlu
Zyh2MikpOwotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAgICAg
IHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKTsKKyAg
ICBpZiAodjEtPmlzSGVhcEJpZ0ludCgpICYmIHYyLT5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjplcXVhbHMoc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MSksIHN0YXRp
Y19jYXN0PEpTQmlnSW50Kj4odjIpKTsKICAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKQEAgLTEx
NjMsMTAgKzEyMjIsMTcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWwKICAgICBpZiAodjEuaXNO
dW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9
PSB2Mi5hc051bWJlcigpOwogCi0gICAgaWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXNDZWxsKCkp
Ci0gICAgICAgIHJldHVybiB2MSA9PSB2MjsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYx
LmlzSGVhcEJpZ0ludCgpICYmIHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHYxLmFz
SGVhcEJpZ0ludCgpLT5lcXVhbHNUb0ludDMyKHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICBp
ZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4g
djIuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjEuYmlnSW50MzJBc0ludDMyKCkpOwor
I2VuZGlmCisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpCisgICAgICAgIHJl
dHVybiBzdHJpY3RFcXVhbEZvckNlbGxzKGdsb2JhbE9iamVjdCwgdjEuYXNDZWxsKCksIHYyLmFz
Q2VsbCgpKTsKIAotICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9i
amVjdCwgdjEsIHYyKTsKKyAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKIGlubGluZSBpbnQzMl90
IEpTVmFsdWU6OmFzSW50MzJGb3JBcml0aG1ldGljKCkgY29uc3QKQEAgLTExODQsMTUgKzEyNTAs
MjMgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAg
ICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCkpOwog
Ci0gICAgaWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiB0
cmlTdGF0ZSh2MSA9PSB2Mik7Ci0gICAgCi0gICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygp
ICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZ0ltcGwq
IHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgY29u
c3QgU3RyaW5nSW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgp
OwotICAgICAgICBpZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmluZykKLSAgICAgICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOwotICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbCgqdjFT
dHJpbmcsICp2MlN0cmluZykpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNIZWFw
QmlnSW50KCkgJiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJpU3RhdGUodjEu
YXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpKTsKKyAg
ICBpZiAodjEuaXNCaWdJbnQzMigpICYmIHYyLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1
cm4gdHJpU3RhdGUodjIuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjEuYmlnSW50MzJB
c0ludDMyKCkpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgp
KSB7CisgICAgICAgIGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+
aXNTdHJpbmcoKSkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBh
c1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICAgICAgY29uc3QgU3RyaW5n
SW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAg
ICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoV1RGOjplcXVhbCgq
djFTdHJpbmcsICp2MlN0cmluZykpOworICAgICAgICB9CisgICAgICAgIGlmICh2MS5hc0NlbGwo
KS0+aXNIZWFwQmlnSW50KCkgJiYgdjIuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRyaVN0YXRlKEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCks
IHYyLmFzSGVhcEJpZ0ludCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZSh2
MSA9PSB2Mik7CkBAIC0xMjA2LDYgKzEyODAsMTAgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6
OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogICAgICAgICByZXR1cm4gaXNOb3RaZXJvQW5kT3JkZXJl
ZChhc0RvdWJsZSgpKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7IC8vIGZhbHNlIGZv
ciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhc0NlbGwoKS0+cHVyZVRv
Qm9vbGVhbigpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNCaWdJbnQzMigpKQorICAg
ICAgICByZXR1cm4gYmlnSW50MzJBc0ludDMyKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlOworI2VuZGlmCiAgICAgcmV0dXJuIGlzVHJ1ZSgpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VU
cmlTdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggMTM5MGM3NjE5YWMuLjA2NTk3OWU4MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2VsbDo6
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQog
CiBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJv
bCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpCisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2Vs
bC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1
ZSwgc2xvdCk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBKU0NlbGw6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGkK
IGJvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgaWYgKGNl
bGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5pc0JpZ0ludCgpKSB7
CisgICAgaWYgKGNlbGwtPmlzU3RyaW5nKCkgfHwgY2VsbC0+aXNTeW1ib2woKSB8fCBjZWxsLT5p
c0hlYXBCaWdJbnQoKSkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjZWxsLCBzaG91
bGRUaHJvdyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKGNlbGwpLnB1dFRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaWRlbnRpZmllciksIHZhbHVlLCBzbG90
KTsKICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgSlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvUHJpbWl0
aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9QcmltaXRp
dmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAg
ICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U0JpZ0ludCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT50b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBA
IGJvb2wgSlNDZWxsOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlJiBudW1iZXIsIEpTCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU1N0cmluZyo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1i
ZXIsIHZhbHVlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0
LCBudW1iZXIsIHZhbHVlKTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmln
SW50KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMp
LT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVlKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNPYmplY3QqPih0aGlzKS0+Z2V0UHJpbWl0aXZlTnVt
YmVyKGdsb2JhbE9iamVjdCwgbnVtYmVyLCB2YWx1ZSk7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAg
ZG91YmxlIEpTQ2VsbDo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b051bWJlcihnbG9i
YWxPYmplY3QpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMp
LT50b051bWJlcihnbG9iYWxPYmplY3QpOwogfQpAQCAtMTk2LDcgKzE5Niw3IEBAIEpTT2JqZWN0
KiBKU0NlbGw6OnRvT2JqZWN0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b09iamVjdChnbG9i
YWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBTeW1ib2wqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggMmJlZjRhN2Q4ZWMuLjA2
ZWQ0ZTcwOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTAx
LDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBRdWVyeWluZyB0aGUgdHlw
ZS4KICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0
OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNv
bnN0OwogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVy
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKaW5kZXggMWM5ZDEzMjQ4YTkuLjg3OThjNWE5NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yMDQsOSArMjA0LDkgQEAgaW5saW5l
IGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJp
bmdUeXBlOwogfQogCi1pbmxpbmUgYm9vbCBKU0NlbGw6OmlzQmlnSW50KCkgY29uc3QKK2lubGlu
ZSBib29sIEpTQ2VsbDo6aXNIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90eXBl
ID09IEJpZ0ludFR5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBIZWFwQmlnSW50VHlwZTsKIH0K
IAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N5bWJvbCgpIGNvbnN0CkBAIC0zNDAsNyArMzQwLDcg
QEAgaW5saW5lIGJvb2wgSlNDZWxsOjp0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvQm9vbGVhbigpOwogICAgIHJldHVybiAhc3Ry
dWN0dXJlKGdldFZNKGdsb2JhbE9iamVjdCkpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2Jh
bE9iamVjdCk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAgaW5saW5lIFRyaVN0YXRlIEpTQ2VsbDo6
cHVyZVRvQm9vbGVhbigpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRy
dWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYg
KGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJ
bnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwog
ICAgIGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMjJjMDEyMDVjMmYuLjdlOGIy
NjBhZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTEw
MzgsNiArMTAzOCwxMCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0b0Jvb2xlYW4oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGFzRG91YmxlKCkgPiAw
LjAgfHwgYXNEb3VibGUoKSA8IDAuMDsgLy8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0NlbGwo
KSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuICEh
YmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVlKCk7IC8vIGZhbHNl
LCBudWxsLCBhbmQgdW5kZWZpbmVkIGFsbCBjb252ZXJ0IHRvIGZhbHNlLgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCA2YjNkYzk2N2M0Mi4uNzY3YjU2
ZTY0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtNDMs
NyArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpKU1R5
cGUgdHlwZSkKICAgICBDQVNFKENlbGxUeXBlKQogICAgIENBU0UoU3RyaW5nVHlwZSkKICAgICBD
QVNFKFN5bWJvbFR5cGUpCi0gICAgQ0FTRShCaWdJbnRUeXBlKQorICAgIENBU0UoSGVhcEJpZ0lu
dFR5cGUpCiAgICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQogICAgIENBU0UoQVBJVmFs
dWVXcmFwcGVyVHlwZSkKICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBiN2FhYzI1NjJjZS4uYjJlMTYyOWRlYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0yNiw4ICsyNiw4IEBA
IGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gVGhlIENlbGxUeXBlIHZhbHVlIG11c3Qg
Y29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxsLgogICAgIENlbGxUeXBlLAog
ICAgIFN0cmluZ1R5cGUsCi0gICAgQmlnSW50VHlwZSwKLSAgICBMYXN0TWF5YmVGYWxzeUNlbGxQ
cmltaXRpdmUgPSBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRUeXBlLAorICAgIExhc3RNYXli
ZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLAogICAgIFN5bWJvbFR5cGUsCiAK
ICAgICBHZXR0ZXJTZXR0ZXJUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCmluZGV4IDNjZDcxM2Q4NGYzLi44OGUzMGYyMDlkZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJU
KGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICBib29sIGlz
U2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4
KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKLSAgICB1aW50OF90IG1fdHlw
ZTsKKyAgICBKU1R5cGUgbV90eXBlOwogICAgIHVpbnQ4X3QgbV9mbGFnczsKICAgICB1aW50MTZf
dCBtX2ZsYWdzMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCmluZGV4IGM0ZWJiZWM1MDM1Li4y
N2EyMjFjMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKQEAgLTI2LDkgKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgi
CiAKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNDkwNWQ1YmFmMDcuLjc2Y2MyNTBiMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0zNiwxMSArMzYsNiBAQCBib29sIEpTVmFsdWU6OmVxdWFsU2xv
d0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
MgogICAgIHJldHVybiBlcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsK
IH0KIAotYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0gICAgcmV0dXJuIHN0cmlj
dEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwotfQotCiBORVZFUl9J
TkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7CiAgICAgLy8gZXhjZXB0aW9uIGZvciB0aGUgRGF0
ZSBleGNlcHRpb24gaW4gZGVmYXVsdFZhbHVlKCkKQEAgLTczLDIxICs2OCwyMyBAQCBORVZFUl9J
TkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVgogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3Ry
aW5nKGdsb2JhbE9iamVjdCwgcDFTdHJpbmcsIGFzU3RyaW5nKHAyKSkpOwogICAgIH0KIAotICAg
IGF1dG8gbGVmdE51bWVyaWMgPSBwMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcDIu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMp
LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgKyBXVEY6Omdl
dDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91Ymxl
IGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKyBy
aWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGlu
dDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgQ2hl
Y2tlZDxpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVz
dWx0ICs9IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc092ZXJmbG93ZWQo
KSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vsc2UKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3Qs
IHAxLCBwMiwgSlNCaWdJbnQ6OmFkZCwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKSk7CiB9CiAKIEpTVmFs
dWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYpCkBAIC0xMjgsNyArMTI1LDcgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZU9y
TnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAgICAgIHJl
dHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7
Ci0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSB8fCB0eXBlID09IFN5bWJvbFR5cGUgfHwgdHlw
ZSA9PSBCaWdJbnRUeXBlKQorICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBT
eW1ib2xUeXBlIHx8IHR5cGUgPT0gSGVhcEJpZ0ludFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CiAgICAgICAgIGlmIChhc09iamVjdCh2
KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDRiYmUyM2Mw
NzI1Li5iZDAzMWEyYWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAy
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMzksNiArMjM4LDM1
IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlCiAgICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVh
c2UoKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21w
YXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogdjEsIEpTVmFsdWUgcHJpbVZhbHVlKQoreworICAgIEFTU0VSVChwcmltVmFsdWUu
aXNQcmltaXRpdmUoKSk7CisgICAgQVNTRVJUKCFwcmltVmFsdWUuaXNCaWdJbnQoKSk7CisKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7CisgICAg
ICAgIEpTVmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFs
T2JqZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6
OlVuZGVmaW5lZCk7CisgICAgICAgIGlmICghYmlnSW50VmFsdWUpCisgICAgICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsKKworICAgICAgICBpZiAo
YmlnSW50VmFsdWUuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmNvbXBhcmUodjEsIGJpZ0ludFZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKKworICAgICAgICBBU1NF
UlQoYmlnSW50VmFsdWUuaXNCaWdJbnQzMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
IC8vIEZJWE1FOiB1c2Ugc29tZXRoaW5nIGxlc3MgaGFja3ksIGUuZy4gc29tZSBraW5kIG9mIEpT
QmlnSW50Ojpjb21wYXJlVG9JbnQzMgorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmVU
b0RvdWJsZSh2MSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihiaWdJbnRWYWx1ZS5iaWdJbnQzMkFzSW50
MzIoKSkpOworI2VuZGlmCisgICAgfQorCisgICAgZG91YmxlIG51bWJlclZhbHVlID0gcHJpbVZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZCk7CisgICAgcmV0dXJuIEpT
QmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIG51bWJlclZhbHVlKTsKK30KKwogQUxXQVlTX0lO
TElORSBib29sIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQg
Y29tcGFyaXNvblJlc3VsdCwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlIGNvbXBhcmlzb25Nb2Rl
KQogewogICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6
Okxlc3NUaGFuKQpAQCAtMjU1LDUwICsyODMsNDcgQEAgQUxXQVlTX0lOTElORSBib29sIGJpZ0lu
dENvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWwK
IAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIu
aXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6
OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7Ci0g
ICAgCi0gICAgaWYgKHYxLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNWYWx1ZSBwcmltVmFsdWUg
PSB2MjsKLSAgICAgICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBK
U0JpZ0ludCogYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2Jq
ZWN0LCBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICgh
YmlnSW50VmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludCh2
MSksIGJpZ0ludFZhbHVlKSwgY29tcGFyaXNvbk1vZGUpOwotICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBh
cmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBhc0JpZ0ludChwcmltVmFs
dWUpKSwgY29tcGFyaXNvbk1vZGUpOwotCi0gICAgICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHBy
aW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpT
QmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoYXNCaWdJbnQodjEpLCBudW1iZXJWYWx1ZSksIGNvbXBh
cmlzb25Nb2RlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHYxLmlzQmlnSW50MzIoKSAm
JiB2Mi5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpTQmln
SW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pCisgICAgICAgICAgICByZXR1cm4gdjEuYmln
SW50MzJBc0ludDMyKCkgPCB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGNv
bXBhcmlzb25Nb2RlID09IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFs
KTsKKyAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDw9IHYyLmJpZ0ludDMyQXNJ
bnQzMigpOwogICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHYxOwotICAgIGlm
IChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBKU0JpZ0ludCogYmlnSW50VmFsdWUg
PSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBhc1N0cmluZyhwcmltVmFs
dWUpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIHYxSGVh
cEJpZ0ludCA9IG51bGxwdHI7CisgICAgSlNCaWdJbnQqIHYySGVhcEJpZ0ludCA9IG51bGxwdHI7
CisgICAgLy8gRklYTUU6IGhhdmUgc29tZSBmYXN0LWlzaCBwYXRoIGZvciBhIGNvbXBhcmlzb24g
YmV0d2VlbiBhIHNtYWxsIGFuZCBhIGxhcmdlIGJpZy1pbnQKKyAgICBpZiAodjEuaXNIZWFwQmln
SW50KCkpCisgICAgICAgIHYxSGVhcEJpZ0ludCA9IHYxLmFzSGVhcEJpZ0ludCgpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2MS5pc0JpZ0ludDMyKCkpCisgICAgICAgIHYxSGVh
cEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2MS5iaWdJbnQzMkFzSW50MzIoKSk7
CisjZW5kaWYKKworICAgIGlmICh2Mi5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgdjJIZWFwQmln
SW50ID0gdjIuYXNIZWFwQmlnSW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYg
KHYyLmlzQmlnSW50MzIoKSkKKyAgICAgICAgdjJIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0
ZUZyb20odm0sIHYyLmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorCisgICAgaWYgKHYxSGVh
cEJpZ0ludCAmJiB2MkhlYXBCaWdJbnQpCisgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KEpTQmlnSW50Ojpjb21wYXJlKHYxSGVhcEJpZ0ludCwgdjJIZWFwQmlnSW50KSwgY29tcGFy
aXNvbk1vZGUpOworCisgICAgaWYgKHYxSGVhcEJpZ0ludCkgeworICAgICAgICBhdXRvIGNvbXBh
cmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IHYxSGVhcEJpZ0ludCwgdjIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7Ci0gICAgICAgIGlmICghYmlnSW50VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgcmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBh
cmUoYmlnSW50VmFsdWUsIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKKyAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoY29tcGFyaXNvblJlc3VsdCwgY29tcGFyaXNvbk1v
ZGUpOwogICAgIH0KLSAgICAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAg
IHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHBy
aW1WYWx1ZSksIGFzQmlnSW50KHYyKSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAKLSAgICBkb3Vi
bGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKKyAgICBhdXRvIGNvbXBhcmlzb25S
ZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHYySGVh
cEJpZ0ludCwgdjEpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICAvLyBIZXJlIHdlIGNoZWNrIGludmVydGVkIGJlY2F1c2UgQmlnSW50IGlzIHRoZSB2MgotICAg
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQgPSBKU0JpZ0ludDo6
Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYyKSwgbnVtYmVyVmFsdWUpOwogICAgIGlmIChjb21w
YXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQogICAgICAg
ICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6
R3JlYXRlclRoYW47Ci0KICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gfHwgY29tcGFyaXNvblJlc3VsdCA9PSBKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdDo6RXF1YWw7CiB9CiAKQEAgLTM1Nyw3ICszODIsNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wganNMZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgewor
ICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAx
LmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6
OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikpOwogCkBAIC00MDcsNyArNDMyLDcgQEAgQUxXQVlT
X0lOTElORSBib29sIGpzTGVzc0VxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogCi0gICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CisgICAg
aWYgKHdhc05vdFN0cmluZzEgfHwgd2FzTm90U3RyaW5nMikgewogICAgICAgICBpZiAocDEuaXNC
aWdJbnQoKSB8fCBwMi5pc0JpZ0ludCgpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiaWdJbnRDb21wYXJlKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBKU0JpZ0ludDo6Q29t
cGFyaXNvbk1vZGU6Okxlc3NUaGFuT3JFcXVhbCkpOwogCkBAIC00NTIsNzEgKzQ3NywzNDkgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIKICAgICByZXR1cm4ganNBZGROb25OdW1iZXIoZ2xvYmFs
T2JqZWN0LCB2MSwgdjIpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdWIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKKy8vIEJpZ0lu
dDMyT3AgZXhwZWN0cyBpdHMgb3BlcmFuZHMgdW5ib3hlZCwgYW5kIHJldHVybnMgaXRzIHJlc3Vs
dCB1bmJveGVkIGFzIHdlbGwKK3RlbXBsYXRlPHR5cGVuYW1lIEhlYXBCaWdJbnRPcGVyYXRpb24s
IHR5cGVuYW1lIERvdWJsZU9wZXJhdGlvbiwgdHlwZW5hbWUgQmlnSW50MzJPcD4KK0FMV0FZU19J
TkxJTkUgSlNWYWx1ZSBhcml0aG1ldGljQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGhlYXBC
aWdJbnRPcCwgRG91YmxlT3BlcmF0aW9uJiYgZG91YmxlT3AsIEJpZ0ludDMyT3AmJiBiaWdJbnQz
Mk9wLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBsZWZ0TnVtZXJpYyA9
IHYxLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgbGVmdE51bWVyaWMgPSB2
MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVj
dCk7CisgICAgSlNWYWx1ZSByaWdodE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVj
dCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7CisgICAgaWYgKGxlZnROdW1lcmljLmlzTnVtYmVyKCkgJiYgcmlnaHRO
dW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcihkb3VibGVPcChsZWZ0
TnVtZXJpYy5hc051bWJlcigpLCByaWdodE51bWVyaWMuYXNOdW1iZXIoKSkpOworCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aWYgKHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVl
IHJlc3VsdCA9IGJpZ0ludDMyT3AobGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBK
U0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdo
dEhlYXBCaWdJbnQpKTsKICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmpl
Y3QsIGxlZnRIZWFwQmlnSW50LCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkpIHsKKyAgICAg
ICAgaWYgKHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50
KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgaGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCks
IHJpZ2h0SGVhcEJpZ0ludCkpOworICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0TnVtZXJpYy5pc0hl
YXBCaWdJbnQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaGVhcEJp
Z0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJpZ2h0TnVt
ZXJpYy5hc0hlYXBCaWdJbnQoKSkpOwogICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJp
Z0ludDMyT3ApOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSAmJiByaWdodE51
bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
aGVhcEJpZ0ludE9wKGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCksIHJp
Z2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworI2VuZGlmCisKKyAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKK30KIAotICAgIHJl
dHVybiBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRv
dWJsZT4ocmlnaHROdW1lcmljKSk7CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdWIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBh
dXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7
CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMy
T3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJl
c3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAtPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElL
RUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVu
c2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6c3ViLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOwog
fQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10g
KGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBs
ZWZ0ICogcmlnaHQ7CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCBs
ZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBKU1ZhbHVlIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHJlc3VsdCA9IGxlZnQ7CisgICAg
ICAgIHJlc3VsdCAqPSByaWdodDsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJl
dHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50Ojpt
dWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OworICAgIH07
CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAoIXJpZ2h0KQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJB
TShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGht
ZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3Vi
bGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1haW5kZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sK
KyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRv
dWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBh
dXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAg
ICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3AsIGJpZ0lu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVy
LiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91Ymxl
T3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBi
aWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAv
LyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhl
IGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAvLyBTbyBk
b24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRoYXQgY2Fz
ZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRo
bWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0
ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIo
b3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdW
YWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVz
IG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAg
ICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0K
KyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBv
cGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJl
cihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5l
d1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0lu
dDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGlu
ZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgor
ICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAg
fQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3Qs
IG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVtZXJpYy5iaWdJbnQz
MkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBC
aWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6Yml0d2lz
ZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBzaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBib29sIGlzTGVmdCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51bWVyaWMgPSB2MS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByaWdodE51bWVyaWMgPSB2Mi50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0
TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkgeworICAgICAgICBp
bnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAgICAgICAgaW50MzJf
dCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOworICAgICAgICBpbnQz
Ml90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQzMikgOiAobGVmdElu
dDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKKyAg
ICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIo
KSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgbGVmdElu
dDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGludDMyX3Qgcmln
aHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHJp
Z2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0OworICAgICAgICAg
ICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQgcmVxdWlyZWQgYmVj
YXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEgc2hpZnQgd2hlcmUg
dGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgYml0LXdpZHRoIG9m
IHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+IHN0ZDo6bWluKHJp
Z2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBsZWZ0IHNoaWZ0
IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0aW5nIEhlYXBCaWdJ
bnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gZG8gc29tZXRo
aW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQgZGV0ZWN0aW5nIHNv
bWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAgICAgIEpTQmlnSW50
KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRJbnQzMik7
CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmln
aHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJ
bnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRI
ZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJpYy5pc0Jp
Z0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAgICBhdXRvIGVycm9y
TWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAg
ICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBjYXNlIGZvciBsZWZ0IGlzIEhl
YXBCaWdJbnQgYW5kIHJpZ2h0IGlzIEJpZ0ludDMyLCBpdCBzZWVtcyBmYWlybHkgbGlrZWx5IHRv
IG9jY3VyIGZyZXF1ZW50bHkuCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0
SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmlj
LmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmln
SW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAg
ICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsK
KyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0lu
dCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0Jp
Z0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdo
dEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTFNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAg
Ym9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxPYmplY3QsIHYxLCB2
MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91Ymxl
PihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFsdWUgKiByaWdodFZh
bHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJvb2wgaXNMZWZ0ID0g
ZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOwog
fQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBI
ZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJ
bnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmlnSW50
T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGxl
ZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCksIHJpZ2h0TnVtZXJp
Yy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMu
aXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIC8vIEZJ
WE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQsIGFuZCBmb3IgSGVh
cEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVzZSBjb3VsZCBiZSBt
YWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBzbWFsbCBiaWctaW50
IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8gQnV0IGl0IGlzIHF1
aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2UgYSBzaWduIGJpdCB3
aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCisjZW5kaWYK
KworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzQmln
SW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKU0JpZ0ludCogbGVm
dEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbHNlCisg
ICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7
CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRPcChn
bG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKIH0KIAotI2Rl
ZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9IFtdIChp
bnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4g
bGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFp
cnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBhbmQgcmUtYm94IHRo
ZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAg
cmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJp
dHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5lIGJvb2wgaXNTY3Jp
YmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lz
ZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
CiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2Rl
KGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgYXV0byBpbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAg
IHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHks
IGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJvciIgYW5kIHJl
LWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVl
LgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmln
SW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1pbmxpbmUgdm9pZCBz
Y3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRv
IGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAgICAgc3RhdGljX2Nh
c3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nh
c3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0
dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9y
IHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhvciIgYW5kIHJlLWJv
eCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLCBh
bmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhlIGVuZCB0byByZXN0
b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEs
IHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOwogfQogCiBB
TFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJK
U0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxp
bmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVE
IHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNkZWZpbmUgU0NSSUJCTEVf
V09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKworaW5saW5lIGJvb2wgaXNT
Y3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJC
TEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qg
c2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVu
c3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAgICAgc3RhdGljX2Nhc3Q8
RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8
SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDVmYTcwMTNjYjdm
Li5mMTZjMDJhNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaApAQCAtMjc5LDcgKzI3OSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZSkK
ICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7CiAgICAgCi0g
ICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKKyAgICBp
ZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAKICAgICBBU1NFUlQo
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBmMGQzNGJmYjAxMi4uYmRiY2FmOTVmNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAgIHNlbnRpbmVsTWFwQnVj
a2V0KCk7CiAgICAgICAgIHNlbnRpbmVsU2V0QnVja2V0KCk7CiAgICAgfQotICAgIGJpZ0ludENv
bnN0YW50T25lLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20oKnRoaXMsIDEpKTsKKyAg
ICBoZWFwQmlnSW50Q29uc3RhbnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6Y3JlYXRlRnJvbSgq
dGhpcywgMSkpOwogCiAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21TdHJpbmdU
YWJsZShleGlzdGluZ0VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IGY3YjYxNmEwMjc4Li5jNzIyYzEwNjQ1OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC03MjQsNyArNzI0LDcgQEAgcHVibGljOgogICAgIEF0b21T
dHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9tU3RyaW5n
VGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0
dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAotICAgIFN0cm9uZzxKU0JpZ0ludD4gYmlnSW50Q29u
c3RhbnRPbmU7CisgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29uc3RhbnRPbmU7CiAK
ICAgICBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGIwNmJlYzI5Y2QuLjJjMDA5YjZjZmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yMjA1
LDcgKzIyMDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNhbGxXaXRoU3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIHVpbnQ4X3QqIHZtU3Rh
Y2tFbmQgPSB2bVN0YWNrU3RhcnQgLSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2U7CiAg
ICAgcHRyZGlmZl90IHNpemVEaWZmID0gdm1TdGFja0VuZCAtIGVuZDsKICAgICBSRUxFQVNFX0FT
U0VSVChzaXplRGlmZiA+PSAwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplRGlmZiA8IFVJTlRf
TUFYKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZURpZmYp
IDwgVUlOVF9NQVgpOwogCiAgICAgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tVc2FnZSgpID0g
b3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlICsgc2l6ZURpZmY7CiAgICAgaGVscGVyLnVw
ZGF0ZVZNU3RhY2tMaW1pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTM2N2U3NWE2NjkuLmQ4NzlmNmQzYzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTA2ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGlu
IEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMyIikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFVTRShCSUdJTlQzMikgZmxhZy4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZS5oOgorCiAyMDIwLTA0LTE2ICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBWZWN0b3JDb2NvYSBj
cmVhdGVOU0FycmF5IG92ZXJsb2FkcyBhbmQgYWRkIGRvY3VtZW50YXRpb24gZm9yIGNyZWF0ZU5T
QXJyYXkgdGFraW5nIGEgbWFwIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCAzNjk2NDdl
OGI5YS4uZDZlZjhkNGUwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNl
LmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAtMTM5LDYgKzEzOSwxMCBA
QAogI2VuZGlmCiAjZW5kaWYgLyogIWRlZmluZWQoVVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQo
VVNFX0pTVkFMVUUzMl82NCkgKi8KIAorI2lmIFVTRShKU1ZBTFVFNjQpCisjZGVmaW5lIFVTRV9C
SUdJTlQzMiAxCisjZW5kaWYKKwogLyogRklYTUU6IFRoaXMgbmFtZSBzaG91bGQgYmUgbW9yZSBz
cGVjaWZpYyBpZiBpdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJhbWUqICovCiAvKiBVc2Ug
X19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KICNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBjNGUwOGYwZmY0Zi4uYjA1Nzk5M2M5N2YgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzAyLDYgKzcwMiwxNCBAQCBkZWYgcnVu
QmlnSW50RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigiYmln
LWludC1lbmFibGVkIiwgIi0tdXNlQmlnSW50PXRydWUiICwgKihGVExfT1BUSU9OUyArIG9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKIAorZGVmIHJ1bkJpZ0ludEVuYWJsZWROb0pJ
VCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiYmlnLWludC1lbmFibGVk
LW5vaml0IiwgIi0tdXNlQmlnSW50PXRydWUiLCAiLS11c2VKSVQ9ZmFsc2UiLCAqb3B0aW9uYWxU
ZXN0U3BlY2lmaWNPcHRpb25zKQorZW5kCisKK2RlZiBydW5CaWdJbnRFbmFibGVkQmFzZWxpbmUo
Km9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZC1i
YXNlbGluZSIsICItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZHSklUPTAiLCAqb3B0aW9uYWxU
ZXN0U3BlY2lmaWNPcHRpb25zKQorZW5kCisKIGRlZiBydW5GVExOb0NKSVQoKm9wdGlvbmFsVGVz
dFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oIm1pc2MtZnRsLW5vLWNqaXQiLCAqKEZUTF9PUFRJ
T05TICsgTk9fQ0pJVF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKIGVu
ZAo=
</data>
<flag name="review"
          id="412136"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396841</attachid>
            <date>2020-04-18 00:34:05 -0700</date>
            <delta_ts>2020-04-18 10:15:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>410637</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZDdjODI1NzBlMDUuLjlhYjVjOTk4YTAwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSSBp
bXByb3ZlZCBzZXZlcmFsIG9mIHRoZSB0ZXN0cyB0byBnaXZlIG1vcmUgaW5mb3JtYXRpdmUgZXJy
b3IgbWVzc2FnZXMgaW4gdGhlIHByb2Nlc3Mgb2YgZml4aW5nIHRoZW0uCisKKyAgICAgICAgTW9y
ZSBpbnRlcmVzdGluZ2x5IEkgaGFkIHRvIG1vZGlmeSAibWlzc2luZy1leGNlcHRpb24tY2hlY2st
aW4tc3RyaW5nLWNvbXBhcmUiIGJlY2F1c2UgaXQgcmVsaWVkIG9uICJzMSA9PSBzMSIgcmVzb2x2
aW5nIHJvcGVzLCBhbmQgd2Ugbm93IGp1c3QgcmV0dXJuIHRydWUuCisKKyAgICAgICAgKiBzdHJl
c3MvYmlnLWludC1kaXZpc2lvbi5qczoKKyAgICAgICAgKHRlc3REaXYpOgorICAgICAgICAqIHN0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qczoKKyAgICAgICAgKGFzc2Vy
dC5zYW1lVmFsdWUpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzOgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzOgor
ICAgICAgICAqIHN0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanM6CisgICAgICAg
ICh0ZXN0UmlnaHRTaGlmdCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92
ZW4tdHlwZS5qczoKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2NvbXBhcmUt
c3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanM6CisgICAgICAgICh0ZXN0QWxsVHlwZXNDYWxs
KToKKyAgICAgICAgKiBzdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanM6CisgICAg
ICAgICogc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpz
OgorCiAyMDIwLTA0LTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IGlzIGJyb2tlbiBvbiBhcm02NGUKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWRpdmlzaW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zZTUxMGI5ZDg5NyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCkBAIC0xLDQgKzEsNSBAQAogLy9AIHJ1bkJpZ0ludEVu
YWJsZWQKKy8vQCBydW5CaWdJbnRFbmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3
IFJvYmluIFRlbXBsZXRvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBn
b3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KQEAg
LTE0LDcgKzE1LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNz
ZXJ0LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkg
KyAiIGJ1dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIx
MG4sIDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgx
MmIxY2JhNDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13
cmFwcGVkLXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13
cmFwcGVkLXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5w
dXQgIT09IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOwor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQg
KyAiICE9IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1
bkJpZ0ludEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlLCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJCYWQhIik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24g
Zm9yICIgKyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNh
bE5vdChhKSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDA7IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBh
c3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiks
IHRydWUpOwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQo
bG9naWNhbE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiks
IGZhbHNlLCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAg
YXNzZXJ0KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bW9kLWppdC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LW1vZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGlu
Zyk7CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmln
SW50TW9kRm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgi
ICsgMTAgKyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShy
LCAtMTAsICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0K
IAogbGV0IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUo
ciwgLTEwbiwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQu
c2FtZVZhbHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIp
ID0gIiArIHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxp
Y2F0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5qcwppbmRl
eCAzZWNkNjM2ZDdmOC4uN2NlNWFjZmZjZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtbXVsdGlwbGljYXRpb24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0
aXBsaWNhdGlvbi5qcwpAQCAtMSwxOCArMSwxOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKy8v
QCBydW5CaWdJbnRFbmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IFJvYmluIFRl
bXBsZXRvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBi
eSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIAotYXNzZXJ0ID0g
ewotICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewot
ICAgIGlmIChpbnB1dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKLSAgICB9Ci19OworZnVuY3Rpb24gdGVzdE9uZU11bCh4LCB5LCB6KSB7CisgICAgbGV0
IHJlc3VsdCA9IHggKiB5OworICAgIGlmIChyZXN1bHQgIT09IHopCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQ29tcHV0aW5nICIgKyB4ICsgIiAqICIgKyB5ICsgIiByZXN1bHRlZCBpbiAiICsg
cmVzdWx0ICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgeik7Cit9CiAKIGZ1bmN0aW9u
IHRlc3RNdWwoeCwgeSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAqIHksIHosIHggKyAi
ICogIiArIHkgKyAiID0gIiArIHopOwotICAgIGFzc2VydC5zYW1lVmFsdWUoeSAqIHgsIHosIHkg
KyAiICogIiArIHggKyAiID0gIiArIHopOworICAgIHRlc3RPbmVNdWwoeCwgeSwgeik7CisgICAg
dGVzdE9uZU11bCh5LCB4LCB6KTsKIH0KIAogdGVzdE11bCgweEZFRENCQTk4NzY1NDMyMTBuLCAw
eEZFRENCQTk4NzY1NDMyMTBuLCAweEZEQkFDMDk3QzhEQzVBQ0NERUVDNkNEN0E0NEE0MTAwbik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKaW5kZXgg
NGU1OGNhNjA3NDAuLmQwMmFhY2I1MWRjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1y
aWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0xLDEwNCArMSw2MyBAQAogLy9AIHJ1bkJpZ0ludEVu
YWJsZWQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IEpvc2ggV29sZmUuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUuIEFsbCByaWdodHMgcmVzZXJ2ZWQK
IC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0
U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+
IHJpZ2h0OworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0
ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9
IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4s
IC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2
biwgMG4sIDB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7Cisg
ICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAw
MDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4
MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC01biwgLTJuLCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4p
OworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
LTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoLTFuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAt
MHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZu
LCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAw
MDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAxMjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAg
IHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
biwgMTI5biwgLTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4s
ICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIx
MDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIx
MDFuID4+IC0ybiwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNz
ZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09
PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBi
MTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAx
biwgIjBiMTAxbiA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNu
LCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEy
OG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEy
OG4sIDBuLCAiMG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+
IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZu
ID4+IC0xMjluID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAi
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
MTI3biwgMHgyNDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4s
Ci0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09
PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAt
MHgxNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0z
biA9PT0gLTB4MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+
IDFuID09PSAtM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4g
Mm4gPT09IC0ybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAz
biA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4s
IC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhu
LCAtMW4sICItMW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4g
Pj4gMG4sIC0weDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgy
NDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09
PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoLTB4MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAi
LTB4MjQ2biA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAtMzJuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09
PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMy
biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAt
MHgyNDY4YWRuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDEyN24gPT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAot
ICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09
IC0weDEyMzQ1N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7
Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRl
eCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRmZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMKQEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgi
LS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlv
biBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
YXNzZXJ0aW9uIik7CitmdW5jdGlvbiBhc3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0
OiAiICsgaW5wdXQpOwogfQogCiBmdW5jdGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBm
dW5jdGlvbiBmb28obykgewogbm9JbmxpbmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZv
bygzbiksICIzIik7CiB9Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVt
YmVyLWFuZC1vdGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhl
ci5qcwppbmRleCA4NTQ2YmYzN2VhMS4uODI1ZTg1ZDZiNjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9j
b21wYXJlLW51bWJlci1hbmQtb3RoZXIuanMKQEAgLTU5LDE3ICs1OSwxNyBAQCBmb3IgKGxldCBv
cGVyYXRvciBvZiBvcGVyYXRvcnMpIHsKICAgICAgICAgICAgIG5vSW5saW5lKHRlc3RNb25vbW9y
cGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KTsKIAogICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21v
cnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0
fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgk
e2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwg
JHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0
YW50JHt0ZXN0Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAg
ICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0o
JHtyaWdodH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cg
IkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmln
aHR9KSI7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQk
e3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0pICE9ICR7bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAg
ICAgIGlmICh0ZXN0TW9ub21vcnBoaWNSaWdodENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xl
ZnR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWls
ZWQgdGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSI7
CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RQb2x5bW9ycGhpYygke2xlZnR9LCAke3JpZ2h0fSkg
IT09ICR7bGxpbnRSZXN1bHR9KQotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHBv
bHltb3JwaGljVmVyc2lvbigke2xlZnR9KSI7CisgICAgICAgICAgICAgICAgICAgIHRocm93ICJG
YWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0sICR7b3BlcmF0b3J9LCAke3JpZ2h0fSwg
ZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50UmVzdWx0fSkiOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYCk7CiAgICAgICAgICAgICArK3Rlc3RDYXNlSW5kZXg7CiAgICAgICAgIH0KICAgICB9
Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKaW5kZXggYWYyMjgzZjhl
ZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmlj
dC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3Ry
aWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTgzLDcgKzgzLDggQEAgZnVuY3Rpb24gdGVz
dEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiAr
CiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0
RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRD
YXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3Ry
aWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVmdENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNb
cmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkzLDcgKzk0LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVz
Q2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAg
ICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRw
dXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXgg
KyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5n
LXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVx
dWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28oYXJy
YXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5Lmxl
bmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3Rl
ZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hl
Y2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlv
bi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4Mzg3
ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWlu
LXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9u
LWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEgPSAo
LTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIgPSAo
LTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAgICBz
MSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBzMjsK
IH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGJhNjIwMTkwMjMyLi4yYzdhN2RlNjllNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTg2LDYgKzk4Niw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmgKICAgICBydW50aW1lL1Njb3BlT2Zmc2V0LmgKICAgICBydW50aW1lL1Njb3BlZEFyZ3Vt
ZW50c1RhYmxlLmgKKyAgICBydW50aW1lL1NjcmliYmxlLmgKICAgICBydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKICAgICBydW50
aW1lL1NjcmlwdEZldGNoZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggY2ViNWRjYTA1
NDMuLmU1ZjljNmI2ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODcg
QEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBz
bWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1
enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRvIG9wdGltaXplIHRoZSBwZXJm
b3JtYW5jZSBvZiBCaWdJbnRzLCB3aGVuIHRoZXkgYXJlIHNtYWxsICgzMiBiaXQgb3IgbGVzcyku
CisgICAgICAgIEl0IHdvcmtzIGJ5IGlubGluaW5nIHRoZW0gaW50byBKU1ZhbHVlIG9uIDY0LWJp
dCBwbGF0Zm9ybXMsIGF2b2lkaW5nIHRoZSBhbGxvY2F0aW9uIG9mIGEgSlNCaWdJbnQuCisgICAg
ICAgIFRoZSBiaXQgcGF0dGVybiB3ZSB1c2UgaXMgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAg
ICBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGlu
Z3M6CisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBEb3VibGUgb3IgSW50
ZWdlciB0aGFua3MgdG8gdGhlIHRvcCBiaXRzCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1
c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNl
dCB0byB0cnVlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVy
IHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIHRydWUvZmFsc2UgYmVjYXVzZSBiaXQgMiBpcyBz
ZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5k
ZWZpbmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKKworICAgICAgICBUaGlzIGVudGly
ZSBjaGFuZ2UgaXMgZ2F0ZWQgYnkgVVNFKEJJR0lOVDMyKSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8g
ZGlzYWJsZSBpZiBpdCB0dXJucyBvdXQgdG8gaGF2ZSBidWdzLgorICAgICAgICBJdCBzaG91bGQg
YWxzbyBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvIHZlcmlmeSBpZiBhIGdpdmVuIGJ1ZyBjb21lcyBm
cm9tIGl0IG9yIGZyb20gc29tZXRoaW5nIGVsc2UuCisKKyAgICAgICAgTm90ZSB0aGF0IGluIHRo
aXMgcGF0Y2ggd2UgY3JlYXRlIEJpZ0ludDMycyB3aGVuIHBhcnNpbmcgc21hbGwgQmlnSW50IGNv
bnN0YW50cywgYW5kIG1vc3Qgb3BlcmF0aW9ucyAoZS5nLiBBZGQgb3IgQml0T3IpIHByb2R1Y2Ug
YSBCaWdJbnQzMiBpZiBib3RoIG9mIHRoZWlyIG9wZXJhbmRzIGFyZSBCaWdJbnQzMiwKKyAgICAg
ICAgYnV0IHdlIGRvbid0IHByb2R1Y2UgYSBCaWdJbnQzMiBmcm9tIGZvciBleGFtcGxlIHRoZSBz
dWJzdHJhY3Rpb24vZGl2aXNpb24gb2YgdHdvIGxhcmdlIGhlYXAtYWxsb2NhdGVkIEpTQmlnSW50
cywgZXZlbiBpZiB0aGUgcmVzdWx0IGZpdHMgaW4gMzItYml0cy4KKyAgICAgICAgQXMgYSByZXN1
bHQsIHNtYWxsIEJpZ0ludHMgY2FuIG5vdyBlaXRoZXIgYmUgaGVhcC1hbGxvY2F0ZWQgb3IgaW5s
aW5lZCBpbiB0aGUgSlNWYWx1ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIGEgc2ln
bmlmaWNhbnQgcmVmYWN0b3Igb2YgdmFyaW91cyBzbG93IHBhdGhzLCB3aGljaCBhcmUgbm93IGdy
b3VwZWQgdG9nZXRoZXIgaW4gT3BlcmF0aW9ucy5oCisgICAgICAgIEJlY2F1c2UgdGhpcyBpbmNy
ZWFzZWQgdGhlIHNpemUgb2YgT3BlcmF0aW9ucy5oIHNpZ25pZmljYW50bHksIEkgc3BsaXQgdGhl
IHBhcnRzIG9mIE9wZXJhdGlvbnMuaCB3aGljaCBhcmUgb25seSB1c2VkIGJ5IHRoZSBHQyBpbnRv
IFNjcmliYmxlLmgsIHRvIGF2b2lkIGJsb2F0aW5nIGNvbXBpbGUgdGltZXMuCisKKyAgICAgICAg
SW4gdGhlIERGRyBhbmQgRlRMIHdlIG5vdyBoYXZlIDMgVXNlS2luZHMgZm9yIEJpZ0ludHM6IEhl
YXBCaWdJbnRVc2UsIEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UuCisgICAgICAgIFRoZSBs
YXR0ZXIgaXMgdXNlZnVsIHdoZW4gd2Uga25vdyB0aGF0IHdlIGFyZSByZWNlaXZpbmcgQmlnSW50
cywgYnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBvZiBoZWFwLWFsbG9jYXRlZCBhbmQg
c21hbGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGEgbmFp
dmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWduaWZpY2FudGx5IHJlZ3Jlc3NlcyB0
aGUgcGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMgdmFyaWFudHMpLCBhcyBpdCBpcyBu
byBsb25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24tY2VsbCBjYW5ub3QgYmUgZXF1YWwu
CisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29kZSB3YXMganVtcGluZyB0byBhIHNs
b3cgcGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBk
b3VibGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFyZSBjZWxscworICAgICAgICBOb3cs
IGl0IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBp
cyBhIGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBwZXJmb3JtYW5jZSBjb3N0LCBJIHNp
Z25pZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20KKyAgICAgICAgICBpZiAobGVmdCBp
cyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0
KQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7
CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQgaXMgSW50MzIpIHsKKyAgICAgICAg
ICAgIGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAg
ICAgICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJbnQzMikgeworICAgICAgICAgICAg
aWYgKHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAg
ICAgIH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodAorICAgICAgICBUbyB0aGUgZm9s
bG93aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUp
CisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBpZiAobGVmdCBpcyBDZWxsIHx8
IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBJIGJlbGlldmUgdGhpcyB0byBiZSBmYXN0ZXIgdGhhbiBqdXN0
IHJlcGxhY2luZyAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGJ5IGFuIHx8LCBiZWNh
dXNlIEkgZm91bmQgYSBiaXQtdHJpY2sgdG8gY2hlY2sgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSkgd2hpY2ggc2hvdWxkIGhlbHAgcmVkdWNlIHRoZSBwcmVzc3VyZSBvbiB0aGUg
YnJhbmNoIHByZWRpY3Rvci4KKyAgICAgICAgRWFybHkgSmV0U3RyZWFtMiB0ZXN0cyBhcHBlYXIg
dG8gY29uZmlybSB0aGF0IHRoaXMgcGF0Y2ggaXMgcm91Z2hseSBuZXV0cmFsIHdoaWxlIGl0IHdh
cyBhIDAuNSUgcmVncmVzc2lvbiBiZWZvcmUgSSB1c2VkIHRoaXMgdHJpY2ssIGJ1dCB0aGUgbnVt
YmVycyBhcmUgc3RpbGwgdG9vIG5vaXN5LCBJIHBsYW4gdG8gZG8gbW9yZSBtZWFzdXJlbWVudHMg
YmVmb3JlIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICBJIGRvbid0IHlldCBoYXZlIHBl
cmZvcm1hbmNlIG51bWJlcnMgZm9yIHRoaXMgcGF0Y2ggb24gYSBCaWdJbnQgYmVuY2htYXJrLCBJ
IHdpbGwgZ2V0IHN1Y2ggbnVtYmVycyBiZWZvcmUgdHJ5aW5nIHRvIGxhbmQgaXQsIGJ1dCBJJ2Qg
bGlrZSBzb21lIHJldmlldyBpbiB0aGUgbWVhbnRpbWUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9YODZB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZv
cm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXI6Om1lbW9yeU1vZFJNKToKKyAg
ICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRI
ZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlw
ZT46OmVtaXRTZXRIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
PEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgorICAgICAg
ICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVOb25JbnQzMik6CisgICAgICAgIChK
U0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUJpZ0ludCk6CisgICAgICAgIChKU0M6Ok9i
c2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpPYnNl
cnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6c2V0T2JzZXJ2ZWRIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpzZXRPYnNlcnZlZEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpvYnNl
cnZlUmVzdWx0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
ICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OnNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
RnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVZhbHVlKToKKyAg
ICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMpOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQmlnSW50MzJTcGVjdWxh
dGlvbik6CisgICAgICAgIChKU0M6OmlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRF
cXVhbGl0eU9wSW1wbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJ
bnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6b2JzZXJ2ZVVzZUtpbmRPbk5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZhbHVlKToKKyAgICAg
ICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgICogZGZn
L0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6
c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
Qml0d2lzZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlw
ZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5jT3JEZWMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVEaXYpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVNb2QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVQb3cpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQ6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp+U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OmVkZ2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6bm9kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpncHIp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6dXNlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
dHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHVXNl
S2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9E
RkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAg
IChKU0M6OkRGRzo6aXNDZWxsKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9u
VmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OmluaXRpYWxpemVD
b25zdGFudHMpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuaDoKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlQml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVZhbHVlQml0QW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0T3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRYb3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRSU2hpZnQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRSU2hpZnQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRMU2hpZnQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRMU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQml0VVJTaGlm
dCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb051bWVy
aWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFy
ZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBh
cmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVJc0JpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRC
aW5hcnlTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dEJpbmFyeUJpdE9wU25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpidWls
ZFR5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0hlYXBC
aWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dCaWdJbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQmlnSW50MzIpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEJpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEJpZ0ludDMyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RBbnlCaWdJbnQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBCaWdJbnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0hlYXBCaWdJbnQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVIZWFwQmlnSW50
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlSGVhcEJp
Z0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICog
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90
QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAg
ICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmSGVhcEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveEJpZ0ludDMyKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZW1pdFR5cGVPZik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9M
TEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJB
cmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6dG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpjYWxsQmlnSW50Q29u
c3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6QmlnSW50T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlz
QmlnSW50VmFsdWUpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFy
eUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpwYXJzZUlu
dCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjppbmMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGVjKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmJpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKEpTQzo6YXNIZWFwQmlnSW50KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJl
clNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9PYmplY3RTbG93Q2Fz
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojphc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzSGVhcEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpiaWdJbnQzMkFzSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc1By
aW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJl
cik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RF
cXVhbEZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWwpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRC
eUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2ZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9PYmpl
Y3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzSGVhcEJpZ0lu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Cb29sZWFuIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvQm9vbGVhbiBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHA6
CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNBZGRT
bG93Q2FzZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAg
KiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJpZ0ludFRvT3Ro
ZXJQcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpiaWdJbnRDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6anNMZXNzKToKKyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAoSlNDOjphcml0
aG1ldGljQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc1N1Yik6CisgICAgICAgIChKU0M6Ompz
TXVsKToKKyAgICAgICAgKEpTQzo6anNEaXYpOgorICAgICAgICAoSlNDOjpqc1JlbWFpbmRlcik6
CisgICAgICAgIChKU0M6OmpzUG93KToKKyAgICAgICAgKEpTQzo6anNJbmMpOgorICAgICAgICAo
SlNDOjpqc0RlYyk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU5vdCk6CisgICAgICAgIChKU0M6
OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNMU2hpZnQpOgorICAgICAgICAoSlNDOjpqc1JTaGlm
dCk6CisgICAgICAgIChKU0M6OmJpdHdpc2VCaW5hcnlPcCk6CisgICAgICAgIChKU0M6OmpzQml0
d2lzZUFuZCk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU9yKToKKyAgICAgICAgKEpTQzo6anNC
aXR3aXNlWG9yKToKKyAgICAgICAgKiBydW50aW1lL1NjcmliYmxlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oLgorICAgICAgICAoSlND
OjpzY3JpYmJsZUZyZWVDZWxscyk6CisgICAgICAgIChKU0M6OmlzU2NyaWJibGVkVmFsdWUpOgor
ICAgICAgICAoSlNDOjpzY3JpYmJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgor
CiAyMDIwLTA0LTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2MDI3OS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOGM4YjQ2OTY0NWYuLmJiYjA4NjU4MDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODY3LDYgKzg2Nyw3IEBACiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2
ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJGMzZGNzI0NDA5
NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdp
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMz
MTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNj
cmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVDNzA1MjI1NTVG
NkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTMzQTkyMEJEMjNE
QTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZEMDAwRUJBRjAg
LyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAvKiBCM1ZhbHVl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87IH07CkBAIC0z
NTE3LDYgKzM1MTgsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJl
SURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThC
MzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjEx
QzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3
NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25U
cmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNz
aW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRy
ZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NEEyMjRENzlFRjAw
QzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgcGF0aCA9IGIz
L0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0VsaW1pbmF0
ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU3Nyw2ICs3NTc5LDcgQEAKIAkJCQkwRkUwNTAyMDFB
QTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywKIAkJCQkwRkUwNTAy
MTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJCTBGRTA1MDIyMUFB
OTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTExQjhBMjM5NzI1NjUw
MEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYwMEFBMjlCQSAv
KiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5MDBBQTI5QkEg
LyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAv
KiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTQ2LDYgKzg5NDksNyBAQAogCQkJCTBGRUM4NTkx
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9j
YXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMyMDBEMjYxRjAw
MzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENCNUUxRkNFNEUz
NzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYzEwMDI0MDRl
ZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
Ly8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3Vs
ZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0
dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFw
cHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAgICAgIC8vIFRoZSB3
cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRlcnMgYWJvdmUgd2ls
bCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlhdGU4KGludCBpbW0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCmlu
ZGV4IGZlYTY2NzQ1YjYyLi44NWVjNzI4MzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12
b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhl
bHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQordm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVt
aXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKKyAgICBpZiAoIXNo
b3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hv
dWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKQEAgLTQ4LDkg
KzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVz
dWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3REb3VibGUubGluaygm
aml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Qmln
SW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBH
UFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBwZW5kKGppdC5qdW1w
KCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TSh0ZW1wR1BSKTsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1pdFNldEJpZ0ludChqaXQpOwor
ICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQocmVncy5wYXls
b2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQpOwogICAgIGRvbmUuYXBwZW5k
KGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZqaXQpOwpAQCAtODgsMTkgKzk3
LDM5IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVs
ZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Qmln
SW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEJpdGZpZWxkVHlw
ZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICByZXR1cm4gKG1fYml0cyAm
IG1hc2spICE9IG1hc2s7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAgQml0ZmllbGRU
eXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICBCaXRmaWVsZFR5cGUgbWFz
ayA9IE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludDsKICAgICByZXR1cm4gKG1fYml0cyAmIG1h
c2spICE9IG1hc2s7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBq
aXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJp
Z0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNldEJp
Z0ludCgpKQotICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0
czo6QmlnSW50KTsKKyAgICBpZiAoc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAgICAg
ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOwog
fQogCisjaWYgVVNFKEJJR0lOVDMyKQordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgor
dm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludDMyKENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAoreworICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKKyAg
ICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMy
KTsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+CiB2b2lkIEFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBl
cnMmIGppdCwgQml0ZmllbGRUeXBlIG1hc2spIGNvbnN0CiB7CkBAIC0xNDksOCArMTc4LDEyIEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGU8
VD4mIHByb2ZpbGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSW50NTJPdmVy
ZmxvdyIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQoKSkgewotICAgICAgICAgICAgb3V0LnByaW50
KHNlcGFyYXRvciwgIkJpZ0ludCIpOworICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSGVhcEJpZ0lu
dCIpOworICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOworICAgICAgICB9CisgICAgICAgIGlm
IChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQo
c2VwYXJhdG9yLCAiQmlnSW50MzIiKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Bcml0aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFBy
b2ZpbGUuaAppbmRleCA2YWRkMWEyNmIwYS4uN2MxZmU3MTNiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCwyMSArNzQsMjQgQEAg
cHVibGljOgogICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAogICAgICAgICBJbnQz
Mk92ZXJmbG93ICAgID0gMSA8PCAzLAogICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0
LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAorICAgICAgICBIZWFwQmlnSW50
ICAgICAgID0gMSA8PCA1LAorICAgICAgICBCaWdJbnQzMiAgICAgICAgID0gMSA8PCA2LAogICAg
IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA3OwogCiAgICAgT2Jz
ZXJ2ZWRSZXN1bHRzKCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IE9ic2VydmVkUmVzdWx0cyh1
aW50OF90IGJpdHMpCiAgICAgICAgIDogbV9iaXRzKGJpdHMpCiAgICAgeyB9CiAKLSAgICBib29s
IGRpZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRP
YnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5l
Z1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgSGVhcEJpZ0ludCB8IEJpZ0ludDMyKTsgfQogICAg
IGJvb2wgZGlkT2JzZXJ2ZURvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91
YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91
YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTm9uTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOZWdaZXJvRG91YmxlOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk51
bWVyaWM7IH0KLSAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSB7IHJldHVybiBtX2JpdHMgJiBC
aWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSB7IHJldHVybiBtX2JpdHMgJiAo
SGVhcEJpZ0ludCB8IEJpZ0ludDMyKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBCaWdJbnQo
KSB7IHJldHVybiBtX2JpdHMgJiBIZWFwQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmln
SW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiBCaWdJbnQzMjsgfQogICAgIGJvb2wgZGlkT2JzZXJ2
ZUludDMyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMgJiBJbnQzMk92ZXJmbG93OyB9CiAgICAg
Ym9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDUyT3Zl
cmZsb3c7IH0KIApAQCAtMTA5LDEzICsxMTIsMTYgQEAgcHVibGljOgogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVOb25OdW1lcmljKCk7
IH0KICAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJl
c3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVIZWFwQmln
SW50KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUhlYXBCaWdJ
bnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgY29uc3QgeyByZXR1cm4gb2Jz
ZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludDMyKCk7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSW50NTJPdmVyZmxv
dygpOyB9CiAKICAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0
KE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSk7IH0KICAgICB2b2lkIHNldE9ic2Vy
dmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJs
ZSk7IH0KICAgICB2b2lkIHNldE9ic2VydmVkTm9uTnVtZXJpYygpIHsgc2V0Qml0KE9ic2VydmVk
UmVzdWx0czo6Tm9uTnVtZXJpYyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBz
ZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEhl
YXBCaWdJbnQoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOyB9CisgICAg
dm9pZCBzZXRPYnNlcnZlZEJpZ0ludDMyKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJ
bnQzMik7IH0KICAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpIHsgc2V0Qml0KE9i
c2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyk7IH0KICAgICB2b2lkIHNldE9ic2VydmVkSW50
NTJPdmVyZmxvdygpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyk7IH0K
IApAQCAtMTI3LDggKzEzMywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2JpdHMgfD0gT2Jz
ZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJm
bG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlIHwgT2JzZXJ2ZWRSZXN1bHRz
OjpOZWdaZXJvRG91YmxlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBtX2JpdHMgfD0g
T2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkp
IHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5p
c0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6
SGVhcEJpZ0ludDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX2Jp
dHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljOwpAQCAtMTM5LDE5ICsxNDksMjIgQEAg
cHVibGljOgogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2Vl
cyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1udW1l
cmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJl
Z3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICB2b2lkIGVtaXRP
YnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwg
VGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwogCiAgICAgLy8gU2V0cyAoSW50
MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0Rv
dWJsZSkuCiAgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CiAgICAgdm9pZCBl
bWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBOb25OdW1l
cmljCiAgICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKICAg
ICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7CiAKLSAgICAvLyBTZXRzIEJp
Z0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICBi
b29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRI
ZWFwQmlnSW50KCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBl
cnMmKSBjb25zdDsKKworICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkgY29uc3Q7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgZW1pdFNldEJpZ0ludDMyKENDYWxsSGVscGVycyYp
IGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lkIGVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVs
cGVycyYsIEJpdGZpZWxkVHlwZSkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTE3
NSw3ICsxODgsNyBAQCB1c2luZyBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKIGNs
YXNzIFVuYXJ5QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJv
ZmlsZUJhc2U+IHsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFyZ09ic2VydmVkVHlw
ZVNoaWZ0ID0gT2JzZXJ2ZWRSZXN1bHRzOjpudW1CaXRzTmVlZGVkOwogCi0gICAgc3RhdGljX2Fz
c2VydChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8
PSBzaXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhl
IHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CisgICAgc3RhdGljX2Fzc2VydChh
cmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXpl
b2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRoZSB0eXBlIG9m
IHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFy
eUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nh
c3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0
KSk7CiAKQEAgLTI1Nyw3ICsyNzAsNyBAQCBjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGUgOiBwdWJs
aWMgQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsKIAogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBzcGVjaWFsRmFzdFBhdGhC
aXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05l
ZWRlZCk7Ci0gICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOworICAgIHN0YXRpY19hc3NlcnQo
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkg
PD0gc2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhl
IHVuZGVybHlpbmcgdHlwZS4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRo
Qml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBu
b3QgaW50ZXJzZWN0LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYg
Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0
LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNwZWNpYWxGYXN0
UGF0aEJpdCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaykpLCAiVGhlc2UgYml0cyBz
aG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhp
Z2hlciBiaXQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAxZjU2Njk0Y2U3MC4uMmVjMzc4NmY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzI5LDYgKzMyOSw3IEBA
IG9wX2dyb3VwIDpVbmFyeU9wLAogICAgICAgICA6aXNfdW5kZWZpbmVkX29yX251bGwsCiAgICAg
ICAgIDppc19ib29sZWFuLAogICAgICAgICA6aXNfbnVtYmVyLAorICAgICAgICA6aXNfYmlnX2lu
dCwKICAgICAgICAgOmlzX29iamVjdCwKICAgICAgICAgOmlzX29iamVjdF9vcl9udWxsLAogICAg
ICAgICA6aXNfZnVuY3Rpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5
YzU0YjQzZGRjMy4uYzYwOTY1YmNjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDY3
ZjJjZWMwYTgwLi5lZWE1ZmE0YzNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc0LDYgKzE3NCw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3Rl
ciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcElzVW5kZWZpbmVkT3JOdWxsLCBvcGVyYW5kKQog
ICAgIFVTRVMoT3BJc0Jvb2xlYW4sIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzTnVtYmVyLCBvcGVy
YW5kKQorICAgIFVTRVMoT3BJc0JpZ0ludCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3Qs
IG9wZXJhbmQpCiAgICAgVVNFUyhPcElzT2JqZWN0T3JOdWxsLCBvcGVyYW5kKQogICAgIFVTRVMo
T3BJc0NlbGxXaXRoVHlwZSwgb3BlcmFuZCkKQEAgLTQyMyw5ICs0MjQsMTAgQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQog
ICAgIERFRlMoT3BJc0VtcHR5LCBkc3QpCiAgICAgREVGUyhPcElzVW5kZWZpbmVkLCBkc3QpCi0g
ICAgVVNFUyhPcElzVW5kZWZpbmVkT3JOdWxsLCBkc3QpCisgICAgREVGUyhPcElzVW5kZWZpbmVk
T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElzQm9vbGVhbiwgZHN0KQogICAgIERFRlMoT3BJc051
bWJlciwgZHN0KQorICAgIERFRlMoT3BJc0JpZ0ludCwgZHN0KQogICAgIERFRlMoT3BJc09iamVj
dCwgZHN0KQogICAgIERFRlMoT3BJc09iamVjdE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Nl
bGxXaXRoVHlwZSwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCAwNTNiMWI0NDkyMC4uM2ZmYzJjMzk5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC02MCw3ICs2MCw2IEBACiAjaW5j
bHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRNYXRoSUMuaCIKLSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKaW5kZXggMzJmNTg4ZGJm
ZjYuLjNlZTYxZjkzYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGF0YUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRh
Rm9ybWF0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDQsMTIgKzQ0LDE0IEBAIGVudW0gRGF0YUZvcm1hdCA6IHVpbnQ4X3Qg
ewogICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKICAgICBEYXRhRm9ybWF0Q2VsbCA9IDYsCiAg
ICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAotICAgIERhdGFGb3JtYXRKUyA9IDgsCisgICAgRGF0
YUZvcm1hdEJpZ0ludDMyID0gOCwgLy8gRklYTUU6IGN1cnJlbnRseSB1bnVzZWQKKyAgICBEYXRh
Rm9ybWF0SlMgPSAxNiwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERh
dGFGb3JtYXRJbnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0RG91YmxlLAogICAgIERhdGFGb3JtYXRKU0NlbGwgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0Q2VsbCwKICAgICBEYXRhRm9ybWF0SlNCb29sZWFuID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdEJvb2xlYW4sCi0gICAgCisgICAgRGF0YUZvcm1hdEpTQmlnSW50MzIgPSBEYXRh
Rm9ybWF0SlMgfCBEYXRhRm9ybWF0QmlnSW50MzIsCisKICAgICAvLyBNYXJrZXIgZGVsaW1pbmF0
aW5nIG9yZGluYXJ5IGRhdGEgZm9ybWF0cyBhbmQgT1NSLW9ubHkgZGF0YSBmb3JtYXRzLgogICAg
IERhdGFGb3JtYXRPU1JNYXJrZXIgPSAzMiwgCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggNzAxYzMzMDg5YjkuLjgzMGY2ZDY3NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVt
aXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QK
K3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxs
SGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0
ZXJzTW9kZSBtb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBO
b25lOgpAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgfQog
ICAgICAgICAKICAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS51
bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJl
c3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LmJpbmFyeUFy
aXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdp
c3RlcnMpOworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQo
aml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCBlOGI2NWVhZDQ2ZS4uM2FiYTFhMzJhMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlSW5kZXguaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiT3BlcmFu
ZHMuaCIKKyNpbmNsdWRlICJUYWdSZWdpc3RlcnNNb2RlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC04Myw3ICs4NCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KIAotICAgIHZvaWQgZW1pdFJl
cG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKKyAgICAvLyBUaGUg
dGVtcG9yYXJ5IHJlZ2lzdGVyIGlzIG9ubHkgbmVlZGVkIG9uIDY0LWJpdHMgYnVpbGRzIChmb3Ig
dGVzdGluZyBCaWdJbnQzMikuCisgICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJz
JiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycykgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRWYWx1ZShKU1ZhbHVlKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCmluZGV4IDEwNTNiYTUyYjU0Li43NzFjNzliODU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM5LDExICsy
MzksNiBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHN0ck91dC5wcmludCgiU3ltYm9sIik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0JpZ0ludCkKLSAgICAgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAogICAg
IGlmICh2YWx1ZSA9PSBTcGVjSW50MzJPbmx5KQpAQCAtMjc4LDcgKzI3MywyMyBAQCB2b2lkIGR1
bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9Ci0gICAg
CisKKyAgICBpZiAoKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkKKyAgICAgICAg
c3RyT3V0LnByaW50KCJCaWdJbnQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSB7Cisg
ICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQzMikKKyAgICAgICAgICAgIHN0ck91dC5wcmlu
dCgiQmlnSW50MzIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KworICAgICAgICBpZiAodmFsdWUgJiBTcGVjSGVhcEJpZ0ludCkKKyAgICAgICAgICAgIHN0ck91
dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1RvcCA9
IGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUltcHVy
ZU5hTikKICAgICAgICAgc3RyT3V0LnByaW50KCJEb3VibGVJbXB1cmVOYU4iKTsKICAgICAKQEAg
LTQzMSw3ICs0NDIsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwog
ICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNCaWdJbnQ6OmluZm8oKSkKLSAgICAgICAgcmV0
dXJuIFNwZWNCaWdJbnQ7CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKIAogICAgIGlm
IChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4gU3Bl
Y0ZpbmFsT2JqZWN0OwpAQCAtNDk5LDggKzUxMCw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIFNw
ZWNTdHJpbmc7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9s
VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgaWYgKHN0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7
CisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUp
CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBpZiAoc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBEZXJpdmVkQXJyYXlUeXBlKQogICAgICAgICByZXR1cm4gU3BlY0Rl
cml2ZWRBcnJheTsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCkpOwpAQCAtNTM2LDYgKzU0Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3BlY0Fu
eUludEFzRG91YmxlOwogICAgICAgICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwogICAgIH0K
KyAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDMy
OwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJv
bUNlbGwodmFsdWUuYXNDZWxsKCkpOwogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKQEAgLTU5
NSw4ICs2MDgsOCBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNU
eXBlKEpTVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBjYXNlIFN5
bWJvbFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50VHlw
ZToKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50VHlwZToK
KyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGNhc2UgQXJyYXlUeXBlOgogICAg
ICAgICByZXR1cm4gU3BlY0FycmF5OwogICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAgLTYz
Miw2ICs2NDUsMTAgQEAgU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVx
dWl2YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHkKIAogICAgIGlmICh0eXBlICYg
U3BlY1N0cmluZykKICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5nOworCisgICAgaWYgKHR5cGUg
JiBTcGVjQmlnSW50KQorICAgICAgICB0eXBlIHw9IFNwZWNCaWdJbnQ7CisKICAgICByZXR1cm4g
dHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZC4uZGYwYjkxYTczNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsMTIgKzk4LDE0
IEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY090aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7IC8v
IEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBhIGJv
b2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCi1zdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgorc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcEJpZ0ludCAgICAgICAgICAgICAgICAgICAgICAg
ID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50IHRoYXQgaXMgYWxsb2Nh
dGVkIG9uIHRoZSBoZWFwCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJ
bnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBzbWFsbCBCaWdJbnQgdGhhdCBpcyBpbmxpbmUgdGhlIEpTVmFsdWUKK3N0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNCaWdJbnQzMiB8IFNwZWNIZWFwQmlnSW50Oworc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCA0MzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KIHN0YXRpYyBjb25zdGV4
cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9
IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2Mg
fCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlw
ZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8
IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBT
cGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dl
YWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNE
ZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJp
dG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24u
Ci1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBT
cGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgot
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBh
bmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVj
U3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVj
QmlnSW50MzIgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUlt
cHVyZU5hTi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9w
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBj
YW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVj
RG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGluIGEg
Ynl0ZWNvZGUgbG9jYWwuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxs
VG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQnl0ZWNvZGVUb3AgfCBTcGVjRnVs
bE51bWJlcjsgLy8gSXQgY2FuIGJlIGFueXRoaW5nIHRoYXQgYnl0ZWNvZGUgY291bGQgc2VlIHBs
dXMgZXhvdGljIGVuY29kaW5ncyBvZiBudW1iZXJzLgogCkBAIC0xODUsOSArMTg3LDE5IEBAIGlu
bGluZSBib29sIGlzU3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAg
cmV0dXJuIHZhbHVlID09IFNwZWNTeW1ib2w7CiB9CiAKK2lubGluZSBib29sIGlzQmlnSW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0g
U3BlY0JpZ0ludDMyOworfQorCitpbmxpbmUgYm9vbCBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0hlYXBCaWdJ
bnQ7Cit9CisKIGlubGluZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQ7CisgICAgcmV0dXJuICEh
dmFsdWUgJiYgKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBib29s
IGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggNjNkMzYyY2FjMTkuLjQ0ZTE1YzIwNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTcw
Myw3ICsxNzAzLDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1w
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIp
IHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgQmlnSW50VHlwZSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQodGhpcywgZHN0LCBv
cC5tX3ZhbHVlKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1p
dCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlKTsKKyNlbmRpZgogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZh
bHVlID09ICJvYmplY3QiKSB7CkBAIC0yOTExLDcgKzI5MTUsNyBAQCBKU1ZhbHVlIEJ5dGVjb2Rl
R2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCB1aW50OAogICAgIHJldHVybiBtX2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRl
bnRpZmllci5pbXBsKCksIHJhZGl4LCBzaWduKSwgWyZdIHsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0oKSk7CiAgICAgICAgIGF1dG8gcGFyc2VJbnRTaWduID0g
c2lnbiA/IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlNpZ25lZCA6IEpTQmlnSW50OjpQYXJzZUlu
dFNpZ246OlVuc2lnbmVkOwotICAgICAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0lu
dDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpT
QmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwor
ICAgICAgICBKU1ZhbHVlIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIs
IHZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1v
ZGU6OlRocm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb24oKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAppbmRleCBlYTZjZDJiNmQ1Yi4uNmJlNTdkODNlNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTEwOTIsNyArMTA5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVzaW5nIE51
bWJlck1hcCA9IEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgSWRlbnRp
ZmllclN0cmluZ01hcCA9IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElk
ZW50aWZpZXJSZXBIYXNoPjsKLSAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhh
c2hNYXA8QmlnSW50TWFwRW50cnksIEpTQmlnSW50Kj47CisgICAgICAgIHVzaW5nIElkZW50aWZp
ZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU1ZhbHVlPjsKICAgICAgICAg
dXNpbmcgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU2V0ID0gSGFzaFNldDxSZWY8VGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yPj47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlRGVzY3JpcHRvck1hcCA9
IEhhc2hNYXA8dWludDY0X3QsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiwgV1RGOjpJbnRI
YXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRf
dD4+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2UyNjM4MGM2MDUuLjdhNzVhMDk0OWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk51bWJl
ckNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVDYWNoZS5oIgpAQCAtMjE1LDcgKzIxNCw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1Ro
aXNBbklkZW50aXR5KFZNJiB2bSwgRUNNQU1vZGUgZWNtYU1vZGUsIEFic3RyYWN0VmFsdWUmCiAg
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkg
ewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAg
ICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5n
VHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0lu
dFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUo
KSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBl
KCkgPT0gSGVhcEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmlj
dCgpKQogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBz
aW5jZSBlaXRoZXI6CkBAIC01MDMsNyArNTAyLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyNlbHNlCisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTUzMyw3ICs1NDAsMTYgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50QmluYXJ5Qml0d2lzZU9wKG5vZGUp
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBiaW5hcnlVc2VL
aW5kIG1lYW5zIHRoYXQgd2UgY2Fubm90IHNwZWNpYWxpemUgdG8gKGZvciBleGFtcGxlKSBhIEhl
YXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAg
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIp
OworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsK
KyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkK
ICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNzIzLDExICs3MzksMTQgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgVmFsdWVTdWI6CiAgICAgY2FzZSBW
YWx1ZUFkZDogewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpOwotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkK
KyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBl
bHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpOwog
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gd2Ug
cmVhbGx5IG5lZWQgU3BlY1N0cmluZyBoZXJlIGZvciBWYWx1ZVN1Yj8gSXQgc2VlbXMgbGlrZSB3
ZSBvbmx5IG5lZWQgaXQgZm9yIFZhbHVlQWRkLgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUo
bm9kZSwgU3BlY1N0cmluZyB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg3LDYgKzkwNiw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFZhbHVlTmVnYXRlOiB7CisgICAg
ICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBtdWNoIHNtYXJ0ZXIgdGhpbmdzIGZvciBCaWdJbnRz
LCBzZWUgVmFsdWVBZGQvVmFsdWVTdWIuCiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsK
ICAgICAgICAgYnJlYWs7CkBAIC05NTksNyArOTc5LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5
cGVGb3JOb2RlKG5vZGUsIHR5cGVPZkRvdWJsZUluY09yRGVjKGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmlnSW50VXNl
OgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtOTc1LDcgKzk5OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgIEpTVmFsdWUgY2hpbGRZID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUo
KTsKICAgICAgICAgaWYgKGNoaWxkWCAmJiBjaGlsZFkgJiYgY2hpbGRYLmlzTnVtYmVyKCkgJiYg
Y2hpbGRZLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBgZGlk
Rm9sZENsb2JiZXJXb3JsZGAgaGVyZSBiZWNhdXNlIHRoaXMgcGF0aCBpcyBvbmx5IHBvc3NpYmxl
Ci0gICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhl
IGNhc2Ugb2YgQmlnSW50VXNlLCBjaGlsZHJlbiB3aWxsIGJlCisgICAgICAgICAgICAvLyB3aGVu
IG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQW55QmlnSW50VXNl
IG9yIGZyaWVuZHMsIGNoaWxkcmVuIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkg
YEFic3RyYWN0SW50ZXJwcmV0ZXI6OmV4ZWN1dGVFZmZlY3RzYC4KICAgICAgICAgICAgIGRpZEZv
bGRDbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgIC8vIE91ciBib3hpbmcgc2NoZW1lIGhlcmUg
bWF0Y2hlcyB3aGF0IHdlIGRvIGluIG9wZXJhdGlvblZhbHVlUG93LgpAQCAtOTgzLDcgKzEwMDcs
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAg
ICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNl
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOwpAQCAtOTkzLDcgKzEwMTksMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9
CiAKICAgICBjYXNlIFZhbHVlTXVsOiB7Ci0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgY29kZSBub3Qg
c2hhcmVkIHdpdGggVmFsdWVTdWI/CisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNI
ZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFu
eUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAg
ICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEwNTcsNyArMTA4Niw5IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudERpdk9wKG5vZGUp
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmln
SW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEzODEsNiArMTQxMiw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9v
bGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBO
dW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JO
dWxsOgpAQCAtMTQwOSw2ICsxNDQxLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0JpZ0ludCgpKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6
OmlzSW50ZWdlckltcGwoY2hpbGQudmFsdWUoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTE1NjMsNyArMTU5OCwyMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0Jp
Z0ludDoKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjQmlnSW50KSkgewor
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAg
ICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVj
QmlnSW50KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihm
YWxzZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IGlm
IHRoZSBTcGVjdWxhdGVkVHlwZSBpbmZvcm1zIHVzIHRoYXQgd2Ugd29uJ3QgaGF2ZSBhIEJpZ0lu
dDMyIChvciB0aGF0IHdlIHdvbid0IGhhdmUgYSBIZWFwQmlnSW50KSwgdGhlbiB3ZSBjYW4gdHJh
bnNmb3JtIHRoaXMgbm9kZSBpbnRvIGEgSXNDZWxsV2l0aFR5cGUoSGVhcEJpZ0ludFR5cGUpIChv
ciBhIGh5cG90aGV0aWNhbCBJc0JpZ0ludDMyIG5vZGUpLgogCisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAgICBpZiAoIShjaGlsZC5t
X3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwpAQCAtMTkzNywxMyArMTk4NywxNCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklY
TUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBub3QgbGF0ZXIgKGFmdGVyIHRoZSB0eXBl
LWJhc2VkIHJlcGxhY2VtZW50IGJ5IGZhbHNlKS4KKyAgICAgICAgLy8gU2FhbSBzZWVtcyB0byBh
Z3JlZSB0aGF0IHRoZSB0d28gY2hlY2tzIGNvdWxkIGJlIHN3aXRjaGVkLCBJJ2xsIHRyeSB0aGF0
IGluIGEgc2VwYXJhdGUgcGF0Y2gKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyBjb25kaXRp
b24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlNDLgotICAgICAgICAgICAgYXV0byBpc05v
blN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpOwor
ICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudCA9IFtd
IChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVl
LmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsK
ICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmIChpc05vblN0cmluZ0NlbGxDb25zdGFu
dChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25zdGFudChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChpc05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0
cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAgICAgICAgICAgICBt
X3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAgICAgICAgICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTk1OCwxOSArMjAwOSwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gbm9k
ZS0+Y2hpbGQyKCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9v
bGVhblVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJV
c2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNl
KSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8
Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSB8
fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpIHx8Ci0g
ICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKLSAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkgfHwK
LSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1Vz
ZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRV
c2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKLSAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBTdHJpbmdVc2UpKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IGNhc2Ugbm90IGludm9sdmluZyBO
YU4gd2hlcmUgeCA9PT0geCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gdHJ1ZT8KKyAgICAg
ICAgICAgIC8vIElmIG5vdCBJIG1pZ2h0IHNsaWdodGx5IHNpbXBsaWZ5IHRoYXQgY2hlY2suCisg
ICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCisgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKQorICAgICAgICAgICAg
ICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkKKyAgICAgICAgICAgICAg
ICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKKyAgICAgICAgICAgICAgICB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQorICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisgICAgICAgICAgICAg
ICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdWYXJV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1Zh
clVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IGZlYTI4YmM0NmU0Li5hNTdkZjBmZDAwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU3MzAsNiAr
NTczMCwxNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfbnVtYmVyKTsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2Ugb3BfaXNfYmlnX2ludDogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7
CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOworICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQmlnSW50LCB2YWx1ZSkp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfYmlnX2ludCk7CisjZWxzZQorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlwZTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBh
NmMuLjAzZTg5YjI2ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xNDksNiArMTQ5LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNfYm9vbGVh
bjoKICAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAgICBjYXNlIG9wX2lzX2JpZ19pbnQ6CiAgICAg
Y2FzZSBvcF9pc19vYmplY3Q6CiAgICAgY2FzZSBvcF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBj
YXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCBjNzE0ZjE1MjA0My4uNTYzZjViNjViZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc1LDYgKzE3NSw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNl
IElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAg
Y2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzVHlw
ZWRBcnJheVZpZXc6CkBAIC0yNjAsNyArMjYxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFw
QmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjgwLDcgKzY4MSw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToK
KyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgor
ICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9k
ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CkBAIC03
MDIsNyArNzA1LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFZhbHVlUG93
OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6CiAgICAgY2FzZSBWYWx1ZUJpdFJTaGlmdDoKLSAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7CisgICAgICAgIC8v
IEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUtYXJndW1lbnQgaXNCaW5hcnlVc2VLaW5kIHdvdWxk
IHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXppbmcgKGZvciBleGFtcGxlKSBmb3IgYSBIZWFwQmln
SW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdodC1vcGVyYW5kLgorICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGUwYzk1ODZmMjBkLi5lNGI4MGFmMWY3YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTE0NywxNSArMTQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWUgY2hpbGQxQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkubm9kZSgpKS52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNoaWxk
MkNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkudmFsdWUo
KTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlv
biB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCi0gICAgICAgICAgICAgICAgICAgIGF1
dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkg
JiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gaXNOb25TdHJpbmdBbmROb25CaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNW
YWx1ZSB2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZh
bHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQo
KTsKICAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBpZiAoaXNO
b25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChjaGlsZDFDb25zdGFudCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nQW5kTm9uQmlnSW50Q2VsbENvbnN0YW50KGNoaWxk
MUNvbnN0YW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ29t
cGFyZUVxUHRyKG1fZ3JhcGguZnJlZXplU3Ryb25nKGNoaWxkMUNvbnN0YW50LmFzQ2VsbCgpKSwg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb25TdHJpbmdPckJpZ0ludENlbGxD
b25zdGFudChjaGlsZDJDb25zdGFudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChpc05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudChjaGlsZDJDb25zdGFudCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NvbXBhcmVFcVB0cihtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhjaGlsZDJDb25zdGFudC5hc0NlbGwoKSksIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNjQ0
ZWZlMmQ1ZDAuLjkyZTc0Y2I0OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2lu
Y2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0xNDcsNiAr
MTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
SXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJl
cjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNh
c2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhkN2RlMjcxZGIwLi5hNWZiZmM2MTYz
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjAyLDE0ICsyMDIsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBm
cmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxsIGlzIGtlcHQg
YWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lzZS4KKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0byBhIHNwZWNp
YWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7CisgICAgICAg
ICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2lu
ZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJ
bmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuaGVhcEJpZ0ludENvbnN0YW50T25lLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFu
dE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRzIGFyZSBjZWxscywgc28gdGhl
IGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1
ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50MzIsIEpTQ29u
c3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0
Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVs
dCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3Ig
c21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwg
aXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNl
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRv
IGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIGluIHRoYXQgY2FzZS4KICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsK
LSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4s
IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0YW50T25lLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2lu
LCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkp
KTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29u
c3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUgY3VycmVudGx5IGNlbGxzLCBzbyB0
aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisgICAgICAgICAgICAgICAg
Zml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8v
IFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5j
ID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhN
b2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNSwxMiArMjU1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAg
IEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkg
eworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxk
Mik7CkBAIC0yNjgsOCArMjk2LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRP
cjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTMxMyw3ICszNTQsMTcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG9wZXJh
bmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAg
ICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4ob3BlcmFuZEVk
Z2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZWxzZQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworI2VuZGlm
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3Vs
YXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVz
ZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NTgsOSArNTA5LDE3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIu
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQx
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CisjZW5kaWYKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTU0Niw4ICs2MDUs
MjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGls
ZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChsZWZ0
Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihsZWZ0Q2hpbGQubm9kZSgp
LCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hp
bGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KQEAgLTU4OCwxMiArNjYwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hp
bGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihsZWZ0Q2hp
bGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0
Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obGVm
dENoaWxkKTsKQEAgLTY1NywxMiArNzM3LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQz
MikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxB
bnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVV
bnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTI1NDQsNiArMjYzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNV
bmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgogICAgICAgICBjYXNlIElz
TnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAgICBjYXNlIElzT2JqZWN0T3JO
dWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0
QXJndW1lbnRzOgpAQCAtMjg4NSw3ICsyOTc0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CkBAIC0yOTU4LDcgKzMwNTYsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBpcyBCaWdJbnQsIHdlIGF0dGVt
cHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNpbmNlIGl0IGNhbiBvbmx5IHJl
dHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDUyLDEzICszNTU5
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIEtu
b3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAg
ICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkKICAgICAgICAgICAgICAgICB8
fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAg
ICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJs
ZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IHdo
YXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UgPworICAg
ICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBhbGwgb2YgdGhlIFVzZUtpbmRz
IHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NzIsMTIgKzQwODEsMjYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJp
Y3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBh
cmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyNlbmRpZgogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYg
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDQyNzk0Yzc5Y2NhLi44OTJlNWRjYzA0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVk
ZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCBlNTZjNWZmYzFkYy4uNzRlMTkzNjI0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYyMiw2ICsyNjIyLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
OworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpCiAgICAgewpA
QCAtMjgyMiw3ICsyODM0LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEt
PnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCk7
CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBib29sIHNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAmJiBvcDItPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRT
cGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3Bl
Y3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1
bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBvcDItPnNob3VsZFNwZWN1
bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3Mu
aAppbmRleCA3ZTk2YTI2ODRjZS4uYjBiYTZiYjdlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlRmxhZ3MuaApAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSAgICAgICAgIDB4
MDAyMDAKICNkZWZpbmUgTm9kZU1heU5lZ1plcm9JbkRGRyAgICAgICAgICAgICAgMHgwMDQwMAog
I2RlZmluZSBOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQgICAgICAweDAwODAwCisvLyBGSVhN
RTogd2Ugc2hvdWxkIGhhdmUgc2VwYXJhdGUgZmxhZ3MgZm9yIEhlYXBCaWdJbnQgYW5kIEJpZ0lu
dDMyLCBjdXJyZW50bHkgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiB3aWxsIHBlc3NpbWl6ZSB0aGlu
Z3MuCiAjZGVmaW5lIE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0ICAgICAgICAgIDB4MDEwMDAKICNk
ZWZpbmUgTm9kZU1heUhhdmVOb25JbnRSZXN1bHQgICAgICAgICAgKE5vZGVNYXlIYXZlRG91Ymxl
UmVzdWx0IHwgTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0IHwgTm9kZU1heUhhdmVCaWdJbnRS
ZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDkzZDE3YmUzMzk2Li4zYmU0Mzg2OTI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzk2LDYgKzM5Niw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJc1VuZGVmaW5lZE9y
TnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xlYW4sIE5vZGVSZXN1
bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNOdW1iZXIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisg
ICAgLyogSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLiBPdGhlcndpc2Ug
d2UgZW1pdCBJc0NlbGxXaXRoVHlwZSAqL1wKKyAgICBtYWNybyhJc0JpZ0ludCwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhOdW1iZXJJc0ludGVnZXIsIE5vZGVSZXN1bHRCb29sZWFu
KSBcCiAgICAgbWFjcm8oSXNPYmplY3QsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8o
SXNPYmplY3RPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUyZGJkZDliOS4uZjYzNzJhZGQ0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMzgzLDEwICszODMsMTMg
QEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJl
IHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgbnVtYmVyVGFn
UmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9y
ZSBpdC4KICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAg
Ly8gV2UgYWxzbyB1c2UgdGhlIG5vdENlbGxNYXNrUmVnaXN0ZXIgYXMgdGhlIHNjcmF0Y2ggcmVn
aXN0ZXIsIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGZp
bmQgYSBsZXNzIGdyb3NzIHdheSBvZiBkb2luZyB0aGlzLCBtYXliZSB0aHJvdWdoIGRlbGF5aW5n
IHRoZXNlIG9wZXJhdGlvbnMgdW50aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21lIHNwYXJlIHJlZ2lz
dGVycyBhcm91bmQ/CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciksIEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFn
KSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0
Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpLCBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbHNlIC8vIG5v
dCBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlz
QWRkcmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNh
biB1c2UgaXQuCkBAIC0zOTgsNyArNDAxLDcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywgc2NyYXRjaFBheWxv
YWQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoZXhp
dC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAg
IHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hU
YWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOwpA
QCAtNDA3LDEwICs0MTAsMTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBl
cnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAg
ICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygp
KSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRj
aFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAg
ICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlLCBJbnZhbGlkR1BSUmVnKTsKICAgICAg
ICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1f
anNWYWx1ZVNvdXJjZS5yZWdzKCkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpLCBJbnZhbGlkR1BSUmVnKTsK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNmVhZjcwZGQ5NTQuLjg2NmFj
ZjhhYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC04OSw3ICs4OSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMuaCIKICNpbmNs
dWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KIAogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKERGR19KSVQpCkBA
IC0yMjQsNTYgKzIyMyw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0V2l0aFRoaXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgYmFzZVZhbHVl
LnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgTnVtYmVyT3BlcmF0aW9u
Pgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYmluYXJ5T3AoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwgTnVt
YmVyT3BlcmF0aW9uJiYgbnVtYmVyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9w
MSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAg
IH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIobnVtYmVyT3AoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PGRvdWJsZT4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50
T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGlu
dDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJpZ0lu
dE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAgIH0KLQot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoaW50MzJPcChXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PGludDMy
X3Q+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJsZSBpbnB1dCkKIHsKICAgICBpbnQgYXNJbnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGlucHV0KTsKQEAgLTQ3Myw3MSArNDIyLDM0IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJ
bnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxl
ZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGpzTW9kKGxlZnQs
IHJpZ2h0KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0s
IGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotCi0gICAgYXV0
byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6aW5jKGds
b2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAg
ICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1lcmljKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlICsgMSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNJbmMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
OwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJp
YykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1l
cmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlIC0gMSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEZWMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKIAotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMg
PSBvcDEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIofldURjo6Z2V0PGludDMyX3Q+KG9wZXJhbmRO
dW1lcmljKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlTm90KGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKQpAQCAtNTQ2LDE1ICs0NTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAg
IH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsKLSAgICB9OwotCi0g
ICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCkBAIC01NjMsMTUgKzQ2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qg
cmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0OwotICAgIH07
Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRP
cDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTgwLDE1ICs0NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQz
Ml90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKLSAg
ICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNv
ZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTk3LDE1ICs0ODUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmln
SW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBs
ZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPDwg
KHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xv
YmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVy
YXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTFNoaWZ0KGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjE0LDE1ICs0OTQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmln
aHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQz
Mk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAg
ICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICByZXR1cm4g
Yml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMikKQEAgLTY2MCwxNSArNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9
OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAt
PiBkb3VibGUgewotICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGRpdmlzaW9uIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RGl2KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjc3LDE1ICs1
NDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0g
W10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0lu
dCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25l
bnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51
bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAg
ICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAg
cmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzUG93KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogZG91YmxlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhBYnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSkKQEAgLTE0ODIsNyArMTMzOCw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWdleHAtPnRlc3QoZ2xvYmFs
T2JqZWN0LCBpbnB1dCkpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Vi
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTQ5NCw3ICsxMzUwLDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIGxl
ZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE1MDUsNyArMTM2MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFu
ZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xNTE3LDcgKzEzNzMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
bwogICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFu
ZCwgcmlnaHRPcGVyYW5kKTsKIH0KICAgICAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTI5LDcgKzEzODUsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2Jh
bE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTQxLDcg
KzEzOTcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6
ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNTUzLDcgKzE0MDksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVy
biBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTY1LDcgKzE0MjEsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmpl
Y3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTU3Nyw3ICsxNDMzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlm
dEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNC
aWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTU4OSw3ICsxNDQ1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYwMSw3ICsxNDU3LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hp
ZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNjEzLDcgKzE0NjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogICAgIHJldHVy
biBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3Bl
cmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjMxLDcgKzE0ODcsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZUlubGluZShnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6c3Ry
aWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKIH0KIAogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGFyZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIpCkBAIC0xNjc2LDEw
ICsxNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWVy
aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byB2YXJpYW50
ID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHZhcmlhbnQpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdURjo6Z2V0PEpTQmlnSW50Kj4odmFyaWFudCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPih2YXJpYW50
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGE4YTRjYmQyMGU2Li5kN2E4YTYzZDkxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODMsMTggKzE4Mywx
OCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSgogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdChKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
dkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBX
VEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlm
dEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KFZNKiwgU3Ry
dWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyhWTSosIFN0cnVj
dHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgbWluQ2FwYWNpdHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAppbmRleCBmZTQ5YzMxMzAzNi4uMGY0MTk3MGQ5OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC01MzIsNyArNTMyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMDQsNiArMTAxNiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgog
ICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAgICBj
YXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgY2FzZSBJc09iamVjdDoKICAgICAgICAgY2Fz
ZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKaW5kZXggOGVjZDM1MzFmYzMuLmRlNzQ3N2FlNTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNzksNyArNzksOSBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yT3RoZXJV
c2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAg
ICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAg
ICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgTm90U3Ry
aW5nVmFyVXNlOgpAQCAtMjYzLDYgKzI2NSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNl
IElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6
CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtNjc3LDEw
ICs2ODAsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFZhbHVlRGl2Ogog
ICAgIGNhc2UgVmFsdWVNb2Q6CiAgICAgY2FzZSBWYWx1ZVBvdzoKLSAgICAgICAgcmV0dXJuIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpOworICAgICAgICByZXR1cm4gbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSk7CiAKICAgICBj
YXNlIFZhbHVlQml0Tm90OgotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IEJpZ0ludFVzZTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNl
IHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlOwogCiAgICAgY2Fz
ZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDYxOGQ5OTg4YjBlLi43MzYwZDk5OWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjgsNiArMzY4LDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnR5cGVDaGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwgRWRnZSBlZGdlLCBT
cGVjdWxhdGVkVHlwZSB0CiAgICAgc3BlY3VsYXRpb25DaGVjayhleGl0S2luZCwgc291cmNlLCBl
ZGdlLm5vZGUoKSwganVtcFRvRmFpbCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnR5cGVD
aGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwgRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBl
c1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBqdW1wTGlzdFRvRmFpbCwg
RXhpdEtpbmQgZXhpdEtpbmQpCit7CisgICAgQVNTRVJUKG5lZWRzVHlwZUNoZWNrKGVkZ2UsIHR5
cGVzUGFzc2VkVGhyb3VnaCkpOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKGVkZ2UsIHR5cGVz
UGFzc2VkVGhyb3VnaCk7CisgICAgc3BlY3VsYXRpb25DaGVjayhleGl0S2luZCwgc291cmNlLCBl
ZGdlLm5vZGUoKSwganVtcExpc3RUb0ZhaWwpOworfQorCiBSZWdpc3RlclNldCBTcGVjdWxhdGl2
ZUpJVDo6dXNlZFJlZ2lzdGVycygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpAQCAtMTcw
OCw2ICsxNzE1LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5j
aChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0g
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJp
Z0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9kZSwg
YnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzUsMjQgKzM1NDYsNDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYg
Y2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBC
aWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJh
bmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBUaGUg
Zm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBv
ZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBh
cm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgx
Mik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZm
ZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmlnSW50
MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0lu
dAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAg
ICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAg
SlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUg
QW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQu
anNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTgwLDE0ICszNjE0
LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUp
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9u
X0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
T3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5v
ZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAor
ICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAg
aWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJl
cihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlz
LCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMs
IHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAg
ICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0z
NjMyLDExICszNjcwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3Ao
Tm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8
ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25z
dCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBs
ZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJp
Z0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQog
ICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNl
KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hp
bGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBy
aWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJl
Z3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzIsNTIgKzM3MTIsODQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUp
CiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRD
aGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisK
ICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAg
ICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVl
Qml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1ZUJp
dFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9yLCBv
cGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVyZSB3
aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQocmln
aHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBW
YWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVyYXRv
ciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJmZXJl
IHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0KHJp
Z2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBzbyB3
ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAgICAg
IG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQu
b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFTU0VS
VChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAg
R1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgogCi0gICAgc3BlY3VsYXRl
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hp
bGQsIHJpZ2h0R1BSKTsKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAg
ICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisKKyAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAg
ICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisK
KyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChvcCkg
ewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55
QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9k
ZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0
aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJp
dE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0T3JH
ZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2Rl
KiBub2RlKQpAQCAtMzc1Nyw3ICszODI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlm
dEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmln
SW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25fR0pK
IHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlmdAog
ICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRVUlNo
aWZ0OwpAQCAtMzc2Nyw5ICszODM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51
bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBp
c0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7
CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAg
ICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
SlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg2MSwy
NyArMzkzNSwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChO
b2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVk
Z2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIK
KyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlw
ZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihu
b2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJh
dG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4OSwyNyArMzk2
MywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRH
UFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsK
IAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmln
aHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNo
aWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9k
ZSkKQEAgLTM5MjAsNyArMzk5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlm
dE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJp
dE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTUwLDE5ICs0MDI0LDY3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQg
PSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBu
ZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/Cisg
ICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBm
b3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50
MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5h
dGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNr
ID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIs
IHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIG1faml0LmJveEJpZ0ludDMy
KHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55
QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdo
dENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdz
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7
CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2FsbCBhIG1vcmUgc3BlY2lhbGl6
ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51
bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCBy
aWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtNDAwOCw0NCArNDEzMCw5MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVT
dWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAg
ICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3Jh
dGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJl
ZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKLSNlbmRp
ZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5
IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0ID8K
KyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJpY2tz
IGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBt
X2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJ
bnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
bV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5j
b2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKLSAgICAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwotICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworICAgICAgICAvLyBG
SVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fz
c2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKIAotICAg
ICAgICBjb21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcsIG5lZWRz
U2NyYXRjaEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24p
OworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBj
aGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAog
Ci0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hp
bGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21waWxl
VmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3QgVmFs
dWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpIHsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFueUJp
Z0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGlsZCk7
CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAg
ICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0gICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJl
ZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIo
KTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3Vi
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZiAvLyBVU0UoQklHSU5UMzIpCiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0
R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3JhdGNo
R1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOworI2Vs
c2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1Nj
cmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hpbmdG
dW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMobm9k
ZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNo
aW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9u
UmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYzMCw2ICs0Nzk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAgIC8vIEZJWE1FOiBhZGQgYSBm
YXN0IHBhdGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHByb2JhYmx5IGFsc28gZm9yIEhl
YXBCaWdJbnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQu
Z3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CkBAIC00ODEwLDI5ICs0OTc5LDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxk
MSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChs
ZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUgYmV0
d2VlbiBjb21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29tcGlsZVZhbHVlTXVs
IGZvciBCaWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8gZ2V0IHJpZCBvZiB0
aGUgZHVwbGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJp
Z2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVh
bGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0
ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJp
Y2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAg
ICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hC
aWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVs
aW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3Vs
dEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94Qmln
SW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Ig
bWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxkLnVz
ZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBC
aWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxk
Lm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVl
T3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJl
cihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgp
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJp
Z2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTUwMTIsMjkgKzUyMTMsMzMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBh
ZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUg
c2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4KKwor
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVn
IGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5n
cHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAg
ICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVI
ZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
aXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5v
dE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8
fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTA0
OCw2ICs1MjUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUq
IG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBs
ZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NywyOSAr
NTUwNCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9k
ZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdo
dENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0lu
dDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhv
dyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0
KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hp
bGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwor
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7Cisg
ICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3Mg
PSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpzVmFs
dWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4NjEsMzAgKzYwNzIsMzMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIg
Zm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVm
dEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdwcigp
OwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQobV9q
aXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBKU1Zh
bHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7
CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMiw2ICs2
MjQ2LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9B
c3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9k
ZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVz
ZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAt
NjA2MCw2ICs2MjgwLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2Rl
LCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUu
CisgICAgLy8gTm90IGhhdmluZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJlIHdpbGwgbm90IGJl
IGZ1c2VkIHdpdGggdGhlIGJyYW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9v
bGVhblVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFyZShub2RlLCBjb25k
aXRpb24pOwpAQCAtNjEzOCw3ICs2MzYxLDI0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1
c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJ
bmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVCaWdJbnQz
MkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJ
bmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNo
SW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTg1LDggKzY0MjUsOCBAQCBib29sIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUhl
YXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKQEAgLTYyODAsOCArNjUyMCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJp
Y3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHko
bm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5
cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CiAgICAgcmV0
dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEwNTQ0LDE4ICsxMDc4
NCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlKQog
ICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNl
bGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2Vs
bCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RC
aWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2ppdC5i
cmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
SGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFuZC5n
cHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpTVmFs
dWVSZWdzIHJlZ3MpCkBAIC0xMDcyNSw4ICsxMDk2NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAg
ICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJpZ0lu
dFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0
ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3QoZWRnZSk7CkBAIC0xMzA4NSwxNyArMTMzMzMsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50
UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOworICAg
IC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUgKGFuZCBmb3IgdHlw
ZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVkIGluIHRoaXMgZmls
ZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVu
dFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoYXJn
dW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzQmln
SW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBub3RDZWxsLmxp
bmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVy
KGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGluaygmbV9qaXQpOwor
ICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhh
cmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmljLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CkBAIC0xMzk4NCw5
ICsxNDIzMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVC
cmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1cnJlbnROb2RlID0g
YnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludEVxdWFs
aXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVx
dWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3Jl
YXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisg
ICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24g
b2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVm
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5OTgsOCArMTQyNDcsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKICAgICBsZWZ0LnVz
ZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxk
MSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0
R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsK
KyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmNzUzNTg5NDVlYS4uN2Q2ZjFj
ZWJhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRl
RG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBH
UFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYKICAgICBHZW5lcmF0
ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqKTsKIAogICAg
IHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21waWxlUGVl
cEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlvbl9HSkopOwogICAg
IHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUs
IEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVw
SG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
Qm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0
aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAg
ICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVNaXNj
U3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSop
OwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3lt
Ym9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGlsZVN5
bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlwZWRF
ZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29t
cGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNvbXBp
bGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91Ymxl
Q29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9p
ZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
aWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0R2Vu
ZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAgICB2b2lkIGVt
aXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJpZ0ludEJp
dE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hp
ZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNo
aWZ0T3AoTm9kZSopOwpAQCAtMTU2MSw2ICsxNTcwLDcgQEAgcHVibGljOgogICAgIC8vIEhlbHBl
cnMgZm9yIHBlcmZvcm1pbmcgdHlwZSBjaGVja3Mgb24gYW4gZWRnZSBzdG9yZWQgaW4gdGhlIGdp
dmVuIHJlZ2lzdGVycy4KICAgICBib29sIG5lZWRzVHlwZUNoZWNrKEVkZ2UgZWRnZSwgU3BlY3Vs
YXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKSB7IHJldHVybiBtX2ludGVycHJldGVyLm5lZWRz
VHlwZUNoZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7IH0KICAgICB2b2lkIHR5cGVDaGVj
ayhKU1ZhbHVlU291cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gs
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIEV4aXRLaW5kID0gQmFkVHlwZSk7Cisg
ICAgdm9pZCB0eXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwgRWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlw
ZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QganVtcExpc3RUb0ZhaWws
IEV4aXRLaW5kID0gQmFkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVDZWxsVHlwZVdp
dGhvdXRUeXBlRmlsdGVyaW5nKEVkZ2UsIEdQUlJlZyBjZWxsR1BSLCBKU1R5cGUpOwogICAgIHZv
aWQgc3BlY3VsYXRlQ2VsbFR5cGUoRWRnZSwgR1BSUmVnIGNlbGxHUFIsIFNwZWN1bGF0ZWRUeXBl
LCBKU1R5cGUpOwpAQCAtMTU3Miw2ICsxNTgyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1
bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJl
cEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lmIFVTRShCSUdJTlQz
MikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRl
QW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICB2b2lkIHNwZWN1
bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CiAg
ICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYyMSw4ICsxNjM1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQg
c3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UsIEdQ
UlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2b2lkIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRl
SGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwgSlNWYWx1
ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lkIHNwZWN1
bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjAwLDYgKzI2
MTQsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCisjaWYg
VVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDog
bV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZh
bGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxs
ZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKworICAgIH5TcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsK
KyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBt
X2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIoZWRnZSgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZvaWQgdXNlKCkKKyAg
ICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
U3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dw
ck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAjZGVmaW5lIERGR19U
WVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5cGVzUGFz
c2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgX2R0
Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2MjVjYTBlYTZkNy4uMDdhZGQxOTBhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtNDE4Niw3ICs0MTg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkgdXNlZCBpbiA2NC1i
aXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgSXNCaWdJbnQ6
CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNCaWdJbnQgaXMgb25s
eSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0cnVlIGluIDY0IGJp
dCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1
czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDFlNjAyYTc1ODEyLi5lNjE3MTg1OTNhMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4LDcgKzEz
OCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAg
IGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjog
eworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jp
Z0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dw
cnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAgICB9CiAg
ICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
SlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNTRVJUKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcy
KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNw
ZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAgR1BSUmVn
IGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcsNjcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUs
IE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQg
PyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRh
a2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIs
IHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxs
c0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMUdQUik7
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51
bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQUik7Ci0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1i
ZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotICAgICAgICAKLSAg
ICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGls
ZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFr
ZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nhc2UubGluaygmbV9q
aXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICdpbnZlcnQn
IHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBE
b3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgaWYgKGxlZnQgPT0g
cmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYgKGxlZnQgaXMgQ2Vs
bCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAg
IGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50
cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFu
Y2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2Ug
dXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8vIFRoZSB0cmljayBp
cyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQg
d2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAg
ICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRz
IG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3Zl
IG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3Zl
KGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0
LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2NyYXRjaC5n
cHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1
bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJpdHMg
PSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNsb3dQYXRoQ2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAgICAgICAgIGJyYW5j
aDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFr
ZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxpbmsoJm1faml0KTsK
LSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIAorICAgICAgICAv
LyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQg
bGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIp
CisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkgaGF2ZSB0
byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9yIEhlYXBC
aWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAgICAgICAvLyBJ
bnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkg
b2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAgICAgLy8g
ICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAgLy8gMi4gU2luY2Ug
d2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAgICAg
ICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBz
ZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElmIGF0IGxlYXN0IG9u
ZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAgICAgLy8g
ICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcg
d2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vs
c2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vu
ZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1
bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNl
SnVtcCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFu
Y2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVy
bywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChub3RUYWtlbik7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJp
Y3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0
aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZlUGVlcGhvbGVT
dHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEpTVmFs
dWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGFy
ZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5n
cHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwpAQCAtNDI4LDMzICs0NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICB1
bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIG1faml0
Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOworICAgIC8q
IEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFsc2UpOgor
ICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8g
c2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQp
CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENl
bGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0
OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNlczsKIAot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChy
ZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNo
SWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0subGluaygmbV9q
aXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJZkludDMy
KGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJl
cihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwot
Ci0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJ
VENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRH
UFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAg
IHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJl
Z3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91
YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2Yg
dGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJ
bnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1
ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJm
bG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51
bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAg
ICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQ
Uik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7
CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMp
LCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJlc3VsdEdQ
UiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJp
dHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1BhdGhDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBtX2ppdC5jb21w
YXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGls
ZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMy
IHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBj
ZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2UgZG9uJ3Qgc3Vw
cG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGgg
b3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3Ry
aW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNoZXMsIHdl
IGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8gMS4gKGxlZnQg
aXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkg
aXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAg
IC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmlnaHQpIGlz
IENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMg
d2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAgSWYgYXQgbGVh
c3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgIC8v
ICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhlcicgdGFn
IHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShCSUdJTlQz
MikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UK
KyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5kaWYKKyAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKSk7CiAK
LSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVydCksIHJlc3Vs
dEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywg
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwog
CisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQUik7CisKICAg
ICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwNCw2ICsxMDU5LDggQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVkZ2UsIERh
dGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNh
c2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAg
ICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEg
Zm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMTg0LDYgKzEyNDEsOCBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKICAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
KyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGVzZSBjYXNlcyBsb29rIGxpa2UgdGhleSBjb3VsZCBz
aGFyZSBjb2RlLgorICAgIC8vIExvb2sgYXQgZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwgZm9y
IGFuIGV4YW1wbGUuCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewogICAgICAgICBHUFJSZWcg
Z3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTIzNSw2ICsxMjk0LDggQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFG
b3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAt
MTMxMiw2ICsxMzczLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNl
IERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAg
ICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZv
cm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMyMCw2ICsxMzgzLDEyNiBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAg
ICB9CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAoU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAg
ICAvLyBJIGlubGluZWQgc3BlY3VsYXRlSGVhcEJpZ0ludCBiZWNhdXNlIGl0IHdvdWxkIGJlIGlu
Y29ycmVjdCB0byBjYWxsIGl0IGhlcmUgaWYgaXQgZGlkIEpTVmFsdWVPcGVyYW5kIC8gU3BlY3Vs
YXRlWFhYT3BlcmFuZCwKKyAgICAvLyBhcyBpdCB3b3VsZCBjb25mdXNlIHRoZSBERkcgcmVnaXN0
ZXIgYWxsb2NhdG9yLgorICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywgZWRnZSwgflNwZWND
ZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KHZh
bHVlUmVncy5ncHIoKSkpOworICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICBub3RD
ZWxsLmxpbmsoJm1faml0KTsKKyAgICBERkdfVFlQRV9DSEVDSyh2YWx1ZVJlZ3MsIGVkZ2UsIFNw
ZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50MzIsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzIodmFs
dWVSZWdzLmdwcigpLCB0ZW1wR1BSKSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7Cit9CisKK0dQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sK
KyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRlci5m
aWx0ZXIodmFsdWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgewor
ICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
KyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOworCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBK
U1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAg
ICAgICBBU1NFUlQoanNWYWx1ZS5pc0JpZ0ludDMyKCkpOworICAgICAgICAgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKSks
IGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisK
KyAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAoc3BpbGxGb3Jt
YXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRCaWdJbnQzMiwg
c3BpbGxGb3JtYXQpOworCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKworICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEJpZ0ludDMyKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vdCB5ZXQgaW1wbGVt
ZW50ZWQgdGhpcworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTQmlnSW50MzIp
IHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICAgICAgfQorCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1f
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsK
KyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsK
KyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdw
cik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CisgICAgICAgICAgICBHUFJSZWcgdGVt
cEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIGZhaWx1cmVDYXNlcyk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgICAg
IH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpT
QmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZv
cm1hdEpTQmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAg
ICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Cisg
ICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0
YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFw
aCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBkYXRhIGZvcm1hdCIpOworICAgICAgICByZXR1
cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0RXF1YWxpdHkoRWRnZSBvYmpl
Y3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU2LDYgKzE3MzksNjEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSogbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKworICAgIEdQUlJlZyBv
cDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2Ug
dGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRp
dGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgdGVtcEdQUik7Cisg
ICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisgICAgICAgIG1faml0Lm1vdmUo
b3AyR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIHRlbXBHUFIsIHJlc3VsdEdQ
UiwgcmVzdWx0R1BSKTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9v
bCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKK30KKwordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSogbm9k
ZSwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZGl0aW9uKQoreworICAgIC8vIE90aGVyIGNvbmRpdGlvbnMgd291bGQgcmVxdWlyZSB1bmJveGlu
ZyB0aGUgQmlnSW50MzIgdG8gZ2V0IGNvcnJlY3QgcmVzdWx0cyBvbiBuZWdhdGl2ZSBudW1iZXJz
LgorICAgIEFTU0VSVChjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IGNvbmRp
dGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpOworCisgICAgQmFzaWNCbG9jayogdGFr
ZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxv
Y2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsK
KworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2Vu
IGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRh
a2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2gu
CisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJ
VENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0g
dGFrZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1w
OworICAgIH0KKworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgYnJhbmNoNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIo
KSwgdGFrZW4pOworICAgIGp1bXAobm90VGFrZW4pOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2Rl
KQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAg
LTQwODcsNiArNDMyNSwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNCaWdJbnQ6IHsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuZ3ByKCkpOworCisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayksIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LmFuZDY0KHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdEdQUik7CisgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGNvbnRpbnVhdGlvbiA9IG1faml0Lmp1bXAoKTsKKworICAgICAgICBpc0NlbGwu
bGluaygmbV9qaXQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1Zh
bHVlUmVncygpOworICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZXN1bHRHUFIp
OworCisgICAgICAgIGNvbnRpbnVhdGlvbi5saW5rKCZtX2ppdCk7CisgICAgICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IFJldXNlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA3NWYzYTA2YjBmYy4uNmEyNTRjZTdj
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAgICAgICAgY2Fz
ZSBWYWx1ZUJpdFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWF5YmUgc3Vw
cG9ydCB0aGUgY2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJpZ0ludCBhbmQg
dGhlIG90aGVyIGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2Up
CiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDhlZjcz
YjZmMmU4Li5hYjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBv
dXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCaWdJbnRVc2U6
Ci0gICAgICAgIG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6Cisg
ICAgICAgIG91dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnByaW50KCJCaWdJ
bnQzMiIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0gVXNlS2luZCB7
CiAgICAgS25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8vIFRoaXMgYml6
YXJyZSB0eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRlY29kZSBndWFy
YW50ZWUgdGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90IG9iamVjdHMp
LgogICAgIFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50VXNlLAorICAg
IEhlYXBCaWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVjdFVzZSwKICAg
ICBNYXBPYmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1NCwxMiBAQCBp
bmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAg
ICAgIHJldHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2UgU3ltYm9sVXNl
OgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBj
YXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBI
ZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBC
aWdJbnQzMlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBjYXNlIFByb21p
c2VPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICBjYXNl
IERhdGVPYmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29sIG1heUhhdmVU
eXBlQ2hlY2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVj
ayhraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5kKQotewot
ICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bklu
dDMyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAg
ICBjYXNlIEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgIGNhc2UgRG91
YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERvdWJsZVJlcEFu
eUludFVzZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5k
KQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlubGluZSBib29s
IGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgY2FzZSBLbm93
blN0cmluZ1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDg5YjA2
ZDU4ZWIuLjQ2NzlkMTg3NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yNjEsNiArMjYxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAg
ICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6
CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNl
IElzT2JqZWN0T3JOdWxsOgpAQCAtNDg0LDcgKzQ4NSw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVz
ZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNl
OgorICAgICAgICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNh
c2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1h
cE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZi
Yy4uYzBmNGYyYjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1v
blZhbHVlcy5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxp
emVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAg
ICBpbnRQdHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDMpOwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgYmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9u
VmFsdWVzLmgKaW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEwIEBAIHB1Ymxp
YzoKICAgICBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGludFB0
ckVpZ2h0IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9Owot
ICAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsgbnVsbHB0
ciB9OworI2VuZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAg
Y29uc3QgdW5zaWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVlIGJyYW5jaFdl
aWdodHMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggOThkMmEwZWFlYTIuLmYxOTJhZmI5Mjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMzU4LDYgKzEzNTgs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAgY29tcGls
ZUlzTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoK
KyAgICAgICAgICAgIGNvbXBpbGVJc0JpZ0ludCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgY29tcGlsZU51bWJlcklzSW50
ZWdlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTQxLDExICsyMTQ0LDI4IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsK
KworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsK
KyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsK
KworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRlQWRkKHVu
Ym94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihy
ZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKworICAgICAg
ICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJp
Z0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjE2MiwxMSArMjE4MiwyOCBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7
CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7
CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7
CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZVN1Yih1
bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24o
cmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAg
ICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxODMsMTEgKzIy
MjAsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9k
ZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJp
Z0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94Qmln
SW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5z
cGVjdWxhdGVNdWwodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVz
c1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmln
aW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1
bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyOTEsNyArMjM0NSwy
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwot
ICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3Qgc3VwcG9ydGVkIGJ5IHRoZSBJQyB5ZXQuCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hp
bGQyKCkpOwogCkBAIC0yNTYwLDExICsyNjI4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
aWxlVmFsdWVEaXYoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAv
LyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25EaXZCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uRGl2SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yNjM5LDE4ICsyNzA4LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21waWxlVmFsdWVNb2QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAg
ICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIC8vIEZJWE1FOiBhZGQgYSBCaWdJbnQzMiBmYXN0IHBhdGggaGVyZQorICAgICAgICBpZiAo
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25N
b2RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9k
SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAg
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKLSAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UsIG1fbm9kZS0+
YmluYXJ5VXNlS2luZCgpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZU1vZCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQpAQCAtMjgxNSwxNyArMjg4NywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZh
bHVlUG93KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSBleHBvbmVudCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8g
RklYTUU6IG1heWJlIGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBiYXNlID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5
cGUoKSwgb3BlcmF0aW9uUG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBleHBvbmVudCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVz
ZSkpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3Vs
YXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlUG93LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBA
IC0zMjA2LDkgKzMyODIsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE5v
dCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0Tm90Qmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxpZXMgb24g
ZGV0YWlscyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxsIGhhdmUg
dG8gYmUgdXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMlRhZyA9PSAweDEyKTsKKyAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7Cisg
ICAgICAgICAgICB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYw
MDAwOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihvcGVyYW5kLCBt
X291dC5jb25zdEludDY0KG1hc2tGb3JCaWdJbnQzMkJpdHMpKTsKKyAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
b3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMjYsMTEgKzMzMTYsMjMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXBpbGVWYWx1ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkg
ewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNp
bmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBtX291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0NiwxMSArMzM0OCwyMyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBu
ZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5k
CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVmdCwgcmlnaHQpOwor
ICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVh
cEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJ
bnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjYsMTEgKzMzODAsMjMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAgICAgewogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmVzdWx0TWlzc2luZ1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2luZ1RhZywgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0zMjg2LDExICszNDEyLDI5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJV
c2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZQor
ICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVzZSBhIHJpZ2h0LXNo
aWZ0IGJ5IGEgbmVnYXRpdmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3IgQmlnSW50cy4KKyAg
ICAgICAgICAgIC8vIFNvIGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZsb3cuCisKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAg
ICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8g
VVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMzMDIsMjQgKzM0NDYs
MjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmFTaHIoCiAgICAg
ICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJp
dEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7
CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1f
b3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBC
aXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0
IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0TFNoaWZ0KCkKICAg
ICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAgIGxvd0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9k
ZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0
LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkp
KSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0
IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAg
CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFzdCBwYXRo
IGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEhl
YXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMzMzNiw3ICszNDgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBzZXRJ
bnQzMihtX291dC5sU2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSks
Ci0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1f
b3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkg
ZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4g
dGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBp
bGVVSW50MzJUb051bWJlcigpCkBAIC03NDA0LDYgKzc1NDksOSBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgaWYgKGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkubV90eXBlICYg
KFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBub3ROdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyNl
bmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygp
OwpAQCAtNzQxMywxMCArNzU2MSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBub3RO
dW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RCaWdJbnQzMikpOwor
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2VuZGlmCiAgICAgICAg
ICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQx
KCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsKIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2go
aXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29u
dGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHNl
dmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVtZXJpYyBzdGlsbCBl
eGlzdHMuCkBAIC04NDg2LDcgKzg2MzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHx8IG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVh
cEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODUyOSw3ICs4Njg0LDEwNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIC8vIE5v
IG5lZWQgdG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBib3RoIHNp
ZGVzCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQp
OworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0lu
dFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0IHdpdGggaWYg
KGxlZnQgPT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdodCBjaGVja3Mg
KHNlZSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAgICAvLyBUaGUg
Y29kZSB0aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29k
ZToKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIobGVmdCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJp
Z0ludChyaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVh
bHNUb0ludDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGlmIChp
c0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0JpZ0ludDo6
ZXF1YWxzVG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAgICAgQ0hFQ0so
aXNIZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6
OmVxdWFscyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0ludDMyID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNOb3RCaWdJbnQz
MiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAvLyBJbnNlcnRzIGEgY2hlY2sg
dGhhdCBhIHZhbHVlIGlzIGEgSGVhcEJpZ0ludCwgYXNzdW1pbmcgb25seSB0aGF0IHdlIGtub3cg
aXQgaXMgbm90IGEgQmlnSW50MzIKKyAgICAgICAgICAgIGF1dG8gY2hlY2tJc0hlYXBCaWdJbnQg
PSBbJl0oTFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1ZSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGhpZ2hWYWx1ZSwgU3BlY0hlYXBCaWdJ
bnQpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtYXlIYXZlVHlwZUNoZWNrKGhpZ2hW
YWx1ZS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGNoZWNrRmFpbGVk
ID0gaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKGxvd1ZhbHVlLCB+U3BlY0JpZ0lu
dDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kT1NSRXhpdChCYWRUeXBlLCBqc1ZhbHVl
VmFsdWUobG93VmFsdWUpLCBoaWdoVmFsdWUubm9kZSgpLCBjaGVja0ZhaWxlZCwgbV9vcmlnaW4p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChpc0JpZ0ludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1
bnN1cmUobGVmdElzQmlnSW50MzIpLCB1bnN1cmUobGVmdElzTm90QmlnSW50MzIpKTsKKworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhsZWZ0SXNCaWdJ
bnQzMiwgYm90aEFyZUJpZ0ludDMyKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0lu
dDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKGJvdGhBcmVC
aWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyLCBvbmx5TGVmdElzQmlnSW50MzIpOworICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0gbV9vdXQuYW5jaG9y
KG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlMZWZ0SXNCaWdJbnQz
MiwgbGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgY2hlY2tJc0hlYXBCaWdJbnQocmln
aHQsIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0g
dW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExl
ZnRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCByaWdodCwgdW5ib3hlZExlZnQpKSk7CisgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05v
dEJpZ0ludDMyLCBsZWZ0RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgY2hlY2tJc0hlYXBCaWdJ
bnQobGVmdCwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9v
dXQuZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUobGVmdEVxdWFsc1JpZ2h0KSwgdW5zdXJlKGxl
ZnRJc0hlYXBCaWdJbnQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdEVxdWFs
c1JpZ2h0LCBsZWZ0SXNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
c3VsdExlZnRFcXVhbHNSaWdodCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxlZnRJc0hlYXBCaWdJbnQsIHJpZ2h0SXNCaWdJbnQzMik7CisgICAgICAgICAg
ICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdodCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MigpKSksIHVuc3VyZShyaWdodElzQmlnSW50MzIpLCB1bnN1cmUocmlnaHRJc05vdEJpZ0ludDMy
KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNCaWdJbnQzMiwgcmlnaHRJ
c05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJp
Z0ludDMyKHJpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0SXNC
aWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90Qmln
SW50MzIsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBjaGVja0lzSGVhcEJpZ0ludChyaWdo
dCwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmln
SW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcg
aW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEhlYXBCaWdJ
bnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCBy
aWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0Qm90aEFyZUJpZ0ludDMyLCByZXN1
bHRMZWZ0SXNCaWdJbnQzMiwgcmVzdWx0TGVmdEVxdWFsc1JpZ2h0LCByZXN1bHRSaWdodElzQmln
SW50MzIsIHJlc3VsdEJvdGhIZWFwQmlnSW50KSk7CisKKyAgICAgICAgICAgIG1faW50ZXJwcmV0
ZXIuZmlsdGVyKG1fbm9kZS0+Y2hpbGQxKCksIFNwZWNCaWdJbnQpOworICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5maWx0ZXIobV9ub2RlLT5jaGlsZDIoKSwgU3BlY0JpZ0ludCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAg
ICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZl
ckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwpAQCAtODYxMiwxMSArODg2NSwxMSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Yg
c3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRd
W0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3Ig
YmlnIGludHMKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlh
bGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04NzAyLDYgKzg5NTUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklY
TUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyIGhlcmUsIHNlZSB0aGUgREZHU3Bl
Y3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKTsKICAgICAgICAgbm9uU3BlY3VsYXRp
dmVDb21wYXJlKAogICAgICAgICAgICAgWyZdIChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7
CkBAIC0xMDY2NSw3ICsxMDkxOSwzNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGko
SW50MzIsIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0LCBwYXRjaHBvaW50UmVzdWx0KSk7CiAgICAg
fQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkK
KyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNl
LCBpc0NlbGxDYXNlKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBmaWx0ZXIgdGhlIHBy
b3ZlblR5cGUgdG8gaW5jbHVkZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2UgYXJlIG5vdCBkZWFs
aW5nIHdpdGggYSBjZWxsCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBt
X291dC5hbmNob3IoaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0NlbGxXaXRoVHlwZSh2YWx1ZSwgbV9ub2Rl
LT5xdWVyaWVkVHlwZSgpLCBtX25vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSwgcHJvdmVu
VHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVz
dWx0KSk7CisgICAgfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKKyAgICBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIEFMV0FZU19JTkxJTkUgdm9pZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsK
KyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggQmlnSW50MzIsIHdlIHNob3Vs
ZCBqdXN0IGVtaXQgSXNDZWxsV2l0aFR5cGUoSGVhcEJpZ0ludCkgaW5zdGVhZC4KKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisjZW5kaWYKICAgICB2b2lkIGNv
bXBpbGVJc0NlbGxXaXRoVHlwZSgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpAQCAtMTQzOTUsOSArMTQ2NzksMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGVtaXRCaW5hcnlTbmlwcGV0KEpfSklUT3BlcmF0aW9uX0dKSiBzbG93
UGF0aEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAg
ICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKIAogICAg
ICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDQ2
Myw4ICsxNDc0OSwxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1f
bm9kZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwogCiAgICAg
ICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkucmVzdWx0VHlwZSgpKTsKQEAgLTE1MDc2
LDcgKzE1MzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSW1w
bGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgICAgICAg
ICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgICAgICAgICAgLy8gICAgIGlmICh2YWx1ZSBp
cyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgICAgICAgICAgLy8gICAgIGlmICh2YWx1
ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAgICAgICAgIC8vICAgICAg
ICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgICAgICAgICAvLyAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11
bmRlZmluZWQKQEAgLTE1MDg2LDYgKzE1Mzc1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8v
ICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgICAgICAgICAvLyB9IGVsc2Ug
aWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5i
b3hEb3VibGUodmFsdWUpCisgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0lu
dDMyKSB7CisgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gKHZhbHVlICE9IEJpZ0ludDMyVGFn
KQogICAgICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSB2
YWx1ZSA9PSBqc1RydWUKICAgICAgICAgICAgIC8vIH0KQEAgLTE1MDkzLDEzICsxNTM4NCwxNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzdHJpbmdDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0ludENhc2UgPSBtX291dC5uZXdC
bG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nT3JCaWdJbnRDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGhlYXBCaWdJbnRDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ05v
ckhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3REb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJs
b2NrPiByZXN1bHRzOwpAQCAtMTUxMTMsMjAgKzE1NDA4LDIwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIHN0cmluZ0Nh
c2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIGlzQmlnSW50
KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0gU3BlY1N0cmluZykpLAotICAg
ICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ09yQmlnSW50
Q2FzZSkpOworICAgICAgICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShl
ZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAgICAgICAgICB1bnN1cmUo
aGVhcEJpZ0ludENhc2UpLCB1bnN1cmUobm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UpKTsKIAot
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgYmlnSW50Q2FzZSk7CisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdDYXNlLCBoZWFwQmlnSW50Q2FzZSk7CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQubm90RXF1YWwodmFsdWUs
IHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmcobV9ncmFwaC5tX3ZtKSkpKSk7CiAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGJpZ0ludENhc2UsIG5vdFN0cmluZ09yQmlnSW50Q2FzZSk7CisgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhoZWFwQmlnSW50Q2FzZSwgbm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UpOwogICAg
ICAgICAgICAgTFZhbHVlIG5vblplcm9CaWdJbnQgPSBtX291dC5ub3RaZXJvMzIoCiAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUodmFsdWUsIG1faGVhcHMuSlNCaWdJbnRf
bGVuZ3RoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iobm9uWmVy
b0JpZ0ludCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdPckJpZ0ludENhc2Us
IG5vdENlbGxDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ05vckhl
YXBCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgaXNUcnV0aHlP
YmplY3Q7CiAgICAgICAgICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJ
c1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAgICBpc1RydXRoeU9iamVjdCA9IG1fb3V0LmJv
b2xlYW5UcnVlOwpAQCAtMTUxNjksOCArMTU0NjQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB1bmJveERvdWJsZSh2YWx1ZSksIG1fb3V0LmNvbnN0RG91YmxlKDApKTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihkb3VibGVJc1RydXRoeSkpOwogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91YmxlQ2FzZSwgYmlnSW50MzJDYXNlKTsKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBpc0JpZ0ludDMyKHZhbHVl
LCBwcm92ZW5UeXBlKGVkZ2UpICYgflNwZWNDZWxsKSwKKyAgICAgICAgICAgICAgICB1bnN1cmUo
YmlnSW50MzJDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhiaWdJbnQzMkNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAg
ICBMVmFsdWUgYmlnSW50MzJOb3RaZXJvID0gbV9vdXQubm90RXF1YWwodmFsdWUsIG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcihiaWdJbnQzMk5vdFplcm8pKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90QmlnSW50MzJDYXNlLCBjb250aW51YXRpb24pOworI2Vsc2UKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisjZW5kaWYKICAgICAg
ICAgICAgIExWYWx1ZSBtaXNjSXNUcnV0aHkgPSBtX291dC5lcXVhbCgKICAgICAgICAgICAgICAg
ICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUp
KSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1pc2NJc1RydXRo
eSkpOwpAQCAtMTU3NzUsMTMgKzE2MDg0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIC8vICAgICAg
ICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8g
ICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2lu
dCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAg
IC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCiAgICAgICAgIC8vICAgICB9CiAgICAgICAgIC8v
IH0gZWxzZSBpZiAoaXMgbnVtYmVyKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gbnVtYmVyCisg
ICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVy
biBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBudWxsKSB7CiAgICAgICAgIC8vICAg
ICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9vbGVhbikgewpAQCAt
MTU4MDksNiArMTYxMjAsOSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxs
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG51bWJlckNhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3ROdW1iZXJDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgTEJh
c2ljQmxvY2sgbm90TnVsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBib29sZWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IHVuZGVmaW5lZENhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTU4NjEsNyArMTYxNzUsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIGJpZ0lu
dENhc2UpOwogICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBpc0JpZ0ludCh2YWx1
ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmlu
ZykpLAorICAgICAgICAgICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAm
IChTcGVjQ2VsbCAtIFNwZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCiAgICAgICAgICAgICB1bnN1
cmUoYmlnSW50Q2FzZSksIHVuc3VyZShzeW1ib2xDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oYmlnSW50Q2FzZSwgc3ltYm9sQ2FzZSk7CkBAIC0xNTg3Nyw4ICsxNjE5MSwxNSBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgbm90
TnVtYmVyQ2FzZSk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6TnVtYmVyKTsKLSAgICAg
ICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJl
ckNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMy
KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIH5TcGVjQ2VsbCksIHVuc3VyZShiaWdJbnRDYXNl
KSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dEJpZ0ludDMyQ2FzZSwgbm90TnVsbENhc2UpOworI2Vsc2UKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90TnVtYmVyQ2FzZSwgbm90TnVsbENhc2UpOworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBp
c051bGw7CiAgICAgICAgIGlmIChwcm92ZW5UeXBlKGNoaWxkKSAmIFNwZWNPdGhlcikKICAgICAg
ICAgICAgIGlzTnVsbCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OlZhbHVlTnVsbCkpOwpAQCAtMTY1NzYsMTUgKzE2ODk3LDMzIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZhbHVlIGxvd0JpZ0ludChFZGdlIGVk
Z2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICBMVmFsdWUgbG93SGVhcEJpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCht
b2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKTsKIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdl
LCBtb2RlKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIHJlc3VsdCk7CisgICAgICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGxvd0JpZ0lu
dDMyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2Rl
ID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQz
MlVzZSk7CisKKyAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHJlc3VsdCksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RC
aWdJbnQzMihyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAg
ICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICByZXR1cm4gbV9vdXQuYmlnSW50
MzJaZXJvOworICAgIH0KKyNlbmRpZgorCiAgICAgTFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBA
IC0xNjc3MCw3ICsxNzEwOSw3MyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
b3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBJbnQ2NCksIG1fbnVtYmVyVGFnKTsKICAgICB9
Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGlzQmlnSW50MzIoTFZhbHVl
IGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAg
ICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQmlnSW50MzIp
KQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFs
KAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSBpc05vdEJpZ0ludDMyKExWYWx1
ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAg
ICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQz
MikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICByZXR1cm4gbV9vdXQubm90
RXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIHVuYm94QmlnSW50MzIo
TFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQuY2FzdFRvSW50MzIo
bV9vdXQubFNocihqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KDE2KSkpOworICAgIH0KKyAgICBM
VmFsdWUgYm94QmlnSW50MzIoTFZhbHVlIGludDMyVmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gbV9vdXQuYml0T3IoCisgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dChpbnQz
MlZhbHVlLCBCMzo6SW50NjQpLCBtX291dC5jb25zdEludDY0KDE2KSksCisgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1
ZSBpc05vdEFueUJpZ0ludChMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNw
ZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZh
bHVlKHR5cGUsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAg
ICAgICAgLy8gaWYgKGlzQmlnSW50MzIpCisgICAgICAgIC8vICAgcmV0dXJuIGZhbHNlCisgICAg
ICAgIC8vIGlmICghaXNDZWxsKQorICAgICAgICAvLyAgIHJldHVybiB0cnVlOworICAgICAgICAv
LyByZXR1cm4gIWlzSGVhcEJpZ0ludAorICAgICAgICBMQmFzaWNCbG9jayBpc0JpZ0ludDMyQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90QmlnSW50MzJD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKGpzVmFsdWUs
IHR5cGUpLCB1bnN1cmUoaXNCaWdJbnQzMkNhc2UpLCB1bnN1cmUoaXNOb3RCaWdJbnQzMkNhc2Up
KTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQmln
SW50MzJDYXNlLCBpc05vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
dHVybkZhbHNlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc05vdEJp
Z0ludDMyQ2FzZSwgaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
ZmlsdGVyIHRoZSB0eXBlIHBhc3NlZCB0byBpc0NlbGwgdG8gYWNjb3VudCBmb3IgdGhlIHByZXZp
b3VzIHRlc3QgdGhhdCB0b2xkIHVzIHdlIGFyZSBkZWZpbml0ZWx5IG5vdCBhIEJpZ0ludDMyLgor
ICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNDZWxs
Q2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNOb3RDZWxsQ2FzZSwgaXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVy
blRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwg
Y29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuSXNOb3RIZWFwQmln
SW50ID0gbV9vdXQuYW5jaG9yKGlzTm90SGVhcEJpZ0ludChqc1ZhbHVlKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJu
RmFsc2UsIHJldHVyblRydWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlm
IC8vIFVTRShCSUdJTlQzMikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFs
dWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlm
IChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3Bl
Y01pc2MpKQpAQCAtMTcwODIsOCArMTc0ODcsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBC
b29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJV
c2U6CisgICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFu
eUJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmlu
Z1ZhclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3
MjY5LDE4ICsxNzY4MiwzOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQz
Mih2bSgpLnN5bWJvbFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05v
dEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQor
ICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNIZWFwQmlnSW50KSkKKyAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGVmYXVsdFRvRmFs
c2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKGlzQ2VsbCh2YWx1ZSwgdHlwZSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGNvbnRp
bnVhdGlvbikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0
dXJuRm9yQ2VsbCA9IG1fb3V0LmFuY2hvcihpc0hlYXBCaWdJbnQodmFsdWUsIHR5cGUpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQu
cGhpKEludDMyLCBkZWZhdWx0VG9GYWxzZSwgcmV0dXJuRm9yQ2VsbCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludChMVmFsdWUgY2Vs
bCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNCaWdJ
bnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNw
ZWNDZWxsLCB+U3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAg
ICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50MzIodm0oKS5iaWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUg
aXNCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
KyAgICBMVmFsdWUgaXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1
ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQp
KQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFs
KAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKSwKQEAgLTE3NzM4LDE1ICsxODE3MSwyOCBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxh
dGVTeW1ib2woZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxh
dGVCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBC
aWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJp
Z0ludChjZWxsKSk7CisgICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVk
Z2UpCiAgICAgewotICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVk
Z2UsIFNwZWNCaWdJbnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0
ZUJpZ0ludChFZGdlIGVkZ2UpCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRl
QmlnSW50MzIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2Us
IGxvd0NlbGwoZWRnZSkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2Us
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMih2YWx1ZSkp
OworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7
CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwg
ZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RBbnlCaWdJbnQodmFsdWUpKTsKICAgICB9CisjZW5kaWYK
IAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxs
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcAppbmRleCBkMzcyMjc3ZmMwNi4uM2M5MTM3ZWY3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTI4Miw3ICsyODIs
NyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklU
Q29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4
aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAgICAgIGV4aXQubV9kZXNj
cmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhH
UFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQ
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSwg
R1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFsaXplIGFsbCBvYmplY3Rz
LiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IGFiM2U5YzYy
OWFkLi4yNTg5ZTJjZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBTdHJpbmcgSGVhcFNu
YXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2Rl
Jik+IGFsbG93TgogCiAgICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNzID0gMDsKICAgICAgICAg
dW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9kZS5jZWxsLT5pc1N0cmlu
ZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAgaWYgKCFub2RlLmNlbGwt
PmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAg
ICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vZGVGbGFnczo6SW50
ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGlu
ZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJN
YXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJs
ZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAppbmRleCA2
Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAj
aW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1ZjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0
SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAgaWYgKGNlbGwtPmlzQmln
SW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2
bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsK
KyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYXNIZWFw
QmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM0ZDlj
NzI3ZTA3Li5hZDRiMjE1YzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdW5zaWduZWQgc2l6
ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50
cywgdWludDMyX3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNh
c2UgU3ltYm9sVHlwZToKLSAgICBjYXNlIEJpZ0ludFR5cGU6CisgICAgY2FzZSBIZWFwQmlnSW50
VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
SW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsICBhcmd1bWVu
dHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGUzMDllY2ZjNTUxLi5jODlmNjg1ZmY3
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApA
QCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVl
VG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1w
bGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYg
KHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1
ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMg
SGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAg
IC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVy
YWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZQogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERv
dWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAg
Ly8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2Ugewog
ICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyAr
NzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4o
Vk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5n
KHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50
KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhl
YXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEs
NyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1
YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAg
ZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNI
ZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQ
UigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1
bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CkBAIC03NTIsNiArNzU0LDE1IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAogICAgIG5vdERv
dWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGlzTm90QmlnSW50
MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHJlc3Vs
dCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjb21wYXJlNjQoaW52ZXJ0ID8gTm90
RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRy
dWUpLCByZXN1bHQpOwogI2Vsc2UKQEAgLTc2Nyw3ICs3NzgsNyBAQCBBc3NlbWJseUhlbHBlcnM6
Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVS
ZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cg
c3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2
YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUg
aXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQg
PSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBl
dmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC03NzcsNiArNzg4LDgg
QEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFs
dWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveElu
dDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8g
ICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1
ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFs
dWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVl
CiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5OSw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3Qg
QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAK
ICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNT
dHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNC
aWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNI
ZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAg
ICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VS
VChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQ
UlJlZyk7CkBAIC04MTcsNyArODMwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB0
cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5w
YXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIoanNFbXB0eVN0cmluZyh2bSkpKSk7CiAgICAgZG9u
ZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFw
QmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6
b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCkBAIC04NDIs
NiArODU1LDE1IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgfQogCiAgICAgbm90RG91
YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQz
MiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgc2NyYXRj
aCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGlu
dmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaDY0KGludmVy
dCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggM2Q3ZWY3Yzc3MjcuLmVkMDczZTc2ZGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Mjks
NyArOTI5LDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihy
ZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdwciwgR1BSUmVnIHRl
bXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgewor
ICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9kZSk7CisgICAgICAg
IEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1w
R1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJldHVybiBiaWdJbnQz
MjsKKyAgICB9CisgICAgSnVtcExpc3QgYnJhbmNoSWZOb3RCaWdJbnQzMihHUFJSZWcgZ3ByLCBH
UFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykK
KyAgICB7CisgICAgICAgIEp1bXBMaXN0IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChi
cmFuY2hJZk51bWJlcihncHIsIG1vZGUpKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5j
aElmQmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICByZXN1bHQu
YXBwZW5kKGp1bXAoKSk7CisgICAgICAgIGJpZ0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3RO
dW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICBBU1NFUlQo
dGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOwor
ICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BS
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0lu
dDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3Mu
Z3ByKCksIHRlbXBHUFIpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFT
U0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQ
Uik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRl
bXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQklH
SU5UMzIpCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhh
dCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNo
SWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOCgK
QEAgLTk1MSwxMyArOTkwLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBicmFu
Y2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBy
ZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1
dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2VsbEdQUikg
eyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBi
cmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBl
KGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9CiAg
ICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkJpZ0lu
dChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0ludFR5
cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFu
Y2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxs
R1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0ludChH
UFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBCaWdJ
bnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1bXAg
YnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RU
eXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTM1Niw2ICsxMzk2LDE5
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHVu
Ym94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIHVyc2hpZnQ2NCh0cnVzdGVk
SW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgIH0KKworICAgIHZvaWQgYm94Qmln
SW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGxzaGlmdDY0KHRydXN0ZWRJbW0zMkZv
clNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgICAgIG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSwgZ3ByKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCkBAIC0xNzE1LDcgKzE3NjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICAgICAg
fQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8gICAg
ICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2ludCkg
eworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gc3ltYm9sCkBAIC0xNzI2LDYgKzE3NzksOCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9v
bGVhbikgewogICAgICAgICAvLyAgICAgcmV0dXJuIGJvb2xlYW4KKyAgICAgICAgLy8gfSBlbHNl
IGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAgICAg
ICAvLyB9IGVsc2UgewogICAgICAgICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAv
LyB9CkBAIC0xNzU3LDEwICsxODEyLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBub3RTdHJpbmcu
bGluayh0aGlzKTsKIAotICAgICAgICBKdW1wIG5vdEJpZ0ludCA9IGJyYW5jaElmTm90QmlnSW50
KGNlbGxHUFIpOworICAgICAgICBKdW1wIG5vdEhlYXBCaWdJbnQgPSBicmFuY2hJZk5vdEhlYXBC
aWdJbnQoY2VsbEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBmYWxz
ZSk7CiAKLSAgICAgICAgbm90QmlnSW50LmxpbmsodGhpcyk7CisgICAgICAgIG5vdEhlYXBCaWdJ
bnQubGluayh0aGlzKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpTeW1ib2wsIGZhbHNl
KTsKICAgICAgICAgCiAgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKQEAgLTE3NzYsNiArMTgz
MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXAgbm90Qm9vbGVhbiA9IGJyYW5jaElmTm90Qm9v
bGVhbihyZWdzLCB0ZW1wR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCb29sZWFu
LCBmYWxzZSk7CiAgICAgICAgIG5vdEJvb2xlYW4ubGluayh0aGlzKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgSnVtcCBub3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsKKyAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpC
aWdJbnQsIGZhbHNlKTsKKyAgICAgICAgbm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZgog
ICAgICAgICAKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpVbmRlZmluZWQsIHRydWUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOS4uZDVlYTk5
ZjMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM3MCw2ICszNzAsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9p
c191bmRlZmluZWRfb3JfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2Jvb2xlYW4pCiAg
ICAgICAgIERFRklORV9PUChvcF9pc19udW1iZXIpCisgICAgICAgIERFRklORV9PUChvcF9pc19i
aWdfaW50KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJTkVf
T1Aob3BfaXNfY2VsbF93aXRoX3R5cGUpCiAgICAgICAgIERFRklORV9PUChvcF9qZXFfbnVsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxLi5kMDQzZmNlYjEwYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MjgsNiArNTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzc4NjczZTE4YWMu
LjY3YjAwYjBhMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
Yy5jcHAKQEAgLTQ3Niw2ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBVbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRh
dGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9
IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rp
b25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CisgICAgLy8gRklY
TUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRl
LCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDRmFzdDxP
cE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdh
dGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogfQogCkBAIC00ODQsNiArNDg1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
CiAgICAgSklUTmVnSUMqIG5lZ0lDID0gYml0d2lzZV9jYXN0PEpJVE5lZ0lDKj4obV9pbnN0cnVj
dGlvblRvTWF0aElDLmdldChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKKyAgICAvLyBGSVhNRTogaXQg
d291bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNl
IHRoZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVtaXRNYXRoSUNTbG93PE9wTmVnYXRl
PihuZWdJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVk
T3B0aW1pemUsIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVn
YXRlT3B0aW1pemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAppbmRleCBmYzk0Y2EzNzI0OS4uY2ViNjAwZTdmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMjgzLDYgKzI4MywzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1i
ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIEpJVDo6ZW1p
dF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4o
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOworCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxs
KHJlZ1QwKTsKKworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayks
IHJlZ1QxKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDApOworICAgIGNvbXBhcmU2NChFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlZ1QwKTsKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKKworICAgIGlzQ2VsbC5saW5rKHRoaXMpOworICAgIGNvbXBhcmU4KEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KEhlYXBCaWdJbnRUeXBlKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzIHsgcmVnVDAgfSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QpOworfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKK05PX1JFVFVS
TiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAg
ICAvLyBJZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxXaXRo
VHlwZSBpbnN0ZWFkIG9mIGlzQmlnSW50LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisjZW5kaWYKKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtNTcwLDEy
ICs2MDEsNTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3JjMiA9IGJ5dGVjb2RlLm1fcmhzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3Jj
MSwgcmVnVDAsIHNyYzIsIHJlZ1QxKTsKLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAv
KiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6
CisgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290
byBzbG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3Vs
dCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMg
Q2VsbCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1
bHQ7CisgICAgKi8KKworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBE
b3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBv
ZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJ
ZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1Zh
bHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3Zl
cmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEg
bnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAor
ICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIG1v
dmUocmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAgbW92ZShUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAgICBhZGQ2NChy
ZWdUNSwgcmVnVDIpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDEpLCByZWdUNSk7CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisKKyAgICBjb21w
YXJlNjQoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDUpOworICAgIEp1bXAgZG9uZSA9IGJyYW5j
aFRlc3Q2NChOb25aZXJvLCByZWdUNSk7CisKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAg
Ly8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3Mg
YW5kIEJpZ0ludHMpLgorICAgIGFuZDY0KHJlZ1QxLCByZWdUMik7CisgICAgLy8gRklYTUU6IHdl
IGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0lu
dDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdz
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CisKKyAgICBkb25lLmxpbmso
dGhpcyk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEp
CisgICAgICAgIHhvcjY0KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xlYW4o
cmVnVDUsIEpTVmFsdWVSZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlZ1Q1KTsKKyNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCiAgICAgLy8gSnVtcCBz
bG93IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1Qw
LCByZWdUMik7CiAgICAgb3I2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmQ2VsbChyZWdUMikpOwotICAgIAorCiAgICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBh
IGRvdWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFu
ZCB0aGVuIHRlc3QKICAgICAvLyBpZiBpdCdzIGEgZG91YmxlLgogICAgIEp1bXAgbGVmdE9LID0g
YnJhbmNoSWZJbnQzMihyZWdUMCk7CkBAIC01OTIsNiArNjY0LDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBp
bGVPcFN0cmkKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwog
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX3N0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC02MTQsNiArNjg3LDQ1IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5cGUn
IHRvIGJlIFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91
YmxlKQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAg
ICAgZ290byB0YWtlbjsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisg
ICAgICAgZ290byBzbG93UGF0aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICovCisKKyAgICAv
LyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERv
dWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBi
ZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJl
cgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhl
biBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBo
aWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4g
MTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkg
ZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7Cisg
ICAgbW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxv
d2VzdE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBh
ZGQ2NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUp
OworICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92
ZU9yRXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9IGJyYW5jaDY0
KEVxdWFsLCByZWdUMCwgcmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVx
VHlwZTo6U3RyaWN0RXEpCisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdldCk7CisKKyAg
ICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgLy8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9uZSBp
cyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgorICAgIGFuZDY0KHJlZ1Qx
LCByZWdUMik7CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNp
c2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNs
b3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxs
KHJlZ1QyKSk7CisKKyAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJp
Y3RFcSkgeworICAgICAgICBhZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKKyAgICAgICAgYXJlRXF1
YWwubGluayh0aGlzKTsKKyAgICB9CisjZWxzZSAvLyBpZiAhVVNFKEJJR0lOVDMyKQogICAgIC8v
IEp1bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgbW92
ZShyZWdUMCwgcmVnVDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKQEAgLTYyNywxMSArNzM5
LDExIEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAgICAgSnVtcCByaWdodE9LID0gYnJhbmNo
SWZJbnQzMihyZWdUMSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsK
ICAgICByaWdodE9LLmxpbmsodGhpcyk7Ci0KICAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJp
Y3RFcVR5cGU6OlN0cmljdEVxKQogICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KEVxdWFsLCByZWdU
MSwgcmVnVDApLCB0YXJnZXQpOwogICAgIGVsc2UKICAgICAgICAgYWRkSnVtcChicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTY4Niw3ICs3OTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihzcmNWUmVnLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2Vs
bChyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlz
QmlnSW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMWMzMDc3NjlkYWEu
LjQ4NDAzMDBiMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCkBAIC0yODgsNiArMjg4LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJl
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUJv
b2woZHN0LCByZWdUMCk7CiB9CiAKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdf
aW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBXZSBlbWl0IGlzX2NlbGxfd2l0aF90
eXBlIGluc3RlYWQsIHNpbmNlIEJpZ0ludDMyIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IHBs
YXRmb3Jtcy4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSXNDZWxsV2l0aFR5cGU+KCk7CkBAIC04NjYsNyArODcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJh
bmNoSWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChy
ZWdUMCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwog
ICAgIEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZTE1
MGNjNjYxLi40MDgxOGZiYWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0xMzE1LDYgKzEzMTUsMTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y28KICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZ2xvYmFsT2JqZWN0LCBzcmMxLCBz
cmMyKTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogaGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChoZWFwQmlnSW50LT5pc0hlYXBC
aWdJbnQoKSk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPihoZWFwQmlnSW50
KS0+ZXF1YWxzVG9JbnQzMihzbWFsbEludCk7Cit9CisjZW5kaWYKKwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIGNvbnN0IEpT
VmFsdWUqIHZhbHVlcywgaW50IHNpemUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpAQCAtMjgzOCw2ICsyODUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBy
ZXR1cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAq
YXJpdGhQcm9maWxlKTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxs
IHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBC
aWdJbnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJh
bmQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg1MCw4ICsyODY0
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9w
ZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1W
YWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50
Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFs
dWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJ
TlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFs
dWU6OkpTQmlnSW50MzIsIC12YWx1ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUu
aXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6
OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91Ymxl
IG51bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1OSw2ICsyODgxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBi
ZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJh
bmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0yODczLDEwICsyODk2LDIwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRv
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAg
ICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0lu
dChwcmltVmFsdWUpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0Jp
Z0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFz
SW50MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAg
ICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZh
bHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAg
ICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg4Nyw2ICsyOTIw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVBy
b2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9z
ZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmls
ZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTI5MDcsOSArMjk0MSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dAogICAgIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1
ZSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7
CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFy
aXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpT
QmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHBy
aW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAg
IGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMjkyMSw2ICsyOTY2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25W
YWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5l
Z0lDKiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTQw
LDkgKzI5ODYsMTggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgcHJp
bVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlmIChwcmlt
VmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0lu
dDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworCisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIC8vIEZJWE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFy
Z3VtZW50IGJ1dCBub3QgdGhlIHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIo
KSkgeworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigp
OworICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAg
ICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFw
QmlnSW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOGVm
YjViNWFjOTguLjQzYjlhMGE4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVFcShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkCiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKICNpZiBV
U0UoSlNWQUxVRTY0KQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQp
IFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhl
YXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQz
Ml90IHNtYWxsSW50KSBXVEZfSU5URVJOQUw7CiAjZWxzZQogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBK
U0NlbGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAppbmRleCA1MjQzNWE2NjEy
MC4uMmEyYmI5OWY5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAKICNkZWZpbmUgT0ZG
TElORV9BU01fSlNWQUxVRTY0IDAKICNlbmRpZgogCisjaWYgVVNFKEJJR0lOVDMyKQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJ
TlQzMiAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNN
X0FERFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjLi42ZmYxOTdiMjMxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTk2LDYgKzE5NiwxMSBAQCBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBWYWx1
ZU51bGwgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6VmFsdWVOdWxsCiAgICAgY29uc3QgVGFn
TnVtYmVyICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6Ok51bWJlclRhZwogICAgIGNvbnN0IE5v
dENlbGxNYXNrICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpOb3RDZWxsTWFzaworICAgIGlmIEJJ
R0lOVDMyCisgICAgICAgIGNvbnN0IFRhZ0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFsdWU6OkJp
Z0ludDMyVGFnCisgICAgICAgIGNvbnN0IE1hc2tCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVl
OjpCaWdJbnQzMk1hc2sKKyAgICBlbmQKKyAgICBjb25zdCBMb3dlc3RPZkhpZ2hCaXRzID0gY29u
c3RleHByIEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMKIGVsc2UKICAgICBjb25zdCBJbnQzMlRh
ZyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpJbnQzMlRhZwogICAgIGNvbnN0IEJvb2xlYW5UYWcgPSBj
b25zdGV4cHIgSlNWYWx1ZTo6Qm9vbGVhblRhZwpAQCAtNTIxLDYgKzUyNiw3IEBAIGNvbnN0IEpT
RnVuY3Rpb25UeXBlID0gY29uc3RleHByIEpTRnVuY3Rpb25UeXBlCiBjb25zdCBBcnJheVR5cGUg
PSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHBy
IERlcml2ZWRBcnJheVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94
eU9iamVjdFR5cGUKK2NvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRU
eXBlCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBw
YXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNo
IHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpp
bmRleCA4MTg5MWMyMmU2MS4uNThiZjFmNjYxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMzA2
LDYgKzEzMDYsMTIgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVy
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogZW5kKQogCiAKKyMgT24gMzIt
Yml0IHBsYXRmb3JtcyBCSUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkLCBzbyB3ZSBnZW5lcmF0ZSBv
cF9pc19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKK2xsaW50T3Aob3Bf
aXNfYmlnX2ludCwgT3BJc0JpZ0ludCwgbWFjcm8odW51c2VkLCB1bnVzZWQsIHVudXNlZCkKKyAg
ICBub3RTdXBwb3J0ZWQoKQorZW5kKQorCisKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxf
d2l0aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQwLCB0MykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWUyZTM3NzNmZmQuLmY5NWU3YzQ3
MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTg0NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3Vu
ZGVmaW5lZF9vcl9udWxsLCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0CiBl
bmQpCiAKIAotbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFs
aXR5T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IGNyZWF0ZUJvb2xlYW4pCiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBv
cGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAg
IGdldChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQyLCB0MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAg
ICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMg
ICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOwor
ICAgICAgICAjIGlmIChyZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAgICAg
IyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8g
c2xvd1BhdGg7CisgICAgICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0OworCisg
ICAgICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdo
dCBpcyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQg
d291bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNo
SWZOdW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4g
SW50MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVh
dmluZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIg
YXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAg
ICMgTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIG1v
dmUgdDAsIHQyCisgICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdo
Qml0cywgdDUKKyAgICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAg
ICAgb3JxIHQyLCB0MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0
NSwgLnNsb3cKKworICAgICAgICBjcWVxIHQwLCB0MSwgdDUKKyAgICAgICAgYnRxbnogdDUsIHQ1
LCAuZG9uZSAjaXMgdGhlcmUgYSBiZXR0ZXIgd2F5IG9mIGNoZWNraW5nIHQ1ICE9IDAgPworCiAg
ICAgICAgIG1vdmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgIyBUaGlzIGFu
ZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBp
dCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisg
ICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwot
ICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBu
dW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRh
ZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmln
aHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKLSAgICAgICAgb3Jx
IFZhbHVlRmFsc2UsIHQwCi0gICAgICAgIHJldHVybih0MCkKKworICAgIC5kb25lOgorICAgICAg
ICBjcmVhdGVCb29sZWFuKHQ1KQorICAgICAgICByZXR1cm4odDUpCiAKICAgICAuc2xvdzoKICAg
ICAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtODcxLDMzICs4
OTUsNTMgQEAgZW5kCiAKIAogc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkK
KyAgICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAogCiBz
dHJpY3RFcU9wKG5zdHJpY3RlcSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCByZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVy
YW5kKSB4b3JxIFZhbHVlVHJ1ZSwgb3BlcmFuZCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxp
dHlKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21h
Y3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwganVtcElm
RXF1YWwsIGp1bXBJZk5vdEVxdWFsKQogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFt
ZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAg
ICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQzLCB0MSkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbwor
ICAgICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAg
ICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAg
ICAgICMgICAgIGdvdG8ganVtcFRhcmdldDsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8
IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMg
Z290byBvdGhlckp1bXBUYXJnZXQKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50
cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFu
Y2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2Ug
dXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlz
IHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3
aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAg
ICMgSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBv
bmx5IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9y
IGVxdWFsIDE8PDUwLgogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCisg
ICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAg
ICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0
MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKwor
ICAgICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAg
ICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5j
ZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEg
bm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxN
YXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAg
IGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEg
dDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNs
b3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVt
cFRhcmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAg
IGp1bXAobV90YXJnZXRMYWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90YXJn
ZXRMYWJlbCwgZGlzcGF0Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1
bXAsIG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywyNiArOTUxLDI4
IEBAIGVuZAogCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEs
Ci0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQpCi0KKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRh
cmdldExhYmVsKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
ZGlzcGF0Y2goKSBlbmQpCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5z
dHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQpCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
ZGlzcGF0Y2goKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkg
anVtcCh0YXJnZXRMYWJlbCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAg
ICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQKIAogICAgICAgICBnZXQobV9zcmNEc3QsIHQw
KQotICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0
MikKLSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0
MywgbnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykK
LSAgICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwg
OF0KKyAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgICAgICBtZXRhZGF0YSh0Miwg
dDMpCisgICAgICAgICMgc3JjRHN0IGluIHQxLCBtZXRhZGF0YSBpbiB0MgorICAgICAgICAjIEZJ
WE1FOiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGggZm9yIEJpZ0ludDMyLiBX
ZSBjb3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBoZXJlIGZvciB0aGVtLgor
ICAgICAgICBicWIgdDEsIG51bWJlclRhZywgLnNsb3cKKyAgICAgICAgaW50ZWdlck9wZXJhdGlv
bih0MSwgLnNsb3cpCisgICAgICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgICAgIHN0b3JlcSB0
MSwgW2NmciwgdDAsIDhdCiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJ
bnQpCiAgICAgICAgIGRpc3BhdGNoKCkKIApAQCAtOTM0LDYgKzk4MCw3IEBAIG1hY3JvIHByZU9w
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbikKICAgICAgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAg
ICAgZW5kKQorCiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051
bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKQEAgLTEyNzksNiArMTMy
NiwyNiBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgcmV0dXJuKHQxKQogZW5kKQogCitp
ZiBCSUdJTlQzMgorICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJ
bnQsIG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICAgICAgZ2V0KG1fb3Bl
cmFuZCwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQor
ICAgICAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQorICAgICAgICBjYmVx
IEpTQ2VsbDo6bV90eXBlW3QwXSwgSGVhcEJpZ0ludFR5cGUsIHQxCisgICAgICAgIG9ycSBWYWx1
ZUZhbHNlLCB0MQorICAgICAgICByZXR1cm4odDEpCisgICAgLm5vdENlbGxDYXNlOgorICAgICAg
ICBhbmRxIE1hc2tCaWdJbnQzMiwgdDAKKyAgICAgICAgY3FlcSB0MCwgVGFnQmlnSW50MzIsIHQw
CisgICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgICAgICByZXR1cm4odDApCisgICAgZW5k
KQorZWxzZQorIyBpZiBCSUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkIHdlIGdlbmVyYXRlIG9wX2lz
X2NlbGxfd2l0aF90eXBlIGluc3RlYWQgb2Ygb3BfaXNfYmlnX2ludAorICAgIGxsaW50T3Aob3Bf
aXNfYmlnX2ludCwgT3BJc0JpZ0ludCwgbWFjcm8odW51c2VkLCB1bnVzZWQsIHVudXNlZCkKKyAg
ICAgICAgbm90U3VwcG9ydGVkKCkKKyAgICBlbmQpCitlbmQKIAogbGxpbnRPcFdpdGhSZXR1cm4o
b3BfaXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5
cGUsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJB
cmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcApp
bmRleCA4NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC04Myw2ICs4MywxMCBAQCBjb25zdCBJZGVudGlm
aWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0s
IGNvbnN0IElkZQogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZp
ZXI7CiAKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNW
YWx1ZSBiaWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIu
c3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9u
cywgSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CisKICAgICAvLyBGSVhNRTogV2UgYXJlIGFsbG9jYXRpbmcgYSBKU0JpZ0lu
dCBqdXN0IHRvIGJlIGFibGUgdG8gdXNlCiAgICAgLy8gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyB3
aGVuIHJhZGl4IGlzIG5vdCAxMC4KICAgICAvLyBUaGlzIGNyZWF0ZXMgc29tZSBHQyBwcmVzc3Vy
ZSwgYnV0IHNpbmNlIHRoZXNlIGlkZW50aWZpZXJzCkBAIC05MCwxMSArOTQsMTUgQEAgY29uc3Qg
SWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIo
Vk0mIHZtLCBjb25zdCBJZGUKICAgICAvLyBpdCB3b250IGJlIG11Y2ggcHJvYmxlbWF0aWMsIGdp
dmVuIHN1Y2ggY2FzZXMgYXJlIHZlcnkgcmFyZS4KICAgICAvLyBUaGVyZSBpcyBhIGxvdCBvZiBv
cHRpbWl6YXRpb25zIHdlIGNhbiBhcHBseSBoZXJlIHdoZW4gbmVjZXNzYXJ5LgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MjcKLQotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0g
SlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRp
eCwgSlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQ
YXJzZUludFNpZ246OlVuc2lnbmVkKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwot
ICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmln
SW50Ojp0cnlHZXRTdHJpbmcodm0sIGJpZ0ludCwgMTApKSk7CisgICAgSlNCaWdJbnQqIGhlYXBC
aWdJbnQ7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQor
ICAgICAgICBoZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJ
bnQzMkFzSW50MzIoKSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGhlYXBCaWdJbnQgPSBi
aWdJbnQuYXNIZWFwQmlnSW50KCk7CisKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50
LCAxMCkpKTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBlOTgw
MzNhMmJhNi4uMmJiYjZjMzRkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJMb29r
dXAuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFBy
b3RvdHlwZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1
cnNpb25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggNzdkOGNhZjIzNjguLjhlZDE0YWE4ZTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUs
MTggKzc1LDYgQEAgdm9pZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBCaWdJbnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
c3RhdGljIGJvb2wgaXNTYWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChh
cmd1bWVudC5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1
bWVudC5pc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVt
YmVyID0gYXJndW1lbnQuYXNEb3VibGUoKTsKLSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBu
dW1iZXIgJiYgc3RkOjphYnMobnVtYmVyKSA8PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBhcmd1bWVudCkKIHsKICAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7
CkBAIC05NCwyMCArODIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYg
KGFyZ3VtZW50LmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJn
dW1lbnQpOwotICAgIAorCisgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgYXJndW1lbnQuYXNCb29sZWFuKCkpKTsKKyNlbHNlCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFz
Qm9vbGVhbigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmco
KSkgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQs
IFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJn
dW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9v
bGVhbigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAg
Ci0gICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1i
ZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmln
SW50IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkp
OwotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2Jh
bE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykp
OwotICAgIH0pKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
QEAgLTExOSwyMCArMTExLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1
ZSBwcmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1p
dGl2ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIGlmICghaXNTYWZlSW50ZWdlcihwcmltaXRpdmUp
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKLSAg
ICAgICAgCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5p
c0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpj
cmVhdGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5p
c0ludDMyKCkpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7
CisjZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CiAKLSAgICAgICAg
aWYgKHByaW1pdGl2ZS5pc1VJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzVUludDMyKCkpKTsKKyAg
ICBpZiAocHJpbWl0aXZlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHBy
aW1pdGl2ZS5hc0RvdWJsZSgpOworICAgICAgICBpZiAodHJ1bmMobnVtYmVyKSAhPSBudW1iZXIg
fHwgc3RkOjphYnMobnVtYmVyKSA+IG1heFNhZmVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiTm90IGEgc2FmZSBpbnRlZ2VyIl9zKSk7CiAKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMih2bSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQotICAgIAorCiAgICAgRW5jb2Rl
ZEpTVmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0
LmNwcAppbmRleCBlZTAwNDVkYWM5Ni4uZTYxOTgyYjkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xh
c3NJbmZvIEJpZ0ludE9iamVjdDo6c19pbmZvID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAK
IAotQmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0lu
dE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBiaWdJbnQpCiB7CiAgICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGds
b2JhbE9iamVjdC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0sIGJpZ0ludCk7CkBAIC00OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6Qmln
SW50T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmln
SW50T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lk
IEJpZ0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0lu
dE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgK
aW5kZXggODQ3NjcxMGYyMzIuLmRlYTgxZDIyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRPYmplY3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gdm0uYmlnSW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmln
SW50T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAg
c3RhdGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxW
YWx1ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpT
V3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
Kik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0
KFZNJiwgU3RydWN0dXJlKik7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoQmlnSW50T2JqZWN0
KSA9PSBzaXplb2YoSlNXcmFwcGVyT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCAzZWZkNDFkN2RjMy4uOWExNGY2
NmE4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJv
dG90eXBlLmNwcApAQCAtODEsMTIgKzgxLDI0IEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1FOiBoZWFwLWFsbG9jYXRpbmcgYWxs
IGJpZyBpbnRzIGlzIGlubmVmaWNpZW50LCBidXQgcmUtaW1wbGVtZW50aW5nIHRvU3RyaW5nIGZv
ciBzbWFsbCBCaWdJbnRzIGlzIGVub3VnaCB3b3JrIHRoYXQgSSdtIGRlZmVycmluZyBpdCB0byBh
IGxhdGVyIHBhdGNoLgorICAgIGlmICh0aGlzVmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHRoaXNWYWx1ZS5iaWdJbnQzMkFzSW50MzIo
KSk7CisjZW5kaWYKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYg
KEpTQmlnSW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1
ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAg
ICAgaWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRP
YmplY3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJ
bnRPYmplY3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBi
aWdJbnRPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUu
YXNDZWxsKCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+
aW50ZXJuYWxWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChiaWdJ
bnQuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorICAgICAgICAgICAg
cmV0dXJuIGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTE2LDYgKzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJlc3Vs
dFN0cmluZykpOwogfQogCisvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBzaG91bGQgaW50cm9kdWNl
IHRoZSByaWdodCBzZXBhcmF0b3JzIGZvciB0aG91c2FuZHMgYW5kIHNpbWlsYXIgdGhpbmdzLgog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiOGRlOTY1NTgyZi4uMjY2
NTIwZWNmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNDY5LDEzICs0NjgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQog
ICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBK
U1ZhbHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAg
ICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxP
YmplY3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJl
c3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZh
cmlhbnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1
bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAg
UkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7
IH0pOwogfQogCkBAIC00ODQsMTMgKzQ3OCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWMpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwog
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgp
OwotICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVu
dC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGds
b2JhbE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFs
dWUgcmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVz
dWx0VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAg
IHJlc3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsK
ICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1
bHQsIHsgfSk7CiB9CiAKQEAgLTUwNyw3ICs0OTYsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJp
dGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpT
VmEKICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9m
aWxlOwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0
LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1i
ZXIoKSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmls
ZS5zZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBp
ZiAocmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0lu
dDMyKCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJl
cigpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAo
b3BlcmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZElu
dDMyT3ZlcmZsb3coKTsKQEAgLTUyNywxMCArNTI0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJp
dGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpT
VmEKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3co
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmln
SW50KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0g
ICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UK
IHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6
TWV0YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0NSw4ICs1MzksMjEgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9w
ZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNL
X0VYQ0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
IEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJp
bVZhbHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQz
MigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMy
KCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVB
cml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYg
KHByaW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAg
ICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFy
aXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAg
ICAgICAgfSk7CkBAIC01ODQsOCArNTkxLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgp
KQotICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChy
ZXN1bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmln
SW50KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMy
KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAg
ZWxzZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYw
NywxMyArNjE4LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAg
QkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAg
IEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsK
LSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1Zh
bHVlIHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJl
c3VsdFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3Vs
dFZhcmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8
ZG91YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9
CiAKQEAgLTY0OSw3ICs2NTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQog
CiAvLyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVk
IHRvIGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9y
ZGVyLiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90
b0JpZ0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8g
dGhlc2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9u
IHRoZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcx
LDI0ICs2NzcsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNv
ZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1l
cmljID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkg
ewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2Jq
ZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAg
ICAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVw
ZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IHBjLCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0K
LSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmlj
KSAtIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAg
ICAgfSk7CkBAIC03MDAsMjYgKzY5MCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYp
CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQg
PSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBH
RVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBs
ZWZ0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
YXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBD
SEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmln
SW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6
OmRpdmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0g
ICAgICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIp
KTsKLSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMp
OwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElO
RyhyZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0p
OwpAQCAtNzMxLDI0ICs3MDMsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VU
X0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0Jp
Z0ludDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsK
LSAgICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmlj
KTsKLSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBS
RVRVUk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc1NywyNSArNzE0LDkgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93
PigpOwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7
CiAgICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0g
ICAgYXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVy
aWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1l
cmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVS
TihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBv
bmVudGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdU
Rjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91
YmxlPihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQ
b3coYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2xzaGlmdCkKQEAgLTc4NCwyMiArNzI1LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAg
ICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpT
VmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6
OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVU
VVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0
eXBlIGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJP
RklMRUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6Omdl
dDxpbnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0xTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04o
KTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3JzaGlmdCkKQEAgLTgwOCwyMiArNzM3LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAg
ICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpT
VmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8g
bGVmdE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVj
dCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0K
LQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVt
ZXJpYykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAg
IENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg0OSw3OSArNzY2LDQ3IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMg
PSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xv
YmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmln
SW50KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0
PEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJh
bmQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9Q
Uk9GSUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAog
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9
IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBH
RVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmpl
Y3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxl
ZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAg
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3Vs
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2Fu
ZCcgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMp
LmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQz
Ml90PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1l
cmljID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xv
YmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAg
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMp
LmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFs
dWUoKTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52
YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRp
b24uIikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxp
bnQzMl90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigp
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0
TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMy
KGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51
bWVyaWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihn
bG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCog
cmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsK
LSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJ
TEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJp
dHdpc2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6
OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVy
aWMpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCmluZGV4IGRjZGZjZmEyYmNiLi5lOWI1NDY1NzAyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKQEAgLTg3LDEyICs4NywyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCogZwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBudW1i
ZXJGb3JtYXQgPSBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogCi0gICAgYXV0byB2YXJpYW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVy
aWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN3aXRjaE9uKHZhcmlhbnQsIFsmXShhdXRvJiYgdmFs
dWUpIHsKLSAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwg
dmFsdWUpOwotICAgIH0pKSk7CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChiaWdJbnRP
ck51bWJlci5pc051bWJlcigpKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGJpZ0ludE9yTnVt
YmVyLmFzTnVtYmVyKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9y
bWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIH0KKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIEpT
QmlnSW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnRPck51bWJlci5i
aWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVy
Rm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisg
ICAgQVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCog
dmFsdWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4
IDljMzQ1NDQyZjU0Li4xYzIzOWNiZmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEpTQmlnSW50Ojppbml0aWFs
aXplKEluaXRpYWxpemF0aW9uVHlwZSBpbml0VHlwZSkKIAogU3RydWN0dXJlKiBKU0JpZ0ludDo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmlnSW50VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEhlYXBCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYgdm0pCkBAIC0x
NDIsOCArMTQyLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGlu
dDY0X3QgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVpl
cm8odm0pOwotICAgIAotICAgIGlmIChzaXplb2YoRGlnaXQpID09IDgpIHsKKworICAgIC8vIFRo
aXMgcGF0aCBpcyBub3QganVzdCBhbiBvcHRpbWl6YXRpb246IGJlY2F1c2Ugd2UgZG8gbm90IGNh
bGwgcmlnaHRUcmltIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwKKyAgICAvLyBpdCB3b3Vs
ZCBiZSBhIGJ1ZyB0byBjcmVhdGUgYSBCaWdJbnQgd2l0aCBsZW5ndGg9MiBpbiB0aGlzIGNhc2Uu
CisgICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCB8fCAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1
ZSA+PSBJTlRfTUlOKSkgewogICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVp
bnQ2NF90PigtKHZhbHVlICsgMSkpICsgMSkpOwpAQCAtMTg4LDM0ICsxOTAsMjEgQEAgSlNWYWx1
ZSBKU0JpZ0ludDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CiB9
CiAKLU9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5n
KCkKLXsKLSAgICBpZiAoaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlm
IChsZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKLSAgICAgICAgRGlnaXQgckRpZ2l0ID0gZGln
aXQoMCk7Ci0gICAgICAgIGlmIChyRGlnaXQgPD0gOSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90PihyRGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1K
U0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKK0pTVmFsdWUgSlNCaWdJ
bnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywg
RXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAgICAg
ICAgcmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0
aCgpLCBwYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNo
YXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0
cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFy
c2VJbnRTaWduIHNpZ24pCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJy
b3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCiB7CiAgICAgaWYgKHMu
aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNo
YXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJz
ZUludE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBwYXJzZUludChnbG9i
YWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFy
c2VyTW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKIH0KIAot
SlNCaWdJbnQqIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJpbmdWaWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCiB7CiAgICAgcmV0dXJu
IHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcywgRXJyb3JQYXJzZU1vZGU6Oklnbm9yZUV4Y2VwdGlv
bnMpOwogfQpAQCAtNDU0LDE2ICs0NDMsMjMgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5k
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW4KIAog
SlNCaWdJbnQqIEpTQmlnSW50OjppbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIHgpCiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcg
YSBmYWlyIGJpdCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIHJldHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFu
dE9uZS5nZXQoKSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0
ZUFkZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlVuc2lnbmVkKTsKKyAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgo
KSk7CisgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IEpTQmlnSW50KiBKU0JpZ0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QmlnSW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5n
IGEgZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKLSAgICByZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3Rh
bnRPbmUuZ2V0KCkpOworICAgIGlmICh4LT5pc1plcm8oKSkgeworICAgICAgICBKU0JpZ0ludCog
cmVzdWx0ID0gY3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAgICAgICByZXN1
bHQtPnNldFNpZ24odHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlm
ICgheC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0
LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVj
dCwgeCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjphZGQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQpA
QCAtNTMyLDcgKzUyOCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAgaWYgKHgtPnNp
Z24oKSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHggJiAoLXkpID09
IHggJiB+KHktMSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkK
ICAgICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHksIHktPmxl
bmd0aCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBy
ZXR1cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTY0MCw3IEBAIFN0
cmluZyBKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCB1bnNpZ25l
ZCByYWRpeCkKIHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3Ig
aW50byBKU0JpZ0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7CiAKICAg
ICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcgKzE3OTgsNyBA
QCBib29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVy
cm9yUGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFy
c2VNb2RlIGVycm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKIApAQCAtMTgxMCw3ICsxODA2LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKICAgICB3
aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsr
cDsKIAotICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgIC8vIENo
ZWNrIFJhZGl4IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9
PSAnMCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsg
MV0sICdiJykpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwg
ZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5z
aWduZWQsIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0xODI0LDI0ICsx
ODIwLDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUludFNpZ24gc2ln
biA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgpIHsKLSAgICAg
ICAgaWYgKGRhdGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlIGlm
IChkYXRhW3BdID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScpIHsKICAgICAg
ICAgICAgIHNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAgICsrcDsKLSAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAg
KytwOwogICAgIH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChnbG9iYWxPYmpl
Y3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7Ci0KLSAg
ICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1bHQtPnNldFNp
Z24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEw
LCBlcnJvclBhcnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBz
dGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUs
IFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNWYWx1ZSBKU0Jp
Z0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFy
VHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWdu
LCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAg
ICAgdW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4NDIsNyBAQCBKU0JpZ0lu
dCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgQ2hhclR5cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
aWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAg
ICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
IH0KIAogICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjYsNDQgKzE4NTYsODQg
QEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKIAogICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsK
IAotICAgIGlmIChwID09IGxlbmd0aCkKKyAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDAp
OworI2Vsc2UKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotCi0gICAgdW5zaWduZWQg
bGltaXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBs
aW1pdGEgPSAnYScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsg
KHJhZGl4IC0gMTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2Jh
bE9iamVjdCwgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2Ug
ZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90
IHRocm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0
aW9uVHlwZTo6V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0
aDsgaSsrLCBwKyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRh
W2ldID49ICcwJyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRh
W2ldIC0gJzAnOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwg
bGltaXRhKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAg
IGVsc2UgaWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAg
ICBkaWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8
RGlnaXQ+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisjZW5kaWYKICAgICB9
CiAKLSAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRy
dWUgOiBmYWxzZSk7Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0
LT5yaWdodFRyaW0odm0pOworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3Qg
bnVtYmVyIHN1Y2ggdGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMy
X01BWAorICAgIHVuc2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChy
YWRpeCkgeworICAgIGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMw
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmln
SW50MzIgPSAxMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3Ro
TGltaXRGb3JCaWdJbnQzMiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAg
ICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwogCi0gICAgQVNT
RVJUKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VN
b2RlOjpUaHJvd0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2Ug
U3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICB1bnNpZ25lZCBsaW1pdDAgPSAnMCcgKyAocmFkaXgg
PCAxMCA/IHJhZGl4IDogMTApOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNf
Y2FzdDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsg
KHN0YXRpY19jYXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFs
TGVuZ3RoID0gbGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBp
bnQzMl90IGRpZ2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZs
b3c+IG11bHRpcGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoTGltaXRGb3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAg
ICAgIGRpZ2l0ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAg
ICAgICAgICAgIGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAg
ICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChk
YXRhW3BdID49ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0
ICs9IGRhdGFbcF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0g
J0EnICYmIGRhdGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtw
XSAtICdBJyArIDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVy
cm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAg
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9i
YWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdl
dCgpKTsKKworICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChwID09
IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50U2lnbjo6U2ln
bmVkKQorICAgICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgZGln
aXQpOworI2Vsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRnJvbSh2bSwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oZGlnaXQpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaGVhcFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBpbml0
aWFsTGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CisgICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9u
J3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRo
cm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICBpZiAoIWhlYXBSZXN1
bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIGhlYXBS
ZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERp
Z2l0PihtdWx0aXBsaWVyLnVuc2FmZUdldCgpKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7
CisgICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihz
aWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3VsdC0+cmln
aHRUcmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQo
dW5zaWduZWQgbikKQEAgLTE5MjcsMTggKzE5NTcsMjAgQEAgYm9vbCBKU0JpZ0ludDo6ZXF1YWxz
VG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1i
ZXIoKSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICBpbnQg
dmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5n
dGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGln
aXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+
KHZhbHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAgICBkb3Vi
bGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21wYXJlVG9Eb3Vi
bGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCitib29sIEpT
QmlnSW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhpcy0+bGVuZ3Ro
KCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0
KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2
YWx1ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21w
YXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMgYWxnb3Jp
dGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uOGUyYzE0OGU2
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdt
YWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDYgKzgyLDE3
IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CiAKKyAgICBzdGF0aWMgSlNWYWx1ZSBtYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoVk0m
IHZtLCBpbnQ2NF90IHZhbHVlKQorICAgIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlm
ICh2YWx1ZSA8PSBJTlRfTUFYICYmIHZhbHVlID49IElOVF9NSU4pCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1
ZSkpOworI2VuZGlmCisKKyAgICAgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgdmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihw
dHIpKTsKKyAgICB9CisKICAgICBlbnVtIGNsYXNzIEVycm9yUGFyc2VNb2RlIHsKICAgICAgICAg
VGhyb3dFeGNlcHRpb25zLAogICAgICAgICBJZ25vcmVFeGNlcHRpb25zCkBAIC05MCwxMyArMTAx
LDEyIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERpc2FsbG93RW1w
dHlTdHJpbmcsIEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50U2ln
biB7IFVuc2lnbmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFy
c2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWduID0g
UGFyc2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChK
U0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1v
ZGU6OlRocm93RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJpbmdUb0JpZ0lu
dChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJv
clBhcnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2ln
biA9IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNl
TW9kZTo6VGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJpbmdUb0JpZ0lu
dChKU0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0cmluZyB0cnlH
ZXRTdHJpbmcoVk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAgIE9wdGlvbmFs
PHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJpbmcgdG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAgZW51bSBjbGFz
cyBDb21wYXJpc29uTW9kZSB7CkBAIC0xMTMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmlnSW50
Kik7CiAgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENvbXBhcmlzb25S
ZXN1bHQgY29tcGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAgYm9vbCBnZXRQ
cmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYg
cmVzdWx0KSBjb25zdDsKQEAgLTIyMiwxMCArMjMzLDEwIEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFy
c2VJbnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
RXJyb3JQYXJzZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQq
IHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1v
ZGUsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQ
YXJzZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBh
cnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUlu
dE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0
ZUZvcihKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2lnbmVkIGNoYXJj
b3VudCk7CiAKQEAgLTI1OCw5ICsyNjksOSBAQCBwcml2YXRlOgogICAgIENhZ2VkVW5pcXVlUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxpbmUgSlNCaWdJ
bnQqIGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFzSGVhcEJpZ0lu
dChKU1ZhbHVlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQo
KSk7CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7CiAgICAgcmV0
dXJuIGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1ZGI3Y2QzZmQxOS4uOGY3
ZWJmYjE1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVh
bkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkN1c3RvbUdldHRlclNldHRlci5oIgpAQCAtNjgsOSArNjksMTggQEAgZG91YmxlIEpTVmFsdWU6
OnRvTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAKIGRvdWJsZSBK
U1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFp
c0RvdWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBhc0NlbGwoKS0+
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3Qg
YWxsb3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAgIGlm
IChpc1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmluZWQo
KSA/IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEw
MSw2ICsxMTEsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51
bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFs
c2UoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVh
bihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChp
c0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAqdGhpcyk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVs
bCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RB
bk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMzIsMTMgQEAg
SlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihn
bG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9i
YWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0lu
dDMyKCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50
MzIoKSkpOworICAgICAgICByZXR1cm4gaGVhcEJpZ0ludC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTUxLDcg
QEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlz
U3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5
cGUoKTsKLSAgICAgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQo
KSkKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwog
ICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
PnN5bWJvbFByb3RvdHlwZSgpOwpAQCAtMTQwLDYgKzE2MSwxMCBAQCBKU09iamVjdCogSlNWYWx1
ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBp
ZiAoaXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90
b3R5cGUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CisjZW5kaWYKIAogICAg
IEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMp
KTsKQEAgLTI4Niw2ICszMTEsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWlu
Z1N0cnVjdHVyZSgKICAgICAgICAgICAgIG91dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVy
KGFzQ2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlz
U3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0
cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250
ZXh0KSk7CisgICAgICAgIGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgb3V0
LnByaW50KCJCaWdJbnRbaGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIsIFJhd1BvaW50ZXIoYXNDZWxs
KCkpKTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFz
c09mKEpTT2JqZWN0OjppbmZvKCkpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdDog
IiwgUmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50KCIgd2l0aCBi
dXR0ZXJmbHkgIiwgUmF3UG9pbnRlcihhc09iamVjdChhc0NlbGwoKSktPmJ1dHRlcmZseSgpKSk7
CkBAIC0zMDUsNiArMzMyLDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5n
U3RydWN0dXJlKAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1Vu
ZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJp
Z0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UK
ICAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zNDcsNiArMzc4LDEwIEBAIHZv
aWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
ICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAg
ICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNl
IGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAl
ZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnBy
aW50KCJJTlZBTElEIik7CiB9CkBAIC0zODQsMTggKzQxOSwyNyBAQCBKU1N0cmluZyogSlNWYWx1
ZTo6dG9TdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJl
dHVybkVtcAogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAg
ICBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRl
ZmluZWRTdHJpbmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBz
dHJpbmciX3MpOwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIp
IDw9IDkpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3Rl
clN0cmluZyhpbnRlZ2VyICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlz
QmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsK
LSAgICAgICAgaWYgKGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJp
bmcoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKCpkaWdpdCArICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkp
OworI2VuZGlmCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBi
aWdJbnQgPSBhc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRo
ZXIgaGF2ZSB0d28gY2FzZXMgaGVyZTogb25lLWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2
aWFsU3RyaW5nIGZvciBldmVyeXRoaW5nIGVsc2UuCisgICAgICAgIGF1dG8gc3RyaW5nID0gYmln
SW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKKyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmlu
ZyA9IEpTU3RyaW5nOjpjcmVhdGUodm0sIHN0cmluZy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlcnJvclZhbHVlKCkp
OwogICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwogICAgIH0KKyAgICBpZiAoaXNTeW1ib2wo
KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90
IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOworICAgICAgICByZXR1cm4gZXJyb3JW
YWx1ZSgpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlclN0cmluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3Nzdj
Y2QuLjg3MmMzNjM5OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCkBAIC0xNzcsNiArMTc3LDkgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsg
SlNUcnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlND
ZWxsVGFnIHsgSlNDZWxsVHlwZSB9OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbnVtIEpTQmln
SW50MzJUYWcgeyBKU0JpZ0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91Ymxl
VGFnIHsgRW5jb2RlQXNEb3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4Niw2ICsxODks
OSBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpTQ2Vs
bCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgogCiAgICAg
Ly8gTnVtYmVycwogICAgIEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CkBAIC0y
MTksNiArMjI1LDkgQEAgcHVibGljOgogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAg
IGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8v
IG11c3Qgb25seSBiZSBjYWxsZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50
MzJfdCBhc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4g
aW50LCBidXQgb3RoZXJ3aXNlIGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzgsNiArMjQ3LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50
KCkgY29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludDMyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJv
bCgpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzR2V0
dGVyU2V0dGVyKCkgY29uc3Q7CkBAIC0yNDYsNyArMjU3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aW5oZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mb09yTnVsbChWTSYpIGNvbnN0OwotICAgICAgICAKKwogICAgIC8vIEV4dHJh
Y3RpbmcgdGhlIHZhbHVlLgogICAgIGJvb2wgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgV1RG
OjpTdHJpbmcmKSBjb25zdDsKICAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCkBAIC0yNjUsOSArMjc2
LDEwIEBAIHB1YmxpYzoKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4cGVjdGVkIHRv
IGJlIHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhjZXB0aW9uIGhhcwogICAgIC8vIGJlZW4gc2V0
IGluIHRoZSBDYWxsRnJhbWUgYWxyZWFkeS4KICAgICBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKLSAgICAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiB0b051
bWVyaWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgaW50
MzJfdD4gdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICBKU1Zh
bHVlIHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTVmFsdWUgdG9CaWdJ
bnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNCaWdJbnQqIGFzSGVhcEJp
Z0ludCgpIGNvbnN0OwogCiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4gYmUg
ZG9uZSB3aXRob3V0IHNpZGUgZWZmZWN0cy4KICAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVy
RnJvbVByaW1pdGl2ZSgpIGNvbnN0OwpAQCAtMzE2LDggKzMyOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmljdEVx
dWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGlj
IGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBz
dHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2
Mik7CiAgICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CkBAIC00MTUsMTEgKzQyNiwyMCBA
QCBwdWJsaWM6CiAgICAgICogVGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOgogICAgICAqIC0gQml0IDEgKE90aGVyVGFnKSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVl
cywgYWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBiZQogICAgICAqICAgcXVpY2tseSBkaXN0aW5n
dWlzaGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZhbGlk
IHBvaW50ZXJzLgotICAgICAqIC0gV2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRU
YWcpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKKyAgICAgKiAtIFdpdGggYml0IDMgbWFz
a2VkIG91dCAoVW5kZWZpbmVkVGFnKSwgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQogICAg
ICAqICAgc2FtZSB2YWx1ZSwgYWxsb3dpbmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlja2x5
IGRldGVjdGVkLgogICAgICAqCiAgICAgICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhl
IGJpdCBwYXR0ZXJuIDB4MCwgdGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQogICAgICAq
IGhvbGVzLCBhbmQgYXMgYSBDKysgJ25vIHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhh
cyBhbiBpbnRlcm5hbCB2YWx1ZSBvZiAwKS4KKyAgICAgKgorICAgICAqIFdoZW4gVVNFKEJJR0lO
VDMyKSwgd2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBh
cmUgc21hbGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhYOjAw
MTIKKyAgICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxv
d2luZyB0aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJs
ZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5vdCBi
ZSBjb25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGlj
aCBpcyBzZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBw
b2ludGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAg
ICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAy
IGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxs
L3VuZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAgICAv
LyBUaGlzIHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRo
ZSBlbmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQyOSwxMSArNDQ5LDE5IEBAIHB1YmxpYzoK
ICAgICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBh
biBpbnRlZ2VyIG51bWJlciwKICAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlz
IHZhbHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQ2NF90IE51bWJlclRhZyA9IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOworICAgIC8vIFRoZSBm
b2xsb3dpbmcgY29uc3RhbnQgaXMgdXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50YXRp
b24gb2Ygc3RyaWN0RXEsIHRvIGRldGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBh
IGRvdWJsZQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0g
MVVMTCA8PCA0OTsKKyAgICBzdGF0aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJU
YWcpOworICAgIHN0YXRpY19hc3NlcnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJU
YWcpKTsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBp
bW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBP
dGhlclRhZyAgICAgICA9IDB4MjsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9vbFRh
ZyAgICAgICAgPSAweDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRh
ZyAgID0gMHg4OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMy
X3QgQmlnSW50MzJUYWcgICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBC
aWdJbnQzMk1hc2sgICA9IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOworI2VuZGlmCiAgICAgLy8g
Q29tYmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KICAgICBz
dGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8IEJvb2xU
YWcgfCBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVlICAgICAg
PSBPdGhlclRhZyB8IEJvb2xUYWcgfCB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNWIzZmY4YWM0NGUuLjBlZTYyZTEx
MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC00Nyw3ICs0Niw5IEBAIEFMV0FZU19JTkxJTkUgaW50MzJfdCBKU1Zh
bHVlOjp0b0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAg
aWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICByZXR1cm4gSlND
Ojp0b0ludDMyKHRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworCisgICAgZG91YmxlIGQgPSB0b051
bWJlcihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU0M6OnRvSW50MzIoZCk7CiB9CiAKIGlu
bGluZSB1aW50MzJfdCBKU1ZhbHVlOjp0b1VJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdApAQCAtMzI5LDYgKzMzMCwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNW
YWx1ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
Pih1LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1
ZTo6YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7
Cit9CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywg
ZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC01MjIsOCArNTI5
LDIzIEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAg
IHJldHVybiB1LnB0cjsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNI
ZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHUucHRyKTsKK30KKwogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShK
U0JpZ0ludDMyVGFnLCBpbnQzMl90IHZhbHVlKQoreworICAgIHVpbnQ2NF90IHNoaWZ0ZWRWYWx1
ZSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKSA8
PCAxNjsKKyAgICBBU1NFUlQoIShzaGlmdGVkVmFsdWUgJiBOdW1iZXJUYWcpKTsKKyAgICB1LmFz
SW50NjQgPSBzaGlmdGVkVmFsdWUgfCBCaWdJbnQzMlRhZzsKK30KKyNlbmRpZiAvLyBVU0UoQklH
SU5UMzIpCisKIGlubGluZSBpbnQ2NF90IHRyeUNvbnZlcnRUb0ludDUyKGRvdWJsZSBudW1iZXIp
CiB7CiAgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCkBAIC02MTAsOSArNjMyLDMxIEBAIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNC
aWdJbnQoKTsKKyAgICByZXR1cm4gaXNCaWdJbnQzMigpIHx8IGlzSGVhcEJpZ0ludCgpOwogfQog
CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29s
IEpTVmFsdWU6OmlzQmlnSW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBy
ZXR1cm4gKHUuYXNJbnQ2NCAmIEJpZ0ludDMyTWFzaykgPT0gQmlnSW50MzJUYWc7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5l
IGludDMyX3QgSlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNCaWdJbnQzMigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odS5hc0ludDY0
ID4+IDE2KTsKK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIGlubGluZSBib29sIEpTVmFs
dWU6OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCkt
PmlzU3ltYm9sKCk7CkBAIC02MjAsNyArNjY0LDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNT
eW1ib2woKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1ByaW1pdGl2ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0Nl
bGwoKS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gIWlz
Q2VsbCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8
IGFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNH
ZXR0ZXJTZXR0ZXIoKSBjb25zdApAQCAtNzM4LDYgKzc4Miw5IEBAIGlubGluZSBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIHRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqCiAKIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgdmFsdWUpCiB7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChpc0ludDMyKCkpIHsKICAgICAgICAgbnVt
YmVyID0gYXNJbnQzMigpOwogICAgICAgICB2YWx1ZSA9ICp0aGlzOwpAQCAtNzYwLDggKzgwNywx
NSBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudQogICAgICAgICB2YWx1ZSA9ICp0aGlzOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAg
IG51bWJlciA9IFBOYU47CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgbnVtYmVy
ID0gUE5hTjsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBp
cyBub3QgYWxsb3dlZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlz
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4MjksNDUgQEAgQUxXQVlTX0lOTElO
RSBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1B
TFdBWVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAg
aWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOwotCi0gICAgVk0mIHZtID0g
Z2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGlzSW50
MzIoKSB8fCBpc0RvdWJsZSgpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhpczsK
KwogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBQcmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAg
IGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1W
YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChw
cmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0
dXJuIHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJl
dHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
cmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmln
SW50KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJ
bnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYg
KGlzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUo
KSAmJiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVy
biBhc0JpZ0ludCgqdGhpcyk7Ci0KICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpc0lu
dDMyKCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIGlmIChpc0Rv
dWJsZSgpICYmIGNhbkJlSW50MzIoYXNEb3VibGUoKSkpCisgICAgICAgIHJldHVybiBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CisKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmln
SW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8
fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAg
IGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7
CiB9CiAKIGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgY29uc3QKQEAgLTEwMzIsMzcgKzEwODcsMTcgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAgIGlmICh2
MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdjEuYXNO
dW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmlu
ZygpOwotICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYgKHMxICYm
IHMyKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSkt
PmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYgKHYxLmlz
QmlnSW50KCkgJiYgczIpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5n
KHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0
cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdjIgPSBK
U1ZhbHVlKG4pOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5pc051bWJl
cigpKSB7CisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAgLy8gR3Vh
cmFudGVlaW5nIHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBzb21lIG9m
IHRoZSBjYXNlcyBiZWxvdyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewotICAgICAg
ICAgICAgU3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxPYmplY3Qp
OwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAg
ICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0
LCB2MVN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9vbGVhbnMs
IEJpZ0ludDMyLCBPYmplY3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9yZSB0eXBl
cy4KKyAgICAgICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwgYmVjYXVz
ZSBpdCBpcyBOT1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09IHYyKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtMTA4
MCw3ICsxMTE1LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJ
bmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBpZiAodjEu
aXNPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8g
djEgPT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIEpT
VmFsdWUgcDEgPSB2MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBwMTsKQEAg
LTExMDIsNTYgKzExMzcsODYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xv
d0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgYm9v
bCBzeW0yID0gdjIuaXNTeW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikgewogICAg
ICAgICAgICAgaWYgKHN5bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4gYXNTeW1i
b2wodjEpID09IGFzU3ltYm9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8v
IHYxID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmco
KTsKKyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChzMSkgewor
ICAgICAgICAgICAgaWYgKHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOwor
ICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3Vh
cmFudGVlZCB0byBlbnRlciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFyaWFudCBv
ZiBvbmx5IHYyIGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAgICBpZiAo
czEgfHwgczIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0g
ICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0
dXJuIGQxID09IGQyOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUg
c3RyaW5nIGlzIHYyICh0aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAgICBpZiAo
djEuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3Ry
aW5nKHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6
c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICgh
djIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAodjEgPT0gdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3IgQmln
SW50MzIKKyAgICAgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBj
b2RlIGZvciBjb21wYXJpbmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRoZSBCaWdJ
bnQzMi9CaWdJbnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYxLmlzQm9v
bGVhbigpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxP
YmplY3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc051
bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFz
Qm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAodjIuaXNC
aWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9i
YWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIC8v
IFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKKyAg
ICAgICAgICAgIC8vIFdlIGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRvIHJlcGFpciB0aGUgcnVs
ZSB0aGF0IG9ubHkgdjIgaXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBpbiB0aGVzZSBjb21wYXJp
c29ucworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0gZWxzZSBpZiAo
djIuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIu
YXNCb29sZWFuKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgewotICAg
ICAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYyID0g
SlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdo
IHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKICAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKTsK
LSAgICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJlcih2Mik7CiAKLSAg
ICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpID09IHYy
LmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMyQXNJbnQzMigpKSA9PSB2
Mi5hc0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgIH0K
KyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgp
KSB7CisgICAgICAgICAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0lu
dCgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNCaWdJbnQzMigp
KQorICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQz
Mih2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAg
ICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVh
cEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7CisgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gdjEgPT0gdjI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxlICh0cnVlKTsK
IH0KIAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RF
cXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxG
b3JDZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYxLCBKU0NlbGwq
IHYyKQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBp
ZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCisg
ICAgaWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
YXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7Ci0gICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2MS0+aXNIZWFw
QmlnSW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmVxdWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8SlNCaWdJbnQq
Pih2MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE2MywxMCArMTIyOCwxNyBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlz
TnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7
CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJu
IHYxID09IHYyOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkg
JiYgdjIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVx
dWFsc1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGlmICh2MS5pc0JpZ0ludDMy
KCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB2Mi5hc0hlYXBCaWdJbnQo
KS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlm
ICh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFs
Rm9yQ2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOwogCi0gICAg
cmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwor
ICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQz
MkZvckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE4NCwxNSArMTI1NiwyMyBAQCBpbmxpbmUgVHJp
U3RhdGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHRy
aVN0YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlz
Q2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYy
KTsKLSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCkt
PmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0
cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2
MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGlmICgh
djFTdHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7
Ci0gICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5n
KSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5p
c0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc0hlYXBCaWdJbnQoKS0+
ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIGlmICh2MS5pc0JpZ0lu
dDMyKCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5h
c0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSkpOworI2Vu
ZGlmCisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpIHsKKyAgICAgICAgaWYg
KHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKSB7Cisg
ICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5
R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9
IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBpZiAoIXYxU3Ry
aW5nIHx8ICF2MlN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3Ry
aW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQo
KSAmJiB2Mi5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gdHJp
U3RhdGUoSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50
KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKQEAgLTEy
MDYsNiArMTI4NiwxMCBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigp
IGNvbnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8g
VHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChp
c0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFuKCk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBiaWdJ
bnQzMkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisjZW5kaWYKICAg
ICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxMzkwYzc2MTlhYy4u
MDY1OTc5ZTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpw
dXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNC
aWdJbnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8
IGNlbGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRU
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAg
LTEyMyw3ICsxMjMsNyBAQCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8
fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+
aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE2
Myw3ICsxNjMsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0
LCBwcmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IHByZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJ
bnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcykt
PnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVj
dCwgcHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBKU0NlbGw6Omdl
dFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51
bWJlciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhp
cyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAg
IGlmIChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9s
Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUp
OwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51
bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0
LCBudW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCBkb3VibGUgSlNDZWxsOjp0
b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7CiB9CkBAIC0xOTYsNyArMTk2LDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmpl
Y3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFp
c09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAg
aWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAyYmVmNGE3ZDhlYy4uMDZlZDRlNzA5MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJv
dGVjdGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNT
dHJpbmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hl
YXBCaWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBp
c09iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAxYzlkMTMy
NDhhOS4uODc5OGM1YTk3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTIwNCw5ICsyMDQsOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlu
bGluZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjpp
c0hlYXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsK
KyAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgYm9vbCBK
U0NlbGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewog
ICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYg
KGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJ
bnQqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xv
YmFsT2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAg
LTM0OSw3ICszNDksNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkg
Y29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFs
c2VUcmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jv
b2xlYW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYgKGlzU3ltYm9s
KCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBjNDBhNTZhZDExNy4uMjNmNWViYzNm
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMTA2Nyw2ICsxMDY3LDcgQEAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJy
YXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW8KIHsKICAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwogICAgIGlmIChpbml0
aWFsTGVuZ3RoID49IE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpCiAgICAg
ICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoQXJyYXlTdG9yYWdlLCBu
ZXdUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXgg
MjJjMDEyMDVjMmYuLjdlOGIyNjBhZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKQEAgLTEwMzgsNiArMTAzOCwxMCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0
b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGFzRG91YmxlKCkgPiAwLjAgfHwgYXNEb3VibGUoKSA8IDAuMDsgLy8gZmFsc2UgZm9yIE5h
TgogICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b0Jvb2xlYW4o
Z2xvYmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuICEhYmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKICAgICByZXR1cm4g
aXNUcnVlKCk7IC8vIGZhbHNlLCBudWxsLCBhbmQgdW5kZWZpbmVkIGFsbCBjb252ZXJ0IHRvIGZh
bHNlLgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCA2
YjNkYzk2N2M0Mi4uNzY3YjU2ZTY0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKENlbGxUeXBlKQogICAgIENBU0Uo
U3RyaW5nVHlwZSkKICAgICBDQVNFKFN5bWJvbFR5cGUpCi0gICAgQ0FTRShCaWdJbnRUeXBlKQor
ICAgIENBU0UoSGVhcEJpZ0ludFR5cGUpCiAgICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBl
KQogICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkKICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFi
bGVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBiN2FhYzI1
NjJjZS4uYjJlMTYyOWRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CkBAIC0yNiw4ICsyNiw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gVGhlIENl
bGxUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxs
LgogICAgIENlbGxUeXBlLAogICAgIFN0cmluZ1R5cGUsCi0gICAgQmlnSW50VHlwZSwKLSAgICBM
YXN0TWF5YmVGYWxzeUNlbGxQcmltaXRpdmUgPSBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRU
eXBlLAorICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLAog
ICAgIFN5bWJvbFR5cGUsCiAKICAgICBHZXR0ZXJTZXR0ZXJUeXBlLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4IDNjZDcxM2Q4NGYzLi44OGUzMGYyMDlk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApAQCAtMTM0
LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZs
YWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZs
YWc7IH0KICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NF
UlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAK
LSAgICB1aW50OF90IG1fdHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOwogICAgIHVpbnQ4X3QgbV9m
bGFnczsKICAgICB1aW50MTZfdCBtX2ZsYWdzMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCmlu
ZGV4IGM0ZWJiZWM1MDM1Li4yN2EyMjFjMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKQEAg
LTI2LDkgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPYmplY3RJbml0
aWFsaXphdGlvblNjb3BlLmgiCiAKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAKaW5kZXggNDkwNWQ1YmFmMDcuLmQzNjdlN2Q1YTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiwxMSArMzYsNiBAQCBib29s
IEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBlcXVhbFNsb3dDYXNlSW5saW5lKGdsb2Jh
bE9iamVjdCwgdjEsIHYyKTsKIH0KIAotYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17
Ci0gICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwg
djIpOwotfQotCiBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7CiAgICAgLy8gZXhj
ZXB0aW9uIGZvciB0aGUgRGF0ZSBleGNlcHRpb24gaW4gZGVmYXVsdFZhbHVlKCkKQEAgLTczLDIx
ICs2OCwyMyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVgogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGpzU3RyaW5nKGdsb2JhbE9iamVjdCwgcDFTdHJpbmcsIGFzU3RyaW5nKHAy
KSkpOwogICAgIH0KIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBwMS50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGF1dG8g
cmlnaHROdW1lcmljID0gcDIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24u
Il9zKTsKLSAgICB9Ci0KLSAgICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0
TnVtZXJpYykgKyBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOworICAgIGF1dG8gZG91
YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAg
ICAgcmV0dXJuIGxlZnQgKyByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtd
IChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgQ2hlY2tlZEludDMyIHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3Vs
dCArPSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkp
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAg
IFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCBw
MSwgcDIsIEpTQmlnSW50OjphZGQsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXgg
b2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcykpOwogfQogCiBKU1ZhbHVl
IGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2KQpAQCAtMTI4LDcgKzEyNSw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1
cm4gdi5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwot
ICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUg
PT0gQmlnSW50VHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3lt
Ym9sVHlwZSB8fCB0eXBlID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmplY3Qodikt
PnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA0YmJlMjNjMDcy
NS4uMTc3ZWRhMGU5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1
ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjM5LDYgKzIzOCwzNSBA
QCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZQogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNl
KCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFy
ZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIHYxLCBKU1ZhbHVlIHByaW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgQVNTRVJUKHByaW1WYWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1
ZS5pc0JpZ0ludCgpKTsKKworICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAg
ICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9i
amVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpV
bmRlZmluZWQpOworICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQorICAgICAgICAgICAgcmV0dXJu
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgaWYgKGJp
Z0ludFZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpj
b21wYXJlKHYxLCBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CisKKyAgICAgICAgQVNTRVJU
KGJpZ0ludFZhbHVlLmlzQmlnSW50MzIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAv
LyBGSVhNRTogdXNlIHNvbWV0aGluZyBsZXNzIGhhY2t5LCBlLmcuIHNvbWUga2luZCBvZiBKU0Jp
Z0ludDo6Y29tcGFyZVRvSW50MzIKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9E
b3VibGUodjEsIHN0YXRpY19jYXN0PGRvdWJsZT4oYmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMy
KCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1
ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0Jp
Z0ludDo6Y29tcGFyZVRvRG91YmxlKHYxLCBudW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJ
TkUgYm9vbCBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNv
bXBhcmlzb25SZXN1bHQsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkK
IHsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpM
ZXNzVGhhbikKQEAgLTI1NSw1MCArMjgzLDQ3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRD
b21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlz
QmlnSW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpj
b21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAg
IAotICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0g
djI7Ci0gICAgICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVj
dCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJp
Z0ludFZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
cmV0dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEp
LCBiaWdJbnRWYWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJl
UmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVl
KSksIGNvbXBhcmlzb25Nb2RlKTsKLQotICAgICAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmlt
VmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwgbnVtYmVyVmFsdWUpLCBjb21wYXJp
c29uTW9kZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYg
djIuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0lu
dDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQorICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0lu
dDMyQXNJbnQzMigpIDwgdjIuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIEFTU0VSVChjb21w
YXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuT3JFcXVhbCk7
CisgICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8PSB2Mi5iaWdJbnQzMkFzSW50
MzIoKTsKICAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB2MTsKLSAgICBpZiAo
cHJpbVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0g
SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVl
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisjZW5kaWYKKworICAgIEpTQmlnSW50KiB2MUhlYXBC
aWdJbnQgPSBudWxscHRyOworICAgIEpTQmlnSW50KiB2MkhlYXBCaWdJbnQgPSBudWxscHRyOwor
ICAgIC8vIEZJWE1FOiBoYXZlIHNvbWUgZmFzdC1pc2ggcGF0aCBmb3IgYSBjb21wYXJpc29uIGJl
dHdlZW4gYSBzbWFsbCBhbmQgYSBsYXJnZSBiaWctaW50CisgICAgaWYgKHYxLmlzSGVhcEJpZ0lu
dCgpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQzMigpKQorICAgICAgICB2MUhlYXBC
aWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjEuYmlnSW50MzJBc0ludDMyKCkpOwor
I2VuZGlmCisKKyAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHYySGVhcEJpZ0lu
dCA9IHYyLmFzSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2
Mi5pc0JpZ0ludDMyKCkpCisgICAgICAgIHYySGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MUhlYXBC
aWdJbnQgJiYgdjJIZWFwQmlnSW50KQorICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3Vs
dChKU0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBCaWdJbnQsIHYySGVhcEJpZ0ludCksIGNvbXBhcmlz
b25Nb2RlKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQpIHsKKyAgICAgICAgYXV0byBjb21wYXJp
c29uUmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2
MUhlYXBCaWdJbnQsIHYyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwotICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJl
KGJpZ0ludFZhbHVlLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7CisgICAgICAgIHJl
dHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25SZXN1bHQsIGNvbXBhcmlzb25Nb2Rl
KTsKICAgICB9Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICBy
ZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludChwcmlt
VmFsdWUpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgZG91Ymxl
IG51bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCisgICAgYXV0byBjb21wYXJpc29uUmVz
dWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MkhlYXBC
aWdJbnQsIHYxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAg
Ly8gSGVyZSB3ZSBjaGVjayBpbnZlcnRlZCBiZWNhdXNlIEJpZ0ludCBpcyB0aGUgdjIKLSAgICBK
U0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0ID0gSlNCaWdJbnQ6OmNv
bXBhcmVUb0RvdWJsZShhc0JpZ0ludCh2MiksIG51bWJlclZhbHVlKTsKICAgICBpZiAoY29tcGFy
aXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKICAgICAgICAg
cmV0dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6Okdy
ZWF0ZXJUaGFuOwotCiAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNv
bXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIHx8IGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJ
bnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCkBAIC0zNTcsNyArMzgyLDcgQEAgQUxX
QVlTX0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAg
ICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5p
c0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpD
b21wYXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3LDcgKzQzMiw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlm
ICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmln
SW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBh
cmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzcsMzQ5IEBAIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9i
amVjdCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQz
Mk9wIGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQg
dW5ib3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0
eXBlbmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmln
SW50T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJP
cCwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2
MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3Qp
OworICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3Qs
IFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVt
ZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51
bWVyaWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlm
IChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNC
aWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRI
ZWFwQmlnSW50KSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0
LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAg
IGlmIChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCog
cmlnaHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5i
aWdJbnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGhlYXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCBy
aWdodEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJ
bnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVy
aWMuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShiaWdJ
bnQzMk9wKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHROdW1l
cmljLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhl
YXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdo
dE51bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICByZXR1
cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3Vi
bGU+KHJpZ2h0TnVtZXJpYykpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0
byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgewor
ICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICBDaGVja2VkSW50MzIgcmVzdWx0ID0gbGVmdDsKKyAgICAgICAg
cmVzdWx0IC09IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc092ZXJmbG93
ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vsc2UKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKwor
ICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmln
SW50OjpzdWIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc011bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSBy
aWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9Owor
ICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+
IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgQ2hlY2tlZEludDMyIHJlc3Vs
dCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAqPSByaWdodDsKKyAgICAgICAgaWYgKHJlc3VsdC5o
YXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOwor
I2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0o
cmlnaHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisg
ICAgfTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwg
djIsIEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1p
eCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKwor
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3Vi
bGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAv
IHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwg
aW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBp
ZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAg
ICAgIFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAg
ICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0lu
dDo6ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3Vi
bGUgcmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7
CisgICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4g
SlNWYWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVy
ZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRo
bWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwg
ZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQorewor
ICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91
YmxlIHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAg
IH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFs
dWUgeworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3
aGF0IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93Lgor
ICAgICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0
aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisg
ICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJ
bnQ6OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgdikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9
IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAg
ICAgaW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmlj
LmJpZ0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5n
IG5leHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxw
ZXIgZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdW
YWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVh
cEJpZ0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMo
Z2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmlj
ID0gdi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAg
IHJldHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAg
ICAgICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dp
bmcgbmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhl
bHBlciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5l
d1ZhbHVlKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNI
ZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRl
YyhnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJh
bmROdW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkp
OworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMy
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5k
TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5k
TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJp
Z0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBzaGlmdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBib29sIGlzTGVmdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVm
dE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGxlZnROdW1l
cmljID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByaWdo
dE51bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJpZ2h0TnVt
ZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykp
OworICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIo
KSkgeworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsK
KyAgICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMx
OworICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJ
bnQzMikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1i
ZXIocmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1l
cmljLmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IGludDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAg
ICAgIGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsK
KyAgICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNM
ZWZ0OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBi
dXQgcmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRv
IGEgc2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0
aGUgYml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMy
ID4+IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ug
b2YgYSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxv
Y2F0aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2li
bGUgdG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBh
bmQgZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQq
IGxlZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7Cisg
ICAgICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgcmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0
SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVh
cEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShs
ZWZ0TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAg
ICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4i
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJy
b3JNZXNzYWdlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBjYXNl
IGZvciBsZWZ0IGlzIEhlYXBCaWdJbnQgYW5kIHJpZ2h0IGlzIEJpZ0ludDMyLCBpdCBzZWVtcyBm
YWlybHkgbGlrZWx5IHRvIG9jY3VyIGZyZXF1ZW50bHkuCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IEpTQmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpT
QmlnSW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBs
ZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50
ID0gcmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBy
aWdodE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpOworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5h
c0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1l
cmljLmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0
LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRI
ZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzTFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpCit7CisgICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9i
YWxPYmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAg
V1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAg
V1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0
VmFsdWUgKiByaWdodFZhbHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGJvb2wgaXNMZWZ0ID0gZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEs
IHYyLCBpc0xlZnQpOwogfQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlv
bj4KK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlv
biYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZSkKIHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJi
bGVGcmVlQ2VsbHMoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJp
YyA9IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9y
SW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQz
MigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMy
KCksIHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVm
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSkpOworICAgIC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJ
bnQsIGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0
aGVzZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRo
ZSBzbWFsbCBiaWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAg
Ly8gQnV0IGl0IGlzIHF1aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1
c2UgYSBzaWduIGJpdCB3aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50
YXRpb24uCisjZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmln
aHROdW1lcmljLmlzQmlnSW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDog
bGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0lu
dCA9IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cmlnaHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyNlbHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMu
YXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVt
ZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBiaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJ
bnQpKTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90Pigw
eGJhZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8g
aW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgewor
ICAgICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3Vy
cmVudGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5k
IiBhbmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhl
IEpTVmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2
MiwgSlNCaWdJbnQ6OmJpdHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5s
aW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0g
SlNWYWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7Cisg
ICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50
MzJfdCB7CisgICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJ
WE1FOiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8g
dGhlICJvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5
IG9uIHRoZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0
LCB2MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQog
Ci1pbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBh
bGlnbmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAg
ICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVu
Y29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBh
dXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90
IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6
IGN1cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUg
InhvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9u
IHRoZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQg
dGhlIGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGds
b2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlv
bi4iX3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aElu
ZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3Qg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJu
IEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNk
ZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKwor
aW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8
SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lk
KiBiYXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGln
bmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAg
ICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29k
ZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmlu
ZGV4IDVmYTcwMTNjYjdmLi5mMTZjMDJhNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjc5LDcgKzI3OSw3IEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90
eXBlKCk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmln
SW50VHlwZSkKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmln
SW50VHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7
CiAKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBhZWMyZmVmYWM5Yi4uNWMw
ZWUyNjEzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ5NCw3ICs0
OTQsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAg
IHNlbnRpbmVsTWFwQnVja2V0KCk7CiAgICAgICAgIHNlbnRpbmVsU2V0QnVja2V0KCk7CiAgICAg
fQotICAgIGJpZ0ludENvbnN0YW50T25lLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
KnRoaXMsIDEpKTsKKyAgICBoZWFwQmlnSW50Q29uc3RhbnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSgqdGhpcywgMSkpOwogCiAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3Vy
cmVudEF0b21TdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGI0MWRjZTdkYzllLi4xMjg2MmE0MGNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03MjYsNyArNzI2LDcgQEAgcHVi
bGljOgogICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9hdG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xS
ZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAotICAgIFN0cm9uZzxKU0Jp
Z0ludD4gYmlnSW50Q29uc3RhbnRPbmU7CisgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50
Q29uc3RhbnRPbmU7CiAKICAgICBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGIwNmJlYzI5
Y2QuLjJjMDA5YjZjZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCkBAIC0yMjA1LDcgKzIyMDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IHVpbnQ4X3QqIHZtU3RhY2tFbmQgPSB2bVN0YWNrU3RhcnQgLSBvcmlnaW5hbE1heFBlclRocmVh
ZFN0YWNrVXNhZ2U7CiAgICAgcHRyZGlmZl90IHNpemVEaWZmID0gdm1TdGFja0VuZCAtIGVuZDsK
ICAgICBSRUxFQVNFX0FTU0VSVChzaXplRGlmZiA+PSAwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChz
aXplRGlmZiA8IFVJTlRfTUFYKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oc2l6ZURpZmYpIDwgVUlOVF9NQVgpOwogCiAgICAgT3B0aW9uczo6bWF4UGVyVGhyZWFk
U3RhY2tVc2FnZSgpID0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlICsgc2l6ZURpZmY7
CiAgICAgaGVscGVyLnVwZGF0ZVZNU3RhY2tMaW1pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzBiYjViMjllM2IuLmVm
ZGNhZjViYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTA2ICBSb2JpbiBNb3Jpc3Nl
dCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxpbmVkIHJl
cHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMyIikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJ
R0lOVDMyKSBmbGFnLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDQt
MTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0VHlwZWRB
cnJheUJ5dGVPZmZzZXQgaXMgYnJva2VuIG9uIGFybTY0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXgg
MzY5NjQ3ZThiOWEuLjVkMzgxOTQxNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTEzOSw2ICsx
MzksMTAgQEAKICNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFk
ZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQpICovCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2RlZmlu
ZSBVU0VfQklHSU5UMzIgMAorI2VuZGlmCisKIC8qIEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJl
IG1vcmUgc3BlY2lmaWMgaWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwog
LyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBDYWxsRnJhbWUqICovCiAj
aWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQp
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggYzRlMDhmMGZmNGYuLmIwNTc5OTNj
OTdmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTcwMiw2ICs3MDIsMTQgQEAg
ZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBy
dW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVzZUJpZ0ludD10cnVlIiAsICooRlRMX09QVElPTlMg
KyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFi
bGVkTm9KSVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQt
ZW5hYmxlZC1ub2ppdCIsICItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlSklUPWZhbHNlIiwgKm9w
dGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKK2VuZAorCitkZWYgcnVuQmlnSW50RW5hYmxlZEJh
c2VsaW5lKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVu
YWJsZWQtYmFzZWxpbmUiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD0wIiwgKm9w
dGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRp
b25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihG
VExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykpCiBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396855</attachid>
            <date>2020-04-18 10:15:20 -0700</date>
            <delta_ts>2020-04-18 18:33:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>410736</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZDdjODI1NzBlMDUuLjlhYjVjOTk4YTAwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSSBp
bXByb3ZlZCBzZXZlcmFsIG9mIHRoZSB0ZXN0cyB0byBnaXZlIG1vcmUgaW5mb3JtYXRpdmUgZXJy
b3IgbWVzc2FnZXMgaW4gdGhlIHByb2Nlc3Mgb2YgZml4aW5nIHRoZW0uCisKKyAgICAgICAgTW9y
ZSBpbnRlcmVzdGluZ2x5IEkgaGFkIHRvIG1vZGlmeSAibWlzc2luZy1leGNlcHRpb24tY2hlY2st
aW4tc3RyaW5nLWNvbXBhcmUiIGJlY2F1c2UgaXQgcmVsaWVkIG9uICJzMSA9PSBzMSIgcmVzb2x2
aW5nIHJvcGVzLCBhbmQgd2Ugbm93IGp1c3QgcmV0dXJuIHRydWUuCisKKyAgICAgICAgKiBzdHJl
c3MvYmlnLWludC1kaXZpc2lvbi5qczoKKyAgICAgICAgKHRlc3REaXYpOgorICAgICAgICAqIHN0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qczoKKyAgICAgICAgKGFzc2Vy
dC5zYW1lVmFsdWUpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzOgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzOgor
ICAgICAgICAqIHN0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanM6CisgICAgICAg
ICh0ZXN0UmlnaHRTaGlmdCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92
ZW4tdHlwZS5qczoKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2NvbXBhcmUt
c3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanM6CisgICAgICAgICh0ZXN0QWxsVHlwZXNDYWxs
KToKKyAgICAgICAgKiBzdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanM6CisgICAg
ICAgICogc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpz
OgorCiAyMDIwLTA0LTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0IGlzIGJyb2tlbiBvbiBhcm02NGUKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWRpdmlzaW9uLmpzCmluZGV4IDQwMTg5MGFkNjMxLi4zZTUxMGI5ZDg5NyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCkBAIC0xLDQgKzEsNSBAQAogLy9AIHJ1bkJpZ0ludEVu
YWJsZWQKKy8vQCBydW5CaWdJbnRFbmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3
IFJvYmluIFRlbXBsZXRvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBn
b3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KQEAg
LTE0LDcgKzE1LDcgQEAgYXNzZXJ0LnNhbWVWYWx1ZSA9IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdERpdih4LCB5LCB6KSB7Ci0gICAgYXNz
ZXJ0LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgeik7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZSh4IC8geSwgeiwgeCArICIgLyAiICsgeSArICIgPSAiICsgKHgveSkg
KyAiIGJ1dCBzaG91bGQgYmUgIiArIHopOwogfQogCiB0ZXN0RGl2KDB4RkVEQ0JBOTg3NjU0MzIx
MG4sIDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4MW4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1sZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcwppbmRleCBjNjlkYmRhMzNkMy4uZjgx
MmIxY2JhNDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13
cmFwcGVkLXZhbHVlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13
cmFwcGVkLXZhbHVlLmpzCkBAIC0zLDcgKzMsNyBAQAogYXNzZXJ0ID0gewogICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogICAgICAgICBpZiAoaW5w
dXQgIT09IGV4cGVjdGVkKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOwor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgKyAiIGlucHV0OiAiICsgaW5wdXQg
KyAiICE9IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LWxvZ2ljYWwtbm90LmpzCmluZGV4IGFmMjhhNzJiMWMzLi5kMDJlNTUyZjljNyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzCkBAIC0xLDggKzEsOCBAQAogLy9AIHJ1
bkJpZ0ludEVuYWJsZWQKIAotZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlLCBuKSB7CiAgICAgaWYgKGEgIT09IGUpIHsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJCYWQhIik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGxvZ2ljYWwgbmVnYXRpb24g
Zm9yICIgKyBuKTsKICAgICB9CiB9CiAKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24gbG9naWNh
bE5vdChhKSB7CiBub0lubGluZShsb2dpY2FsTm90KTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDA7IGkrKykgewotICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlKTsKLSAgICBh
c3NlcnQobG9naWNhbE5vdCgxbiksIGZhbHNlKTsKLSAgICBhc3NlcnQobG9naWNhbE5vdCgwbiks
IHRydWUpOwotICAgIGFzc2VydChsb2dpY2FsTm90KC0xbiksIGZhbHNlKTsKKyAgICBhc3NlcnQo
bG9naWNhbE5vdCgxMG4pLCBmYWxzZSwgMTBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgxbiks
IGZhbHNlLCAxbik7CisgICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMG4pLCB0cnVlLCAwbik7CisgICAg
YXNzZXJ0KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UsIC0xbik7CiB9CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
bW9kLWppdC5qcwppbmRleCA4MWM1ZGE3YzViYy4uODU5NTQwYzg1MzEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LW1vZC1qaXQuanMKQEAgLTI1LDkgKzI1LDkgQEAgbm9JbmxpbmUoYmlnSW50TW9kRm9sZGlu
Zyk7CiAKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCByID0gYmln
SW50TW9kRm9sZGluZygxMCwgMzApOwotICAgIGFzc2VydC5zYW1lVmFsdWUociwgLTEwLCAiLSgi
ICsgMTAgKyAiICUgIiArIDMwICsgIikgPSAiICsgcik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShy
LCAtMTAsICJbTnVtYmVyXSAtKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKIH0K
IAogbGV0IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwbiwgMzBuKTsKLWFzc2VydC5zYW1lVmFsdWUo
ciwgLTEwbiwgIi0oIiArIDEwbiArICIgJSAiICsgMzBuICsgIikgPSAiICsgcik7Cithc3NlcnQu
c2FtZVZhbHVlKHIsIC0xMG4sICJbQmlnSW50XSAtKCIgKyAxMG4gKyAiICUgIiArIDMwbiArICIp
ID0gIiArIHIpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxp
Y2F0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5qcwppbmRl
eCAzZWNkNjM2ZDdmOC4uN2NlNWFjZmZjZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtbXVsdGlwbGljYXRpb24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tdWx0
aXBsaWNhdGlvbi5qcwpAQCAtMSwxOCArMSwxOCBAQAogLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKy8v
QCBydW5CaWdJbnRFbmFibGVkTm9KSVQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IFJvYmluIFRl
bXBsZXRvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBi
eSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIAotYXNzZXJ0ID0g
ewotICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewot
ICAgIGlmIChpbnB1dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKLSAgICB9Ci19OworZnVuY3Rpb24gdGVzdE9uZU11bCh4LCB5LCB6KSB7CisgICAgbGV0
IHJlc3VsdCA9IHggKiB5OworICAgIGlmIChyZXN1bHQgIT09IHopCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQ29tcHV0aW5nICIgKyB4ICsgIiAqICIgKyB5ICsgIiByZXN1bHRlZCBpbiAiICsg
cmVzdWx0ICsgIiBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAiICsgeik7Cit9CiAKIGZ1bmN0aW9u
IHRlc3RNdWwoeCwgeSwgeikgewotICAgIGFzc2VydC5zYW1lVmFsdWUoeCAqIHksIHosIHggKyAi
ICogIiArIHkgKyAiID0gIiArIHopOwotICAgIGFzc2VydC5zYW1lVmFsdWUoeSAqIHgsIHosIHkg
KyAiICogIiArIHggKyAiID0gIiArIHopOworICAgIHRlc3RPbmVNdWwoeCwgeSwgeik7CisgICAg
dGVzdE9uZU11bCh5LCB4LCB6KTsKIH0KIAogdGVzdE11bCgweEZFRENCQTk4NzY1NDMyMTBuLCAw
eEZFRENCQTk4NzY1NDMyMTBuLCAweEZEQkFDMDk3QzhEQzVBQ0NERUVDNkNEN0E0NEE0MTAwbik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwu
anMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKaW5kZXgg
NGU1OGNhNjA3NDAuLmQwMmFhY2I1MWRjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1y
aWdodC1zaGlmdC1nZW5lcmFsLmpzCkBAIC0xLDEwNCArMSw2MyBAQAogLy9AIHJ1bkJpZ0ludEVu
YWJsZWQKIAogLy8gQ29weXJpZ2h0IChDKSAyMDE3IEpvc2ggV29sZmUuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUuIEFsbCByaWdodHMgcmVzZXJ2ZWQK
IC8vIFRoaXMgY29kZSBpcyBnb3Zlcm5lZCBieSB0aGUgQlNEIGxpY2Vuc2UgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIAotZnVuY3Rpb24gYXNzZXJ0KGEpIHsKLSAgICBpZiAoIWEpCi0gICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworZnVuY3Rpb24gdGVzdFJpZ2h0
U2hpZnQobGVmdCwgcmlnaHQsIGV4cGVjdGVkKQoreworICAgIHZhciByZXN1bHQgPSBsZWZ0ID4+
IHJpZ2h0OworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIiIgKyBsZWZ0ICsgIiwgIiArIHJpZ2h0ICsgIiByZXN1bHRlZCBpbiAiICsgcmVzdWx0
ICsgIiBidXQgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKIH0KIAotYXNzZXJ0LnNhbWVWYWx1ZSA9
IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKLSAgICBpZiAoaW5wdXQgIT09
IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Citmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAgOyArK2kpIHsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgMG4sIDBuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0xbiwgMGIxMDEwbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMGIxMDFuLCAtMm4sIDBiMTAxMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4s
IC0zbiwgMGIxMDEwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDFuLCAwYjEwbik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoMGIxMDFuLCAybiwgMW4pOworICAgIHRlc3RSaWdodFNoaWZ0
KDBiMTAxbiwgM24sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwbiwgLTEyOG4sIDBuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgwbiwgMTI4biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2
biwgMG4sIDB4MjQ2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAtMTI3biwgMHgxMjMw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4
MjQ2biwgLTEyOG4sIDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0xMjluLCAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgyNDZuLCAxMjhuLCAwbik7Cisg
ICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4sIC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAw
MDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzgwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAwbiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4sIDY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jhbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIDB4
MjQ2OGFjbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3OG4sIDEyOG4sIDB4MTIzNDU2bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOW4sIDB4OTFhMmJuKTsK
KyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIC0xbiwgLTB4YW4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC01biwgLTJuLCAtMHgxNG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTNuLCAtMHgyOG4p
OworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgMW4sIC0zbik7CisgICAgdGVzdFJpZ2h0U2hpZnQo
LTVuLCAybiwgLTJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtNW4sIDNuLCAtMW4pOworICAgIHRl
c3RSaWdodFNoaWZ0KC0xbiwgLTEyOG4sIC0weDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0xbiwgMG4sIC0xbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoLTFuLCAxMjhuLCAtMW4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDBuLCAt
MHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI3biwgLTB4MTIzMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZu
LCAtMTI4biwgLTB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0
ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgyNDZuLCAxMjhuLCAtMW4pOwor
ICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biwgLTY0biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAw
MDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAtMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTZuLCAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM1bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAzMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzM24pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jibik7
CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuLCAxMjduLCAtMHgyNDY4YWRuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDEyOG4sIC0weDEyMzQ1N24pOworICAg
IHRlc3RSaWdodFNoaWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
biwgMTI5biwgLTB4OTFhMmNuKTsKIH0KLQotYXNzZXJ0LnNhbWVWYWx1ZSgwbiA+PiAwbiwgMG4s
ICIwbiA+PiAwbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IC0xbiwgMGIx
MDEwbiwgIjBiMTAxbiA+PiAtMW4gPT09IDBiMTAxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIx
MDFuID4+IC0ybiwgMGIxMDEwMG4sICIwYjEwMW4gPj4gLTJuID09PSAwYjEwMTAwbiIpOwotYXNz
ZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gLTNuLCAwYjEwMTAwMG4sICIwYjEwMW4gPj4gLTNuID09
PSAwYjEwMTAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDFuLCAwYjEwbiwgIjBi
MTAxbiA+PiAxbiA9PT0gMGIxMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDJuLCAx
biwgIjBiMTAxbiA+PiAybiA9PT0gMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMGIxMDFuID4+IDNu
LCAwbiwgIjBiMTAxbiA+PiAzbiA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMG4gPj4gLTEy
OG4sIDBuLCAiMG4gPj4gLTEyOG4gPT09IDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBuID4+IDEy
OG4sIDBuLCAiMG4gPj4gMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoMHgyNDZuID4+
IDBuLCAweDI0Nm4sICIweDI0Nm4gPj4gMG4gPT09IDB4MjQ2biIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gLTEyN24sIDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBu
LCAiMHgyNDZuID4+IC0xMjduID09PSAweDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gLTEyOG4sIDB4MjQ2MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZuID4+IC0xMjhuID09PSAweDI0NjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4g
Pj4gLTEyOW4sIDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiMHgyNDZu
ID4+IC0xMjluID09PSAweDQ4YzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgweDI0Nm4gPj4gMTI4biwgMG4sICIweDI0Nm4gPj4gMTI4biA9PT0g
MG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzgwMDAwMDAwMDAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzgwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiwgMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVm
MGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0g
IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIDB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwKLSAgIjB4MTIzNDU2Nzg5
YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4gPT09IDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAg
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIDB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxNm4sIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNG4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxNm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNG4i
KTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzJuLAotICAi
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuID09PSAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhbiwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIz
NDU2NzhuID4+IDY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
MTI3biwgMHgyNDY4YWNuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMTI3biA9PT0gMHgyNDY4YWNuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAweDEyMzQ1Nm4s
Ci0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuID09
PSAweDEyMzQ1Nm4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIDB4OTFhMmJuLAotICAiMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0gMHg5MWEyYm4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoLTVuID4+IC0xbiwgLTB4YW4sICItNW4gPj4gLTFuID09PSAtMHhhbiIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTJuLCAtMHgxNG4sICItNW4gPj4gLTJuID09PSAt
MHgxNG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IC0zbiwgLTB4MjhuLCAiLTVuID4+IC0z
biA9PT0gLTB4MjhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAxbiwgLTNuLCAiLTVuID4+
IDFuID09PSAtM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDJuLCAtMm4sICItNW4gPj4g
Mm4gPT09IC0ybiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gM24sIC0xbiwgIi01biA+PiAz
biA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAtMTI4biwgLTB4MTAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0xbiA+PiAtMTI4biA9PT0gLTB4MTAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMW4gPj4gMG4s
IC0xbiwgIi0xbiA+PiAwbiA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0xbiA+PiAxMjhu
LCAtMW4sICItMW4gPj4gMTI4biA9PT0gLTFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4g
Pj4gMG4sIC0weDI0Nm4sICItMHgyNDZuID4+IDBuID09PSAtMHgyNDZuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKC0weDI0Nm4gPj4gLTEyN24sIC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwbiwgIi0weDI0Nm4gPj4gLTEyN24gPT09IC0weDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjhuLCAtMHgy
NDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjhuID09
PSAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1l
VmFsdWUoLTB4MjQ2biA+PiAtMTI5biwgLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI5biA9PT0gLTB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4gMTI4biwgLTFuLCAi
LTB4MjQ2biA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtNjRuLCAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4gPT09IC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFz
c2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1
Njc4biA+PiAtMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAw
MDAwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+
PiAtMzJuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IC0xNm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gLTE2biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2
NzgwMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IDBuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3
OG4gPj4gMG4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biIp
OwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IDE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNW4s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuID09
PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM1biIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMy
biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiwKLSAgIi0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAzMm4gPT09IC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzM24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiA2NG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmJuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+
IDY0biA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYm4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
Ci0gIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduLCAt
MHgyNDY4YWRuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDEyN24gPT09IC0weDI0NjhhZG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjhuLCAtMHgxMjM0NTduLAot
ICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4gPT09
IC0weDEyMzQ1N24iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluLCAtMHg5MWEyY24sCi0gICItMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biA9PT0gLTB4OTFhMmNuIik7
Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlw
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwppbmRl
eCBkMmY1Mzk3OThjNS4uZGUxMjJjOWRmZDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LXR5cGUtb2YtcHJvdmVuLXR5cGUuanMKQEAgLTEsOCArMSw4IEBACiAvL0AgcnVuRGVmYXVsdCgi
LS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQogCi1mdW5jdGlv
biBhc3NlcnQoYSkgewotICAgIGlmICghYSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
YXNzZXJ0aW9uIik7CitmdW5jdGlvbiBhc3NlcnQoaW5wdXQsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgcmVzdWx0
OiAiICsgaW5wdXQpOwogfQogCiBmdW5jdGlvbiBmb28obykgewpAQCAtMTMsNiArMTMsNSBAQCBm
dW5jdGlvbiBmb28obykgewogbm9JbmxpbmUoZm9vKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGZvbygzbikgPT09ICIzIik7CisgICAgYXNzZXJ0KGZv
bygzbiksICIzIik7CiB9Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVt
YmVyLWFuZC1vdGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhl
ci5qcwppbmRleCA4NTQ2YmYzN2VhMS4uODI1ZTg1ZDZiNjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9j
b21wYXJlLW51bWJlci1hbmQtb3RoZXIuanMKQEAgLTU5LDE3ICs1OSwxNyBAQCBmb3IgKGxldCBv
cGVyYXRvciBvZiBvcGVyYXRvcnMpIHsKICAgICAgICAgICAgIG5vSW5saW5lKHRlc3RNb25vbW9y
cGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KTsKIAogICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA1MDA7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21v
cnBoaWMke3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0
fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4fSgk
e2xlZnR9LCAke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAgICAg
ICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwg
JHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0
YW50JHt0ZXN0Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT0gJHtsbGludFJlc3VsdH0pCisgICAgICAg
ICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJbmRleH0o
JHtyaWdodH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cg
IkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmln
aHR9KSI7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQk
e3Rlc3RDYXNlSW5kZXh9KCR7bGVmdH0pICE9ICR7bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAg
ICAgIGlmICh0ZXN0TW9ub21vcnBoaWNSaWdodENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xl
ZnR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAgICAgICAgICAgICAgIHRocm93ICJGYWls
ZWQgdGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0Q2FzZUluZGV4fSgke2xlZnR9KSI7
CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RQb2x5bW9ycGhpYygke2xlZnR9LCAke3JpZ2h0fSkg
IT09ICR7bGxpbnRSZXN1bHR9KQotICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHBv
bHltb3JwaGljVmVyc2lvbigke2xlZnR9KSI7CisgICAgICAgICAgICAgICAgICAgIHRocm93ICJG
YWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0sICR7b3BlcmF0b3J9LCAke3JpZ2h0fSwg
ZXhwZWN0ZWQgcmVzdWx0OiAke2xsaW50UmVzdWx0fSkiOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYCk7CiAgICAgICAgICAgICArK3Rlc3RDYXNlSW5kZXg7CiAgICAgICAgIH0KICAgICB9
Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKaW5kZXggYWYyMjgzZjhl
ZTQuLjdmNWNiMTA0ZTMzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmlj
dC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NvbXBhcmUtc3Ry
aWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKQEAgLTgzLDcgKzgzLDggQEAgZnVuY3Rpb24gdGVz
dEFsbFR5cGVzQ2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiAr
CiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0
RXF1YWxPdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRD
YXNlSW5kZXggKyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgbGV0IHN0cmljdE5vdEVxdWFsT3V0cHV0ID0gb3BhcXVlU3Ry
aWN0Tm90RXF1YWxBbGxUeXBlcyhsZWZ0Q2FzZXNbbGVmdENhc2VJbmRleF0sIHJpZ2h0Q2FzZXNb
cmlnaHRDYXNlSW5kZXhdKTsKQEAgLTkzLDcgKzk0LDggQEAgZnVuY3Rpb24gdGVzdEFsbFR5cGVz
Q2FsbCgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJpZ2h0ID0gIiArCiAgICAgICAg
ICAgICAgICAgICAgICAgICByaWdodENhc2VzW3JpZ2h0Q2FzZUluZGV4XSArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAiLCBSZXN1bHQgPSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
cmljdEVxdWFsT3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRw
dXQgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAoY2FzZTogIiArIGxlZnRDYXNlSW5kZXgg
KyAiLCAiICsgcmlnaHRDYXNlSW5kZXggKyAiKSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5n
LXN0cmljdC1lcXVhbGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Z0bC1zdHJpbmctc3RyaWN0LWVx
dWFsaXR5LmpzCmluZGV4IDA0M2E3NjA3YTRmLi44ZTk2Y2Y0NDI4OSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanMKQEAgLTMwLDYgKzMwLDYgQEAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewogICAgIHZhciByZXN1bHQgPSBmb28oYXJy
YXksIGFycmF5MltpbmRleF0pOwogICAgIHZhciBleHBlY3RlZCA9IGluZGV4ID49IGFycmF5Lmxl
bmd0aCA/IG51bGwgOiBpbmRleAogICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQotICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdCArICIgYnV0IGV4cGVjdGVkICIgKyBleHBlY3Rl
ZDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRpb24tY2hl
Y2staW4tc3RyaW5nLWNvbXBhcmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4Y2VwdGlv
bi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcwppbmRleCA5NjVhN2Q3M2I3MS4uZGQ4NWE4Mzg3
ZmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWlu
LXN0cmluZy1jb21wYXJlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21pc3NpbmctZXhjZXB0aW9u
LWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCkBAIC0xLDYgKzEsOCBAQAogY29uc3QgczEgPSAo
LTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScpOworY29uc3QgczIgPSAo
LTEpLnRvTG9jYWxlU3RyaW5nKCkucGFkRW5kKDIqKjMxLTEsICdhYScpOwogdHJ5IHsKLSAgICBz
MSA9PSBzMTsKKyAgICAvLyBGb3JjZSBldmFsdWF0aW9uIG9mIFJvcGUKKyAgICBzMSA9PSBzMjsK
IH0gY2F0Y2ggKGUpIHsKICAgICBleGNlcHRpb24gPSBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGJhNjIwMTkwMjMyLi4yYzdhN2RlNjllNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTg2LDYgKzk4Niw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmgKICAgICBydW50aW1lL1Njb3BlT2Zmc2V0LmgKICAgICBydW50aW1lL1Njb3BlZEFyZ3Vt
ZW50c1RhYmxlLmgKKyAgICBydW50aW1lL1NjcmliYmxlLmgKICAgICBydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgKICAgICBydW50
aW1lL1NjcmlwdEZldGNoZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggY2ViNWRjYTA1
NDMuLmU1ZjljNmI2ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODcg
QEAKKzIwMjAtMDQtMDYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IGFuIGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBz
bWFsbCBCaWdJbnRzICgiQmlnSW50MzIiKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1
enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRvIG9wdGltaXplIHRoZSBwZXJm
b3JtYW5jZSBvZiBCaWdJbnRzLCB3aGVuIHRoZXkgYXJlIHNtYWxsICgzMiBiaXQgb3IgbGVzcyku
CisgICAgICAgIEl0IHdvcmtzIGJ5IGlubGluaW5nIHRoZW0gaW50byBKU1ZhbHVlIG9uIDY0LWJp
dCBwbGF0Zm9ybXMsIGF2b2lkaW5nIHRoZSBhbGxvY2F0aW9uIG9mIGEgSlNCaWdJbnQuCisgICAg
ICAgIFRoZSBiaXQgcGF0dGVybiB3ZSB1c2UgaXMgMDAwMDpYWFhYOlhYWFg6MDAxMgorICAgICAg
ICBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGlu
Z3M6CisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBEb3VibGUgb3IgSW50
ZWdlciB0aGFua3MgdG8gdGhlIHRvcCBiaXRzCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1
c2VkIHdpdGggYSBwb2ludGVyIHRvIGEgQ2VsbCwgdGhhbmtzIHRvIGJpdCAxIHdoaWNoIGlzIHNl
dCB0byB0cnVlCisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVy
IHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAgICAt
IEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIHRydWUvZmFsc2UgYmVjYXVzZSBiaXQgMiBpcyBz
ZXQgdG8gZmFsc2UKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgZm9yIG51bGwvdW5k
ZWZpbmVkIGJlY2F1c2UgYml0IDQgaXMgc2V0IHRvIHRydWUKKworICAgICAgICBUaGlzIGVudGly
ZSBjaGFuZ2UgaXMgZ2F0ZWQgYnkgVVNFKEJJR0lOVDMyKSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8g
ZGlzYWJsZSBpZiBpdCB0dXJucyBvdXQgdG8gaGF2ZSBidWdzLgorICAgICAgICBJdCBzaG91bGQg
YWxzbyBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvIHZlcmlmeSBpZiBhIGdpdmVuIGJ1ZyBjb21lcyBm
cm9tIGl0IG9yIGZyb20gc29tZXRoaW5nIGVsc2UuCisKKyAgICAgICAgTm90ZSB0aGF0IGluIHRo
aXMgcGF0Y2ggd2UgY3JlYXRlIEJpZ0ludDMycyB3aGVuIHBhcnNpbmcgc21hbGwgQmlnSW50IGNv
bnN0YW50cywgYW5kIG1vc3Qgb3BlcmF0aW9ucyAoZS5nLiBBZGQgb3IgQml0T3IpIHByb2R1Y2Ug
YSBCaWdJbnQzMiBpZiBib3RoIG9mIHRoZWlyIG9wZXJhbmRzIGFyZSBCaWdJbnQzMiwKKyAgICAg
ICAgYnV0IHdlIGRvbid0IHByb2R1Y2UgYSBCaWdJbnQzMiBmcm9tIGZvciBleGFtcGxlIHRoZSBz
dWJzdHJhY3Rpb24vZGl2aXNpb24gb2YgdHdvIGxhcmdlIGhlYXAtYWxsb2NhdGVkIEpTQmlnSW50
cywgZXZlbiBpZiB0aGUgcmVzdWx0IGZpdHMgaW4gMzItYml0cy4KKyAgICAgICAgQXMgYSByZXN1
bHQsIHNtYWxsIEJpZ0ludHMgY2FuIG5vdyBlaXRoZXIgYmUgaGVhcC1hbGxvY2F0ZWQgb3IgaW5s
aW5lZCBpbiB0aGUgSlNWYWx1ZS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIGEgc2ln
bmlmaWNhbnQgcmVmYWN0b3Igb2YgdmFyaW91cyBzbG93IHBhdGhzLCB3aGljaCBhcmUgbm93IGdy
b3VwZWQgdG9nZXRoZXIgaW4gT3BlcmF0aW9ucy5oCisgICAgICAgIEJlY2F1c2UgdGhpcyBpbmNy
ZWFzZWQgdGhlIHNpemUgb2YgT3BlcmF0aW9ucy5oIHNpZ25pZmljYW50bHksIEkgc3BsaXQgdGhl
IHBhcnRzIG9mIE9wZXJhdGlvbnMuaCB3aGljaCBhcmUgb25seSB1c2VkIGJ5IHRoZSBHQyBpbnRv
IFNjcmliYmxlLmgsIHRvIGF2b2lkIGJsb2F0aW5nIGNvbXBpbGUgdGltZXMuCisKKyAgICAgICAg
SW4gdGhlIERGRyBhbmQgRlRMIHdlIG5vdyBoYXZlIDMgVXNlS2luZHMgZm9yIEJpZ0ludHM6IEhl
YXBCaWdJbnRVc2UsIEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UuCisgICAgICAgIFRoZSBs
YXR0ZXIgaXMgdXNlZnVsIHdoZW4gd2Uga25vdyB0aGF0IHdlIGFyZSByZWNlaXZpbmcgQmlnSW50
cywgYnV0IHNwZWN1bGF0aW9uIGluZGljYXRlcyBhIG1peCBvZiBoZWFwLWFsbG9jYXRlZCBhbmQg
c21hbGwgKGlubGluZWQpIGJpZy1pbnRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIGEgbmFp
dmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXRjaCBzaWduaWZpY2FudGx5IHJlZ3Jlc3NlcyB0
aGUgcGVyZm9ybWFuY2Ugb2YgU3RyaWN0RXEgKGFuZCBpdHMgdmFyaWFudHMpLCBhcyBpdCBpcyBu
byBsb25nZXIgdHJ1ZSB0aGF0IGEgY2VsbCBhbmQgYSBub24tY2VsbCBjYW5ub3QgYmUgZXF1YWwu
CisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0aGUgY29kZSB3YXMganVtcGluZyB0byBhIHNs
b3cgcGF0aCBpZiBlaXRoZXI6CisgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBk
b3VibGUKKyAgICAgICAgLSBvciBib3RoIG9wZXJhbmRzIGFyZSBjZWxscworICAgICAgICBOb3cs
IGl0IGFsc28gbmVlZHMgdG8ganVtcCB0byB0aGUgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBp
cyBhIGNlbGwuCisgICAgICAgIFRvIHJlY292ZXIgdGhpcyBwZXJmb3JtYW5jZSBjb3N0LCBJIHNp
Z25pZmljYW50bHkgcmV3cm90ZSB0aGlzIGNvZGUsIGZyb20KKyAgICAgICAgICBpZiAobGVmdCBp
cyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0
KQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGg7
CisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIGxlZnQgaXMgSW50MzIpIHsKKyAgICAgICAg
ICAgIGlmIChsZWZ0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAg
ICAgICAgIH0KKyAgICAgICAgICBpZiAoISByaWdodCBpcyBJbnQzMikgeworICAgICAgICAgICAg
aWYgKHJpZ2h0IGlzIE51bWJlcikKKyAgICAgICAgICAgICAgZ290byBzbG93UGF0aAorICAgICAg
ICAgIH0KKyAgICAgICAgICByZXR1cm4gbGVmdCA9PSByaWdodAorICAgICAgICBUbyB0aGUgZm9s
bG93aW5nOgorICAgICAgICAgIGlmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUp
CisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBpZiAobGVmdCBpcyBDZWxsIHx8
IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoCisgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBJIGJlbGlldmUgdGhpcyB0byBiZSBmYXN0ZXIgdGhhbiBqdXN0
IHJlcGxhY2luZyAobGVmdCBpcyBDZWxsICYmIHJpZ2h0IGlzIENlbGwpIGJ5IGFuIHx8LCBiZWNh
dXNlIEkgZm91bmQgYSBiaXQtdHJpY2sgdG8gY2hlY2sgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSkgd2hpY2ggc2hvdWxkIGhlbHAgcmVkdWNlIHRoZSBwcmVzc3VyZSBvbiB0aGUg
YnJhbmNoIHByZWRpY3Rvci4KKyAgICAgICAgRWFybHkgSmV0U3RyZWFtMiB0ZXN0cyBhcHBlYXIg
dG8gY29uZmlybSB0aGF0IHRoaXMgcGF0Y2ggaXMgcm91Z2hseSBuZXV0cmFsIHdoaWxlIGl0IHdh
cyBhIDAuNSUgcmVncmVzc2lvbiBiZWZvcmUgSSB1c2VkIHRoaXMgdHJpY2ssIGJ1dCB0aGUgbnVt
YmVycyBhcmUgc3RpbGwgdG9vIG5vaXN5LCBJIHBsYW4gdG8gZG8gbW9yZSBtZWFzdXJlbWVudHMg
YmVmb3JlIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICBJIGRvbid0IHlldCBoYXZlIHBl
cmZvcm1hbmNlIG51bWJlcnMgZm9yIHRoaXMgcGF0Y2ggb24gYSBCaWdJbnQgYmVuY2htYXJrLCBJ
IHdpbGwgZ2V0IHN1Y2ggbnVtYmVycyBiZWZvcmUgdHJ5aW5nIHRvIGxhbmQgaXQsIGJ1dCBJJ2Qg
bGlrZSBzb21lIHJldmlldyBpbiB0aGUgbWVhbnRpbWUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9YODZB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZv
cm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXI6Om1lbW9yeU1vZFJNKToKKyAg
ICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRI
ZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlw
ZT46OmVtaXRTZXRIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
PEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgorICAgICAg
ICAoSlNDOjpPYnNlcnZlZFJlc3VsdHM6OmRpZE9ic2VydmVOb25JbnQzMik6CisgICAgICAgIChK
U0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUJpZ0ludCk6CisgICAgICAgIChKU0M6Ok9i
c2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpPYnNl
cnZlZFJlc3VsdHM6OmRpZE9ic2VydmVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVCaWdJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6c2V0T2JzZXJ2ZWRIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpzZXRPYnNlcnZlZEJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpvYnNl
cnZlUmVzdWx0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
ICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OnNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9u
RnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uRnJvbVZhbHVlKToKKyAg
ICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tSlNUeXBlKToKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMpOgorICAgICAgICAqIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQmlnSW50MzJTcGVjdWxh
dGlvbik6CisgICAgICAgIChKU0M6OmlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRF
cXVhbGl0eU9wSW1wbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRCaWdJ
bnRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6b2JzZXJ2ZVVzZUtpbmRPbk5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZhbHVlKToKKyAgICAg
ICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAgICAgICogZGZn
L0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6
c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0lu
dEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
Qml0d2lzZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlw
ZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5jT3JEZWMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVEaXYpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVNb2QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVQb3cpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSGVhcEJpZ0ludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQ6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjp+U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6OmVkZ2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6bm9kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kOjpncHIp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6dXNlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFueUJpZ0ludCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCaWdJbnQzMkJyYW5jaCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
dHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHVXNl
S2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9E
RkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAg
IChKU0M6OkRGRzo6aXNDZWxsKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9u
VmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OmluaXRpYWxpemVD
b25zdGFudHMpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuaDoKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlQml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVZhbHVlQml0QW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0T3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRYb3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRSU2hpZnQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRSU2hpZnQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhCaXRMU2hpZnQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRMU2hpZnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQml0VVJTaGlm
dCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb051bWVy
aWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFy
ZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBh
cmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVJc0JpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRC
aW5hcnlTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dEJpbmFyeUJpdE9wU25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmJvb2xpZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpidWls
ZFR5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0hlYXBC
aWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dCaWdJbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQmlnSW50MzIpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEJpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hCaWdJbnQzMik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEJpZ0ludDMyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RBbnlCaWdJbnQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEhlYXBCaWdJbnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0hlYXBCaWdJbnQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVIZWFwQmlnSW50
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlSGVhcEJp
Z0ludFVua25vd25XaGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICog
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90
QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAg
ICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplT2ZWYXJhcmdzKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMik6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZCaWdJbnQzMktub3duTm90TnVtYmVyKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmSGVhcEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RIZWFwQmlnSW50KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveEJpZ0ludDMyKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hCaWdJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZW1pdFR5cGVPZik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pc19iaWdfaW50KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RvX251bWVyaWMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfYmlnX2ludCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9M
TEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJB
cmVuYTo6bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6dG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpjYWxsQmlnSW50Q29u
c3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6QmlnSW50T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludE9iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlz
QmlnSW50VmFsdWUpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFy
eUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpwYXJzZUlu
dCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludCk6CisgICAgICAgIChK
U0M6OkpTQmlnSW50OjppbmMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGVjKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmJpdHdpc2VBbmQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dG9TdHJpbmdHZW5lcmljKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1RvTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmVxdWFsc1RvSW50MzIpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKEpTQzo6YXNIZWFwQmlnSW50KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJl
clNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9PYmplY3RTbG93Q2Fz
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojphc0hlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0JpZ0ludCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzSGVhcEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OmlzQmlnSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpiaWdJbnQzMkFzSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc1By
aW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJl
cik6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RF
cXVhbEZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWwpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRC
eUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1ByaW1pdGl2ZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6Z2V0UHJpbWl0aXZlTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9PYmpl
Y3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzSGVhcEJpZ0lu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9Cb29sZWFuIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvQm9vbGVhbiBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHA6
CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNBZGRT
bG93Q2FzZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxsKToKKyAgICAgICAg
KiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJpZ0ludFRvT3Ro
ZXJQcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpiaWdJbnRDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6anNMZXNzKToKKyAgICAgICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAoSlNDOjphcml0
aG1ldGljQmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpqc1N1Yik6CisgICAgICAgIChKU0M6Ompz
TXVsKToKKyAgICAgICAgKEpTQzo6anNEaXYpOgorICAgICAgICAoSlNDOjpqc1JlbWFpbmRlcik6
CisgICAgICAgIChKU0M6OmpzUG93KToKKyAgICAgICAgKEpTQzo6anNJbmMpOgorICAgICAgICAo
SlNDOjpqc0RlYyk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU5vdCk6CisgICAgICAgIChKU0M6
OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6anNMU2hpZnQpOgorICAgICAgICAoSlNDOjpqc1JTaGlm
dCk6CisgICAgICAgIChKU0M6OmJpdHdpc2VCaW5hcnlPcCk6CisgICAgICAgIChKU0M6OmpzQml0
d2lzZUFuZCk6CisgICAgICAgIChKU0M6OmpzQml0d2lzZU9yKToKKyAgICAgICAgKEpTQzo6anNC
aXR3aXNlWG9yKToKKyAgICAgICAgKiBydW50aW1lL1NjcmliYmxlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oLgorICAgICAgICAoSlND
OjpzY3JpYmJsZUZyZWVDZWxscyk6CisgICAgICAgIChKU0M6OmlzU2NyaWJibGVkVmFsdWUpOgor
ICAgICAgICAoSlNDOjpzY3JpYmJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OnByb3RvdHlwZUZvckxvb2t1cFByaW1pdGl2ZUltcGwpOgor
CiAyMDIwLTA0LTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2MDI3OS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOGM4YjQ2OTY0NWYuLmJiYjA4NjU4MDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODY3LDYgKzg2Nyw3IEBACiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2
ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzNDJGMzZGNzI0NDA5
NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdp
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMz
MTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNj
cmliYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVDNzA1MjI1NTVG
NkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTMzQTkyMEJEMjNE
QTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZEMDAwRUJBRjAg
LyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAvKiBCM1ZhbHVl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87IH07CkBAIC0z
NTE3LDYgKzM1MTgsNyBAQAogCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJl
SURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThC
MzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTb3VyY2VDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMwQTVGNDAzRjEx
QzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXYXNtU2lnbmF0dXJlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaWJibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3
NDM2NDkyMjRENzlFRjAwQzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25U
cmVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNz
aW9uVHJlZXMuY3BwOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRy
ZWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM3NDM2NEEyMjRENzlFRjAw
QzhDMjI3IC8qIEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgcGF0aCA9IGIz
L0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0VsaW1pbmF0
ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU3Nyw2ICs3NTc5LDcgQEAKIAkJCQkwRkUwNTAyMDFB
QTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLywKIAkJCQkwRkUwNTAy
MTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuY3BwICovLAogCQkJCTBGRTA1MDIyMUFB
OTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovLAorCQkJCTMzMTExQjhBMjM5NzI1NjUw
MEFBMzRDRSAvKiBTY3JpYmJsZS5oICovLAogCQkJCTE0NzM0MUUwMURDMkNFOTYwMEFBMjlCQSAv
KiBTY3JpcHRFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDczNDFDRDFEQzAyRDc5MDBBQTI5QkEg
LyogU2NyaXB0RXhlY3V0YWJsZS5oICovLAogCQkJCTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAv
KiBTY3JpcHRGZXRjaGVyLmggKi8sCkBAIC04OTQ2LDYgKzg5NDksNyBAQAogCQkJCTBGRUM4NTkx
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9j
YXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMyMDBEMjYxRjAw
MzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENCNUUxRkNFNEUz
NzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggYzEwMDI0MDRl
ZjYuLjM1Nzg2ODNiNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKQEAgLTQ2OTgsNyArNDY5OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
Ly8gSW1tZWRpYXRlczoKICAgICAgICAgLy8KLSAgICAgICAgLy8gQW4gaW1tZWRhaXRlIHNob3Vs
ZCBiZSBhcHBlbmRlZCB3aGVyZSBhcHByb3ByaWF0ZSBhZnRlciBhbiBvcCBoYXMgYmVlbiBlbWl0
dGVkLgorICAgICAgICAvLyBBbiBpbW1lZGlhdGUgc2hvdWxkIGJlIGFwcGVuZGVkIHdoZXJlIGFw
cHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCiAgICAgICAgIC8vIFRoZSB3
cml0ZXMgYXJlIHVuY2hlY2tlZCBzaW5jZSB0aGUgb3Bjb2RlIGZvcm1hdHRlcnMgYWJvdmUgd2ls
bCBoYXZlIGVuc3VyZWQgc3BhY2UuCiAKICAgICAgICAgdm9pZCBpbW1lZGlhdGU4KGludCBpbW0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCmlu
ZGV4IGZlYTY2NzQ1YjYyLi44NWVjNzI4MzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Ci12
b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhl
bHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQordm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUpCiB7Ci0gICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVt
aXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKKyAgICBpZiAoIXNo
b3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hv
dWxkRW1pdFNldEhlYXBCaWdJbnQoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKQEAgLTQ4LDkg
KzQ4LDE4IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVz
dWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAKICAgICBub3REb3VibGUubGluaygm
aml0KTsKIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Qmln
SW50MzIgPSBqaXQuYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3MsIHRlbXBH
UFIpOworICAgIGVtaXRTZXRCaWdJbnQzMihqaXQpOworICAgIGRvbmUuYXBwZW5kKGppdC5qdW1w
KCkpOworICAgIG5vdEJpZ0ludDMyLmxpbmsoJmppdCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TSh0ZW1wR1BSKTsKKyNlbmRpZgorCiAgICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChyZWdzLCBtb2RlKSk7Ci0gICAgbm9uTnVtZXJpYy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90QmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7Ci0gICAgZW1pdFNldEJpZ0ludChqaXQpOwor
ICAgIG5vbk51bWVyaWMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQocmVncy5wYXls
b2FkR1BSKCkpKTsKKyAgICBlbWl0U2V0SGVhcEJpZ0ludChqaXQpOwogICAgIGRvbmUuYXBwZW5k
KGppdC5qdW1wKCkpOwogCiAgICAgbm9uTnVtZXJpYy5saW5rKCZqaXQpOwpAQCAtODgsMTkgKzk3
LDM5IEBAIHZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVs
ZFR5cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Qmln
SW50KCkgY29uc3QKK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQzMigpIGNvbnN0Cit7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEJpdGZpZWxkVHlw
ZSBtYXNrID0gT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQzMjsKKyAgICByZXR1cm4gKG1fYml0cyAm
IG1hc2spICE9IG1hc2s7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjpzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAgQml0ZmllbGRU
eXBlIG1hc2sgPSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDsKKyAgICBCaXRmaWVsZFR5cGUgbWFz
ayA9IE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludDsKICAgICByZXR1cm4gKG1fYml0cyAmIG1h
c2spICE9IG1hc2s7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBq
aXQpIGNvbnN0Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0SGVhcEJp
Z0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxkRW1pdFNldEJp
Z0ludCgpKQotICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0
czo6QmlnSW50KTsKKyAgICBpZiAoc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSkKKyAgICAgICAg
ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOwog
fQogCisjaWYgVVNFKEJJR0lOVDMyKQordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgor
dm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludDMyKENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAoreworICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKKyAg
ICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMy
KTsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+CiB2b2lkIEFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBl
cnMmIGppdCwgQml0ZmllbGRUeXBlIG1hc2spIGNvbnN0CiB7CkBAIC0xNDksOCArMTc4LDEyIEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGU8
VD4mIHByb2ZpbGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSW50NTJPdmVy
ZmxvdyIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQoKSkgewotICAgICAgICAgICAgb3V0LnByaW50
KHNlcGFyYXRvciwgIkJpZ0ludCIpOworICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlSGVh
cEJpZ0ludCgpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiSGVhcEJpZ0lu
dCIpOworICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOworICAgICAgICB9CisgICAgICAgIGlm
IChwcm9maWxlLmRpZE9ic2VydmVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQo
c2VwYXJhdG9yLCAiQmlnSW50MzIiKTsKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Bcml0aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFBy
b2ZpbGUuaAppbmRleCA2YWRkMWEyNmIwYS4uN2MxZmU3MTNiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCwyMSArNzQsMjQgQEAg
cHVibGljOgogICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAogICAgICAgICBJbnQz
Mk92ZXJmbG93ICAgID0gMSA8PCAzLAogICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0
LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAorICAgICAgICBIZWFwQmlnSW50
ICAgICAgID0gMSA8PCA1LAorICAgICAgICBCaWdJbnQzMiAgICAgICAgID0gMSA8PCA2LAogICAg
IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1CaXRzTmVlZGVkID0gNjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA3OwogCiAgICAgT2Jz
ZXJ2ZWRSZXN1bHRzKCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IE9ic2VydmVkUmVzdWx0cyh1
aW50OF90IGJpdHMpCiAgICAgICAgIDogbV9iaXRzKGJpdHMpCiAgICAgeyB9CiAKLSAgICBib29s
IGRpZE9ic2VydmVOb25JbnQzMigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRP
YnNlcnZlTm9uSW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5l
Z1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgSGVhcEJpZ0ludCB8IEJpZ0ludDMyKTsgfQogICAg
IGJvb2wgZGlkT2JzZXJ2ZURvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91
YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91
YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgTm9uTmVnWmVyb0RvdWJsZTsgfQogICAgIGJvb2wgZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB7IHJldHVybiBtX2JpdHMgJiBOZWdaZXJvRG91YmxlOyB9
CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygpIHsgcmV0dXJuIG1fYml0cyAmIE5vbk51
bWVyaWM7IH0KLSAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSB7IHJldHVybiBtX2JpdHMgJiBC
aWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSB7IHJldHVybiBtX2JpdHMgJiAo
SGVhcEJpZ0ludCB8IEJpZ0ludDMyKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBCaWdJbnQo
KSB7IHJldHVybiBtX2JpdHMgJiBIZWFwQmlnSW50OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmln
SW50MzIoKSB7IHJldHVybiBtX2JpdHMgJiBCaWdJbnQzMjsgfQogICAgIGJvb2wgZGlkT2JzZXJ2
ZUludDMyT3ZlcmZsb3coKSB7IHJldHVybiBtX2JpdHMgJiBJbnQzMk92ZXJmbG93OyB9CiAgICAg
Ym9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIHsgcmV0dXJuIG1fYml0cyAmIEludDUyT3Zl
cmZsb3c7IH0KIApAQCAtMTA5LDEzICsxMTIsMTYgQEAgcHVibGljOgogICAgIGJvb2wgZGlkT2Jz
ZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygp
IGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVOb25OdW1lcmljKCk7
IH0KICAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJl
c3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50KCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVIZWFwQmln
SW50KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUhlYXBCaWdJ
bnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgY29uc3QgeyByZXR1cm4gb2Jz
ZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZUJpZ0ludDMyKCk7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSW50NTJPdmVyZmxv
dygpOyB9CiAKICAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0
KE9ic2VydmVkUmVzdWx0czo6Tm9uTmVnWmVyb0RvdWJsZSk7IH0KICAgICB2b2lkIHNldE9ic2Vy
dmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6TmVnWmVyb0RvdWJs
ZSk7IH0KICAgICB2b2lkIHNldE9ic2VydmVkTm9uTnVtZXJpYygpIHsgc2V0Qml0KE9ic2VydmVk
UmVzdWx0czo6Tm9uTnVtZXJpYyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBz
ZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEhl
YXBCaWdJbnQoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkhlYXBCaWdJbnQpOyB9CisgICAg
dm9pZCBzZXRPYnNlcnZlZEJpZ0ludDMyKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJ
bnQzMik7IH0KICAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpIHsgc2V0Qml0KE9i
c2VydmVkUmVzdWx0czo6SW50MzJPdmVyZmxvdyk7IH0KICAgICB2b2lkIHNldE9ic2VydmVkSW50
NTJPdmVyZmxvdygpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SW50NTJPdmVyZmxvdyk7IH0K
IApAQCAtMTI3LDggKzEzMywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2JpdHMgfD0gT2Jz
ZXJ2ZWRSZXN1bHRzOjpJbnQzMk92ZXJmbG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJm
bG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlIHwgT2JzZXJ2ZWRSZXN1bHRz
OjpOZWdaZXJvRG91YmxlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBtX2JpdHMgfD0g
T2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQ7CisgICAgICAgIGlmICh2YWx1ZS5pc0JpZ0ludDMyKCkp
IHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5p
c0hlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6
SGVhcEJpZ0ludDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX2Jp
dHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljOwpAQCAtMTM5LDE5ICsxNDksMjIgQEAg
cHVibGljOgogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2Vl
cyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1udW1l
cmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJl
Z3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICB2b2lkIGVtaXRP
YnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUiwg
VGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwogCiAgICAgLy8gU2V0cyAoSW50
MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0Rv
dWJsZSkuCiAgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CiAgICAgdm9pZCBl
bWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBOb25OdW1l
cmljCiAgICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKICAg
ICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7CiAKLSAgICAvLyBTZXRzIEJp
Z0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICBi
b29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRI
ZWFwQmlnSW50KCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0SGVhcEJpZ0ludChDQ2FsbEhlbHBl
cnMmKSBjb25zdDsKKworICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludDMyKCkgY29uc3Q7Cisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgZW1pdFNldEJpZ0ludDMyKENDYWxsSGVscGVycyYp
IGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lkIGVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVs
cGVycyYsIEJpdGZpZWxkVHlwZSkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTE3
NSw3ICsxODgsNyBAQCB1c2luZyBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKIGNs
YXNzIFVuYXJ5QXJpdGhQcm9maWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJv
ZmlsZUJhc2U+IHsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFyZ09ic2VydmVkVHlw
ZVNoaWZ0ID0gT2JzZXJ2ZWRSZXN1bHRzOjpudW1CaXRzTmVlZGVkOwogCi0gICAgc3RhdGljX2Fz
c2VydChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8
PSBzaXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhl
IHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CisgICAgc3RhdGljX2Fzc2VydChh
cmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXpl
b2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIHRoZSB0eXBlIG9m
IHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFy
eUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nh
c3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0
KSk7CiAKQEAgLTI1Nyw3ICsyNzAsNyBAQCBjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGUgOiBwdWJs
aWMgQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsKIAogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBzcGVjaWFsRmFzdFBhdGhC
aXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05l
ZWRlZCk7Ci0gICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOworICAgIHN0YXRpY19hc3NlcnQo
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkg
PD0gc2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhl
IHVuZGVybHlpbmcgdHlwZS4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRo
Qml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBu
b3QgaW50ZXJzZWN0LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYg
Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0
LiIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNwZWNpYWxGYXN0
UGF0aEJpdCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaykpLCAiVGhlc2UgYml0cyBz
aG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhp
Z2hlciBiaXQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAxZjU2Njk0Y2U3MC4uMmVjMzc4NmY5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMzI5LDYgKzMyOSw3IEBA
IG9wX2dyb3VwIDpVbmFyeU9wLAogICAgICAgICA6aXNfdW5kZWZpbmVkX29yX251bGwsCiAgICAg
ICAgIDppc19ib29sZWFuLAogICAgICAgICA6aXNfbnVtYmVyLAorICAgICAgICA6aXNfYmlnX2lu
dCwKICAgICAgICAgOmlzX29iamVjdCwKICAgICAgICAgOmlzX29iamVjdF9vcl9udWxsLAogICAg
ICAgICA6aXNfZnVuY3Rpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5
YzU0YjQzZGRjMy4uYzYwOTY1YmNjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDY3
ZjJjZWMwYTgwLi5lZWE1ZmE0YzNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc0LDYgKzE3NCw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3Rl
ciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcElzVW5kZWZpbmVkT3JOdWxsLCBvcGVyYW5kKQog
ICAgIFVTRVMoT3BJc0Jvb2xlYW4sIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzTnVtYmVyLCBvcGVy
YW5kKQorICAgIFVTRVMoT3BJc0JpZ0ludCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNPYmplY3Qs
IG9wZXJhbmQpCiAgICAgVVNFUyhPcElzT2JqZWN0T3JOdWxsLCBvcGVyYW5kKQogICAgIFVTRVMo
T3BJc0NlbGxXaXRoVHlwZSwgb3BlcmFuZCkKQEAgLTQyMyw5ICs0MjQsMTAgQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQog
ICAgIERFRlMoT3BJc0VtcHR5LCBkc3QpCiAgICAgREVGUyhPcElzVW5kZWZpbmVkLCBkc3QpCi0g
ICAgVVNFUyhPcElzVW5kZWZpbmVkT3JOdWxsLCBkc3QpCisgICAgREVGUyhPcElzVW5kZWZpbmVk
T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElzQm9vbGVhbiwgZHN0KQogICAgIERFRlMoT3BJc051
bWJlciwgZHN0KQorICAgIERFRlMoT3BJc0JpZ0ludCwgZHN0KQogICAgIERFRlMoT3BJc09iamVj
dCwgZHN0KQogICAgIERFRlMoT3BJc09iamVjdE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Nl
bGxXaXRoVHlwZSwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCAwNTNiMWI0NDkyMC4uM2ZmYzJjMzk5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC02MCw3ICs2MCw2IEBACiAjaW5j
bHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRNYXRoSUMuaCIKLSNpbmNsdWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKaW5kZXggMzJmNTg4ZGJm
ZjYuLjNlZTYxZjkzYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGF0YUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRh
Rm9ybWF0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDQsMTIgKzQ0LDE0IEBAIGVudW0gRGF0YUZvcm1hdCA6IHVpbnQ4X3Qg
ewogICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKICAgICBEYXRhRm9ybWF0Q2VsbCA9IDYsCiAg
ICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAotICAgIERhdGFGb3JtYXRKUyA9IDgsCisgICAgRGF0
YUZvcm1hdEJpZ0ludDMyID0gOCwgLy8gRklYTUU6IGN1cnJlbnRseSB1bnVzZWQKKyAgICBEYXRh
Rm9ybWF0SlMgPSAxNiwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERh
dGFGb3JtYXRJbnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0RG91YmxlLAogICAgIERhdGFGb3JtYXRKU0NlbGwgPSBEYXRhRm9ybWF0SlMgfCBE
YXRhRm9ybWF0Q2VsbCwKICAgICBEYXRhRm9ybWF0SlNCb29sZWFuID0gRGF0YUZvcm1hdEpTIHwg
RGF0YUZvcm1hdEJvb2xlYW4sCi0gICAgCisgICAgRGF0YUZvcm1hdEpTQmlnSW50MzIgPSBEYXRh
Rm9ybWF0SlMgfCBEYXRhRm9ybWF0QmlnSW50MzIsCisKICAgICAvLyBNYXJrZXIgZGVsaW1pbmF0
aW5nIG9yZGluYXJ5IGRhdGEgZm9ybWF0cyBhbmQgT1NSLW9ubHkgZGF0YSBmb3JtYXRzLgogICAg
IERhdGFGb3JtYXRPU1JNYXJrZXIgPSAzMiwgCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggNzAxYzMzMDg5YjkuLjgzMGY2ZDY3NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCgKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVt
aXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QK
K3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxs
SGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0
ZXJzTW9kZSBtb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgY2FzZSBO
b25lOgpAQCAtNjcsMTIgKzY3LDEyIEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgfQog
ICAgICAgICAKICAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS51
bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJl
c3VsdChqaXQsIHJlZ3MsIHRlbXBHUFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LmJpbmFyeUFy
aXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdp
c3RlcnMpOworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQo
aml0LCByZWdzLCB0ZW1wR1BSLCBtb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCBlOGI2NWVhZDQ2ZS4uM2FiYTFhMzJhMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlSW5kZXguaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiT3BlcmFu
ZHMuaCIKKyNpbmNsdWRlICJUYWdSZWdpc3RlcnNNb2RlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC04Myw3ICs4NCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KIAotICAgIHZvaWQgZW1pdFJl
cG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKKyAgICAvLyBUaGUg
dGVtcG9yYXJ5IHJlZ2lzdGVyIGlzIG9ubHkgbmVlZGVkIG9uIDY0LWJpdHMgYnVpbGRzIChmb3Ig
dGVzdGluZyBCaWdJbnQzMikuCisgICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJz
JiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycykgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRWYWx1ZShKU1ZhbHVlKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCmluZGV4IDEwNTNiYTUyYjU0Li43NzFjNzliODU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjM5LDExICsy
MzksNiBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHN0ck91dC5wcmludCgiU3ltYm9sIik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0KLSAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0JpZ0ludCkKLSAgICAgICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50Iik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAogICAg
IGlmICh2YWx1ZSA9PSBTcGVjSW50MzJPbmx5KQpAQCAtMjc4LDcgKzI3MywyMyBAQCB2b2lkIGR1
bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0U3RyZWFtLCBTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9Ci0gICAg
CisKKyAgICBpZiAoKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkKKyAgICAgICAg
c3RyT3V0LnByaW50KCJCaWdJbnQiKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSB7Cisg
ICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQzMikKKyAgICAgICAgICAgIHN0ck91dC5wcmlu
dCgiQmlnSW50MzIiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KworICAgICAgICBpZiAodmFsdWUgJiBTcGVjSGVhcEJpZ0ludCkKKyAgICAgICAgICAgIHN0ck91
dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1RvcCA9
IGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUltcHVy
ZU5hTikKICAgICAgICAgc3RyT3V0LnByaW50KCJEb3VibGVJbXB1cmVOYU4iKTsKICAgICAKQEAg
LTQzMSw3ICs0NDIsNyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwog
ICAgIAogICAgIGlmIChjbGFzc0luZm8gPT0gSlNCaWdJbnQ6OmluZm8oKSkKLSAgICAgICAgcmV0
dXJuIFNwZWNCaWdJbnQ7CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKIAogICAgIGlm
IChjbGFzc0luZm8gPT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQogICAgICAgICByZXR1cm4gU3Bl
Y0ZpbmFsT2JqZWN0OwpAQCAtNDk5LDggKzUxMCw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIFNw
ZWNTdHJpbmc7CiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3ltYm9s
VHlwZSkKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgaWYgKHN0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7
CisgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUp
CisgICAgICAgIHJldHVybiBTcGVjSGVhcEJpZ0ludDsKICAgICBpZiAoc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBEZXJpdmVkQXJyYXlUeXBlKQogICAgICAgICByZXR1cm4gU3BlY0Rl
cml2ZWRBcnJheTsKICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCkpOwpAQCAtNTM2LDYgKzU0Nyw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3BlY0Fu
eUludEFzRG91YmxlOwogICAgICAgICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwogICAgIH0K
KyAgICBpZiAodmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDMy
OwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJv
bUNlbGwodmFsdWUuYXNDZWxsKCkpOwogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKQEAgLTU5
NSw4ICs2MDgsOCBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNU
eXBlKEpTVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAgICBjYXNlIFN5
bWJvbFR5cGU6CiAgICAgICAgIHJldHVybiBTcGVjU3ltYm9sOwotICAgIGNhc2UgQmlnSW50VHlw
ZToKLSAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBIZWFwQmlnSW50VHlwZToK
KyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGNhc2UgQXJyYXlUeXBlOgogICAg
ICAgICByZXR1cm4gU3BlY0FycmF5OwogICAgIGNhc2UgRGVyaXZlZEFycmF5VHlwZToKQEAgLTYz
Miw2ICs2NDUsMTAgQEAgU3BlY3VsYXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVx
dWl2YWxlbnRTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgdHkKIAogICAgIGlmICh0eXBlICYg
U3BlY1N0cmluZykKICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5nOworCisgICAgaWYgKHR5cGUg
JiBTcGVjQmlnSW50KQorICAgICAgICB0eXBlIHw9IFNwZWNCaWdJbnQ7CisKICAgICByZXR1cm4g
dHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAppbmRleCA1ZGIxOGM2NDgyZC4uZGYwYjkxYTczNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsMTIgKzk4LDE0
IEBAIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwKIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY090aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzk7IC8v
IEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjQm9vbGVhbiB8IFNwZWNPdGhlcjsgLy8gSXQncyBkZWZpbml0ZWx5IGVpdGhlciBhIGJv
b2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDQxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQuCi1zdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDQyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgorc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcEJpZ0ludCAgICAgICAgICAgICAgICAgICAgICAg
ID0gMXVsbCA8PCA0MTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQmlnSW50IHRoYXQgaXMgYWxsb2Nh
dGVkIG9uIHRoZSBoZWFwCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJ
bnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBzbWFsbCBCaWdJbnQgdGhhdCBpcyBpbmxpbmUgdGhlIEpTVmFsdWUKK3N0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IFNwZWNCaWdJbnQzMiB8IFNwZWNIZWFwQmlnSW50Oworc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCA0MzsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNEYXRhVmlldy4KIHN0YXRpYyBjb25zdGV4
cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICA9
IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2Mg
fCBTcGVjQmlnSW50OyAvLyBJdCdzIGFueSBub24tT2JqZWN0IEpTVmFsdWUuCiBzdGF0aWMgY29u
c3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBTcGVjRmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlw
ZWRBcnJheVZpZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8
IFNwZWNTdHJpbmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBT
cGVjUHJvbWlzZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dl
YWtNYXBPYmplY3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNE
ZXJpdmVkQXJyYXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IC8vIEJp
dG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24u
Ci1zdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wgfCBT
cGVjQ2VsbE90aGVyIHwgU3BlY0JpZ0ludDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgot
c3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBh
bmQgU3BlY0RvdWJsZUltcHVyZU5hTi4KK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNPYmplY3QgfCBTcGVj
U3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIgfCBTcGVjSGVhcEJpZ0ludDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjSGVhcFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0NlbGwgfCBTcGVj
QmlnSW50MzIgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYzsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyT25seSBhbmQgU3BlY0RvdWJsZUlt
cHVyZU5hTi4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9w
ICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBj
YW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVj
RG91YmxlSW1wdXJlTmFOLiBDb3JyZXNwb25kcyB0byB3aGF0IGNvdWxkIGJlIGZvdW5kIGluIGEg
Ynl0ZWNvZGUgbG9jYWwuCiBzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxs
VG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQnl0ZWNvZGVUb3AgfCBTcGVjRnVs
bE51bWJlcjsgLy8gSXQgY2FuIGJlIGFueXRoaW5nIHRoYXQgYnl0ZWNvZGUgY291bGQgc2VlIHBs
dXMgZXhvdGljIGVuY29kaW5ncyBvZiBudW1iZXJzLgogCkBAIC0xODUsOSArMTg3LDE5IEBAIGlu
bGluZSBib29sIGlzU3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAg
cmV0dXJuIHZhbHVlID09IFNwZWNTeW1ib2w7CiB9CiAKK2lubGluZSBib29sIGlzQmlnSW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0g
U3BlY0JpZ0ludDMyOworfQorCitpbmxpbmUgYm9vbCBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0hlYXBCaWdJ
bnQ7Cit9CisKIGlubGluZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNCaWdJbnQ7CisgICAgcmV0dXJuICEh
dmFsdWUgJiYgKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBib29s
IGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggNjNkMzYyY2FjMTkuLjQ0ZTE1YzIwNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTcw
Myw3ICsxNzAzLDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1w
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQmlnSW50KCkgJiYgdmFsdWUgPT0gImJpZ2ludCIp
IHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBPcElzQ2VsbFdp
dGhUeXBlOjplbWl0KHRoaXMsIGRzdCwgb3AubV92YWx1ZSwgQmlnSW50VHlwZSk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIE9wSXNCaWdJbnQ6OmVtaXQodGhpcywgZHN0LCBv
cC5tX3ZhbHVlKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgT3BJc0NlbGxXaXRoVHlwZTo6ZW1p
dCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUsIEhlYXBCaWdJbnRUeXBlKTsKKyNlbmRpZgogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZh
bHVlID09ICJvYmplY3QiKSB7CkBAIC0yOTExLDcgKzI5MTUsNyBAQCBKU1ZhbHVlIEJ5dGVjb2Rl
R2VuZXJhdG9yOjphZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCB1aW50OAogICAgIHJldHVybiBtX2JpZ0ludE1hcC5lbnN1cmUoQmlnSW50TWFwRW50cnkoaWRl
bnRpZmllci5pbXBsKCksIHJhZGl4LCBzaWduKSwgWyZdIHsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0oKSk7CiAgICAgICAgIGF1dG8gcGFyc2VJbnRTaWduID0g
c2lnbiA/IEpTQmlnSW50OjpQYXJzZUludFNpZ246OlNpZ25lZCA6IEpTQmlnSW50OjpQYXJzZUlu
dFNpZ246OlVuc2lnbmVkOwotICAgICAgICBKU0JpZ0ludCogYmlnSW50SW5NYXAgPSBKU0JpZ0lu
dDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRpZmllci5zdHJpbmcoKSwgcmFkaXgsIEpT
QmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zLCBwYXJzZUludFNpZ24pOwor
ICAgICAgICBKU1ZhbHVlIGJpZ0ludEluTWFwID0gSlNCaWdJbnQ6OnBhcnNlSW50KG51bGxwdHIs
IHZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1v
ZGU6OlRocm93RXhjZXB0aW9ucywgcGFyc2VJbnRTaWduKTsKICAgICAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb24oKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShiaWdJbnRJbk1hcCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAppbmRleCBlYTZjZDJiNmQ1Yi4uNmJlNTdkODNlNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTEwOTIsNyArMTA5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVzaW5nIE51
bWJlck1hcCA9IEhhc2hNYXA8ZG91YmxlLCBKU1ZhbHVlPjsKICAgICAgICAgdXNpbmcgSWRlbnRp
ZmllclN0cmluZ01hcCA9IEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBKU1N0cmluZyosIElk
ZW50aWZpZXJSZXBIYXNoPjsKLSAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9IEhh
c2hNYXA8QmlnSW50TWFwRW50cnksIEpTQmlnSW50Kj47CisgICAgICAgIHVzaW5nIElkZW50aWZp
ZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVudHJ5LCBKU1ZhbHVlPjsKICAgICAgICAg
dXNpbmcgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU2V0ID0gSGFzaFNldDxSZWY8VGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yPj47CiAgICAgICAgIHVzaW5nIFRlbXBsYXRlRGVzY3JpcHRvck1hcCA9
IEhhc2hNYXA8dWludDY0X3QsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiwgV1RGOjpJbnRI
YXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRf
dD4+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2UyNjM4MGM2MDUuLjdhNzVhMDk0OWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk51bWJl
ckNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVDYWNoZS5oIgpAQCAtMjE1LDcgKzIxNCw3IEBAIGlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1Ro
aXNBbklkZW50aXR5KFZNJiB2bSwgRUNNQU1vZGUgZWNtYU1vZGUsIEFic3RyYWN0VmFsdWUmCiAg
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7CiAgICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkg
ewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAg
ICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5n
VHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEJpZ0lu
dFR5cGUpOworICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUo
KSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBl
KCkgPT0gSGVhcEJpZ0ludFR5cGUpOwogICAgICAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmlj
dCgpKQogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBz
aW5jZSBlaXRoZXI6CkBAIC01MDMsNyArNTAyLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludDMyKTsKKyNlbHNlCisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpCiAgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTUzMyw3ICs1NDAsMTYgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50QmluYXJ5Qml0d2lzZU9wKG5vZGUp
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIHVzZSBvZiBiaW5hcnlVc2VL
aW5kIG1lYW5zIHRoYXQgd2UgY2Fubm90IHNwZWNpYWxpemUgdG8gKGZvciBleGFtcGxlKSBhIEhl
YXBCaWdJbnQgbGVmdC1vcGVyYW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAg
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50MzIp
OworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0lu
dFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsK
KyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkK
ICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwpAQCAtNzIzLDExICs3MzksMTQgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgVmFsdWVTdWI6CiAgICAgY2FzZSBW
YWx1ZUFkZDogewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJ
bnRVc2UpOwotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkK
KyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAg
ICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBl
bHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpOwog
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gd2Ug
cmVhbGx5IG5lZWQgU3BlY1N0cmluZyBoZXJlIGZvciBWYWx1ZVN1Yj8gSXQgc2VlbXMgbGlrZSB3
ZSBvbmx5IG5lZWQgaXQgZm9yIFZhbHVlQWRkLgogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUo
bm9kZSwgU3BlY1N0cmluZyB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg3LDYgKzkwNiw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFZhbHVlTmVnYXRlOiB7CisgICAg
ICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBtdWNoIHNtYXJ0ZXIgdGhpbmdzIGZvciBCaWdJbnRz
LCBzZWUgVmFsdWVBZGQvVmFsdWVTdWIuCiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjQmlnSW50KTsK
ICAgICAgICAgYnJlYWs7CkBAIC05NTksNyArOTc5LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5
cGVGb3JOb2RlKG5vZGUsIHR5cGVPZkRvdWJsZUluY09yRGVjKGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmlnSW50VXNl
OgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9k
ZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CiAgICAgICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtOTc1LDcgKzk5OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgIEpTVmFsdWUgY2hpbGRZID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUo
KTsKICAgICAgICAgaWYgKGNoaWxkWCAmJiBjaGlsZFkgJiYgY2hpbGRYLmlzTnVtYmVyKCkgJiYg
Y2hpbGRZLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBgZGlk
Rm9sZENsb2JiZXJXb3JsZGAgaGVyZSBiZWNhdXNlIHRoaXMgcGF0aCBpcyBvbmx5IHBvc3NpYmxl
Ci0gICAgICAgICAgICAvLyB3aGVuIG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhl
IGNhc2Ugb2YgQmlnSW50VXNlLCBjaGlsZHJlbiB3aWxsIGJlCisgICAgICAgICAgICAvLyB3aGVu
IG5vZGUtPnVzZUtpbmQgaXMgVW50eXBlZFVzZS4gSW4gdGhlIGNhc2Ugb2YgQW55QmlnSW50VXNl
IG9yIGZyaWVuZHMsIGNoaWxkcmVuIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGNsZWFyZWQgYnkg
YEFic3RyYWN0SW50ZXJwcmV0ZXI6OmV4ZWN1dGVFZmZlY3RzYC4KICAgICAgICAgICAgIGRpZEZv
bGRDbG9iYmVyV29ybGQoKTsKICAgICAgICAgICAgIC8vIE91ciBib3hpbmcgc2NoZW1lIGhlcmUg
bWF0Y2hlcyB3aGF0IHdlIGRvIGluIG9wZXJhdGlvblZhbHVlUG93LgpAQCAtOTgzLDcgKzEwMDcs
OSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAg
ICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNl
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOwpAQCAtOTkzLDcgKzEwMTksMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9
CiAKICAgICBjYXNlIFZhbHVlTXVsOiB7Ci0gICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gQmlnSW50VXNlKQorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgY29kZSBub3Qg
c2hhcmVkIHdpdGggVmFsdWVTdWI/CisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNI
ZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFu
eUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAg
ICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEwNTcsNyArMTA4Niw5IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudERpdk9wKG5vZGUp
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVh
cEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNIZWFwQmln
SW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSB8fCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpCiAgICAgICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKQEAgLTEzODEsNiArMTQxMiw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9v
bGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBO
dW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JO
dWxsOgpAQCAtMTQwOSw2ICsxNDQxLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAg
ICAgICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNOdW1iZXIoKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBJc0JpZ0ludDoKKyAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0JpZ0ludCgpKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oTnVtYmVyQ29uc3RydWN0b3I6
OmlzSW50ZWdlckltcGwoY2hpbGQudmFsdWUoKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTE1NjMsNyArMTU5OCwyMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0Jp
Z0ludDoKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjQmlnSW50KSkgewor
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CisgICAg
ICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVj
QmlnSW50KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihm
YWxzZSkpOworICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IGlm
IHRoZSBTcGVjdWxhdGVkVHlwZSBpbmZvcm1zIHVzIHRoYXQgd2Ugd29uJ3QgaGF2ZSBhIEJpZ0lu
dDMyIChvciB0aGF0IHdlIHdvbid0IGhhdmUgYSBIZWFwQmlnSW50KSwgdGhlbiB3ZSBjYW4gdHJh
bnNmb3JtIHRoaXMgbm9kZSBpbnRvIGEgSXNDZWxsV2l0aFR5cGUoSGVhcEJpZ0ludFR5cGUpIChv
ciBhIGh5cG90aGV0aWNhbCBJc0JpZ0ludDMyIG5vZGUpLgogCisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgICAgICAgICBpZiAoIShjaGlsZC5t
X3R5cGUgJiB+U3BlY0ludDMyT25seSkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOwpAQCAtMTkzNywxMyArMTk4NywxNCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklY
TUU6IHdoeSBpcyB0aGlzIGNoZWNrIGhlcmUsIGFuZCBub3QgbGF0ZXIgKGFmdGVyIHRoZSB0eXBl
LWJhc2VkIHJlcGxhY2VtZW50IGJ5IGZhbHNlKS4KKyAgICAgICAgLy8gU2FhbSBzZWVtcyB0byBh
Z3JlZSB0aGF0IHRoZSB0d28gY2hlY2tzIGNvdWxkIGJlIHN3aXRjaGVkLCBJJ2xsIHRyeSB0aGF0
IGluIGEgc2VwYXJhdGUgcGF0Y2gKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChV
bnR5cGVkVXNlKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgdGhpcyBjb25kaXRp
b24gd2hlbiBpbnRyb2R1Y2luZyBCaWdJbnQgdG8gSlNDLgotICAgICAgICAgICAgYXV0byBpc05v
blN0cmluZ0NlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpOwor
ICAgICAgICAgICAgYXV0byBpc05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudCA9IFtd
IChKU1ZhbHVlIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVl
LmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQoKTsK
ICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmIChpc05vblN0cmluZ0NlbGxDb25zdGFu
dChsZWZ0KSB8fCBpc05vblN0cmluZ0NlbGxDb25zdGFudChyaWdodCkpIHsKKyAgICAgICAgICAg
IGlmIChpc05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudChsZWZ0KSB8fCBpc05vblN0
cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudChyaWdodCkpIHsKICAgICAgICAgICAgICAgICBt
X3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKICAgICAgICAgICAgICAg
ICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTk1OCwxOSArMjAwOSwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gbm9k
ZS0+Y2hpbGQyKCkpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9v
bGVhblVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJV
c2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNl
KSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8
Ci0gICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSB8
fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpIHx8Ci0g
ICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKLSAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkgfHwK
LSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1Vz
ZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRV
c2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwKLSAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKLSAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBTdHJpbmdVc2UpKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55IGNhc2Ugbm90IGludm9sdmluZyBO
YU4gd2hlcmUgeCA9PT0geCBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gdHJ1ZT8KKyAgICAg
ICAgICAgIC8vIElmIG5vdCBJIG1pZ2h0IHNsaWdodGx5IHNpbXBsaWZ5IHRoYXQgY2hlY2suCisg
ICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCisgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKQorICAgICAgICAgICAg
ICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkKKyAgICAgICAgICAgICAg
ICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKKyAgICAgICAgICAgICAgICB8
fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3ltYm9sVXNlKQorICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisgICAgICAgICAgICAg
ICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdWYXJV
c2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1Zh
clVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ1VzZSwgVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgU3RyaW5nVXNlKQorICAgICAgICAgICAgICAgIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewogICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IGZlYTI4YmM0NmU0Li5hNTdkZjBmZDAwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU3MzAsNiAr
NTczMCwxNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfbnVtYmVyKTsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2Ugb3BfaXNfYmlnX2ludDogeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNCaWdJbnQ+KCk7
CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOworICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQmlnSW50LCB2YWx1ZSkp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfYmlnX2ludCk7CisjZWxzZQorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF9pc19jZWxsX3dpdGhfdHlwZTogewogICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0NlbGxXaXRoVHlwZT4oKTsKICAg
ICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNzU5Yjc3ODBh
NmMuLjAzZTg5YjI2ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xNDksNiArMTQ5LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkK
ICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNfYm9vbGVh
bjoKICAgICBjYXNlIG9wX2lzX251bWJlcjoKKyAgICBjYXNlIG9wX2lzX2JpZ19pbnQ6CiAgICAg
Y2FzZSBvcF9pc19vYmplY3Q6CiAgICAgY2FzZSBvcF9pc19vYmplY3Rfb3JfbnVsbDoKICAgICBj
YXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCBjNzE0ZjE1MjA0My4uNTYzZjViNjViZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc1LDYgKzE3NSw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNl
IElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAg
Y2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzVHlw
ZWRBcnJheVZpZXc6CkBAIC0yNjAsNyArMjYxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBWYWx1ZUJpdE5vdDoKLSAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IEJpZ0ludDMyVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFw
QmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjgwLDcgKzY4MSw5IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToK
KyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgor
ICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9k
ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CkBAIC03
MDIsNyArNzA1LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFZhbHVlUG93
OgogICAgIGNhc2UgVmFsdWVCaXRMU2hpZnQ6CiAgICAgY2FzZSBWYWx1ZUJpdFJTaGlmdDoKLSAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7CisgICAgICAgIC8v
IEZJWE1FOiB0aGlzIHVzZSBvZiBzaW5nbGUtYXJndW1lbnQgaXNCaW5hcnlVc2VLaW5kIHdvdWxk
IHByZXZlbnQgdXMgZnJvbSBzcGVjaWFsaXppbmcgKGZvciBleGFtcGxlKSBmb3IgYSBIZWFwQmln
SW50IGxlZnQtb3BlcmFuZCBhbmQgYSBCaWdJbnQzMiByaWdodC1vcGVyYW5kLgorICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGUwYzk1ODZmMjBkLi5lNGI4MGFmMWY3YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKQEAgLTE0NywxNSArMTQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWUgY2hpbGQxQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkubm9kZSgpKS52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNoaWxk
MkNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkudmFsdWUo
KTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlv
biB3aGVuIGludHJvZHVjaW5nIEJpZ0ludCB0byBKU0MuCi0gICAgICAgICAgICAgICAgICAgIGF1
dG8gaXNOb25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkg
JiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzQmlnSW50KCk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gaXNOb25TdHJpbmdBbmROb25CaWdJbnRDZWxsQ29uc3RhbnQgPSBbXSAoSlNW
YWx1ZSB2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmIHZh
bHVlLmlzQ2VsbCgpICYmICF2YWx1ZS5pc1N0cmluZygpICYmICF2YWx1ZS5pc0hlYXBCaWdJbnQo
KTsKICAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBpZiAoaXNO
b25TdHJpbmdPckJpZ0ludENlbGxDb25zdGFudChjaGlsZDFDb25zdGFudCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nQW5kTm9uQmlnSW50Q2VsbENvbnN0YW50KGNoaWxk
MUNvbnN0YW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ29t
cGFyZUVxUHRyKG1fZ3JhcGguZnJlZXplU3Ryb25nKGNoaWxkMUNvbnN0YW50LmFzQ2VsbCgpKSwg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOb25TdHJpbmdPckJpZ0ludENlbGxD
b25zdGFudChjaGlsZDJDb25zdGFudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChpc05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudChjaGlsZDJDb25zdGFudCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NvbXBhcmVFcVB0cihtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhjaGlsZDJDb25zdGFudC5hc0NlbGwoKSksIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNjQ0
ZWZlMmQ1ZDAuLjkyZTc0Y2I0OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2lu
Y2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0xNDcsNiAr
MTQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
SXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJl
cjoKKyAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNh
c2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDhkN2RlMjcxZGIwLi5hNWZiZmM2MTYz
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjAyLDE0ICsyMDIsMzQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVz
dWx0SW50MzIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBm
cmVlemluZyBkb2VzIG5vdCBhcHBlYXIgdXNlZnVsIChzaW5jZSB0aGUgSlNDZWxsIGlzIGtlcHQg
YWxpdmUgYnkgdm0pLCBidXQgaXQgcmVmdXNlcyB0byBjb21waWxlIG90aGVyd2lzZS4KKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogd2UgbWlnaHQgb3B0aW1pemUgaW5jL2RlYyB0byBhIHNwZWNp
YWxpemVkIGZ1bmN0aW9uIGNhbGwgaW5zdGVhZCBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICAg
ICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gVmFsdWVBZGQgOiBWYWx1ZVN1Yik7CisgICAgICAg
ICAgICAgICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2lu
ZGV4SW5CbG9jaywgU3BlY0hlYXBCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJ
bmZvKG1fZ3JhcGguZnJlZXplKHZtKCkuaGVhcEJpZ0ludENvbnN0YW50T25lLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFu
dE9uZSkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIC8vIEhlYXBCaWdJbnRzIGFyZSBjZWxscywgc28gdGhl
IGRlZmF1bHQgb2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2lmIFVTRShCSUdJTlQzMikK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1
ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50MzIsIEpTQ29u
c3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgMSkpKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4uc2V0
Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVs
dCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogY29uc2lkZXIgaGF2aW5nIGEgc3BlY2lhbCByZXByZXNlbnRhdGlvbiBmb3Ig
c21hbGwgQmlnSW50cyBpbnN0ZWFkLgogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogdGhlIGZyZWV6aW5nIGRvZXMgbm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwg
aXMga2VwdCBhbGl2ZSBieSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNl
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRv
IGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gY2FsbCBpbnN0ZWFkIGluIHRoYXQgY2FzZS4KICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsK
LSAgICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKG1faW5kZXhJbkJsb2NrLCBTcGVjQmlnSW50LCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4s
IE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2bSgpLmJpZ0ludENvbnN0YW50T25lLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2lu
LCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAxKSkp
KTsKICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShub2RlQ29u
c3RhbnRPbmUpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICAgICAgLy8gQmlnSW50cyBhcmUgY3VycmVudGx5IGNlbGxzLCBzbyB0
aGUgZGVmYXVsdCBvZiBOb2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisgICAgICAgICAgICAgICAg
Zml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8v
IFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVJbnQ1MigpKSB7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5j
ID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhN
b2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKQEAgLTIzNSwxMiArMjU1LDIwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAg
IEVkZ2UmIGNoaWxkMiA9IG5vZGUtPmNoaWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkg
eworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisjZW5kaWYKKwogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwg
bm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxk
Mik7CkBAIC0yNjgsOCArMjk2LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRP
cjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDogewogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVCaWdJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFn
cyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTMxMyw3ICszNTQsMTcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG9wZXJh
bmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKICAgICAgICAgICAgICAg
ICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50
MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4ob3BlcmFuZEVk
Z2UpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxk
U3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBC
aWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZWxzZQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3BlcmFuZEVkZ2UpOworI2VuZGlm
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhbmRFZGdlLm5vZGUoKS0+c2hvdWxkU3BlY3Vs
YXRlVW50eXBlZEZvckJpdE9wcygpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVz
ZT4ob3BlcmFuZEVkZ2UpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00NTgsOSArNTA5LDE3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5u
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMSk7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGNoaWxkMik7CisgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludChjaGlsZDEubm9kZSgpLCBjaGlsZDIu
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQx
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGNoaWxkMik7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVCaWdJbnQzMihjaGlsZDEubm9kZSgpLCBjaGlsZDIubm9kZSgpKSkgeworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnQzMlVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KGNoaWxkMik7CisjZW5kaWYKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEpOwogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTU0Niw4ICs2MDUs
MjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGls
ZDIoKTsKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChsZWZ0
Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQzMihsZWZ0Q2hpbGQubm9kZSgp
LCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJp
Z0ludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hp
bGQubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KQEAgLTU4OCwxMiArNjYwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBub2RlLT5jaGlsZDIoKTsKIAorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CisgICAgICAgICAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyNpZiBVU0UoQklHSU5UMzIpCiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hp
bGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihsZWZ0Q2hp
bGQpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obGVmdENoaWxkKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4ocmlnaHRDaGlsZCk7CiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKICAgICAgICAgICAgICAgICBi
cmVhazsgCiAgICAgICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0
Q2hpbGQubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obGVm
dENoaWxkKTsKQEAgLTY1NywxMiArNzM3LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFZhbHVlUG93OiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQz
MikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxB
bnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVV
bnR5cGVkRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTI1NDQsNiArMjYzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNV
bmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgogICAgICAgICBjYXNlIElz
TnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAgICBjYXNlIElzT2JqZWN0T3JO
dWxsOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0
QXJndW1lbnRzOgpAQCAtMjg4NSw3ICsyOTc0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CkBAIC0yOTU4LDcgKzMwNTYsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIC8vIElmIHRoZSBwcmVkaWN0aW9uIG9mIHRoZSBjaGlsZCBpcyBCaWdJbnQsIHdlIGF0dGVt
cHQgdG8gY29udmVydCBUb051bWVyaWMgdG8gSWRlbnRpdHksIHNpbmNlIGl0IGNhbiBvbmx5IHJl
dHVybiBhIEJpZ0ludCB3aGVuIGZlZCBhIEJpZ0ludC4KICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAgICAgZml4RWRnZTxCaWdJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworI2Vsc2UKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDUyLDEzICszNTU5
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIEtu
b3duU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICAgICAgY2FzZSBCaWdJ
bnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKICAgICAgICAgY2FzZSBTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAg
ICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkKICAgICAgICAgICAgICAgICB8
fCBpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAg
ICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJs
ZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IHdo
YXQgc2hvdWxkIHdlIGRvIGFib3V0IEJpZ0ludDMyVXNlIGFuZCBBbnlCaWdJbnRVc2UgPworICAg
ICAgICAvLyBBbHNvIG1vcmUgYnJvYWRseSwgd2hhdCBhYm91dCBhbGwgb2YgdGhlIFVzZUtpbmRz
IHdoaWNoIGFyZSBub3QgbGlzdGVkIGluIHRoYXQgc3dpdGNoPwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NzIsMTIgKzQwODEsMjYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJp
Y3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgZml4RWRn
ZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBh
cmVTdHJpY3RFcSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyNlbmRpZgogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYg
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDQyNzk0Yzc5Y2NhLi44OTJlNWRjYzA0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVk
ZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCBlNTZjNWZmYzFkYy4uNzRlMTkzNjI0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYyMiw2ICsyNjIyLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
OworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpCiAgICAgewpA
QCAtMjgyMiw3ICsyODM0LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBvcDEt
PnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCk7
CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBib29sIHNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAmJiBvcDItPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRT
cGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3Bl
Y3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1
bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBvcDItPnNob3VsZFNwZWN1
bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3Mu
aAppbmRleCA3ZTk2YTI2ODRjZS4uYjBiYTZiYjdlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlRmxhZ3MuaApAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSAgICAgICAgIDB4
MDAyMDAKICNkZWZpbmUgTm9kZU1heU5lZ1plcm9JbkRGRyAgICAgICAgICAgICAgMHgwMDQwMAog
I2RlZmluZSBOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQgICAgICAweDAwODAwCisvLyBGSVhN
RTogd2Ugc2hvdWxkIGhhdmUgc2VwYXJhdGUgZmxhZ3MgZm9yIEhlYXBCaWdJbnQgYW5kIEJpZ0lu
dDMyLCBjdXJyZW50bHkgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiB3aWxsIHBlc3NpbWl6ZSB0aGlu
Z3MuCiAjZGVmaW5lIE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0ICAgICAgICAgIDB4MDEwMDAKICNk
ZWZpbmUgTm9kZU1heUhhdmVOb25JbnRSZXN1bHQgICAgICAgICAgKE5vZGVNYXlIYXZlRG91Ymxl
UmVzdWx0IHwgTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0IHwgTm9kZU1heUhhdmVCaWdJbnRS
ZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDkzZDE3YmUzMzk2Li4zYmU0Mzg2OTI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzk2LDYgKzM5Niw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJc1VuZGVmaW5lZE9y
TnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xlYW4sIE5vZGVSZXN1
bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNOdW1iZXIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisg
ICAgLyogSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLiBPdGhlcndpc2Ug
d2UgZW1pdCBJc0NlbGxXaXRoVHlwZSAqL1wKKyAgICBtYWNybyhJc0JpZ0ludCwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhOdW1iZXJJc0ludGVnZXIsIE5vZGVSZXN1bHRCb29sZWFu
KSBcCiAgICAgbWFjcm8oSXNPYmplY3QsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8o
SXNPYmplY3RPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUyZGJkZDliOS4uZjYzNzJhZGQ0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMzgzLDEwICszODMsMTMg
QEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJl
IHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgbnVtYmVyVGFn
UmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9y
ZSBpdC4KICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAg
Ly8gV2UgYWxzbyB1c2UgdGhlIG5vdENlbGxNYXNrUmVnaXN0ZXIgYXMgdGhlIHNjcmF0Y2ggcmVn
aXN0ZXIsIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGZp
bmQgYSBsZXNzIGdyb3NzIHdheSBvZiBkb2luZyB0aGlzLCBtYXliZSB0aHJvdWdoIGRlbGF5aW5n
IHRoZXNlIG9wZXJhdGlvbnMgdW50aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21lIHNwYXJlIHJlZ2lz
dGVycyBhcm91bmQ/CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciksIEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFn
KSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0
Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJl
cG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpLCBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbHNlIC8vIG5v
dCBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlz
QWRkcmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNh
biB1c2UgaXQuCkBAIC0zOTgsNyArNDAxLDcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywgc2NyYXRjaFBheWxv
YWQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoZXhp
dC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAg
IHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hU
YWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOwpA
QCAtNDA3LDEwICs0MTAsMTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBl
cnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAg
ICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygp
KSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRj
aFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAg
ICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlLCBJbnZhbGlkR1BSUmVnKTsKICAgICAg
ICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0Lm1f
anNWYWx1ZVNvdXJjZS5yZWdzKCkpOworICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9y
dFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpLCBJbnZhbGlkR1BSUmVnKTsK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNmVhZjcwZGQ5NTQuLjg2NmFj
ZjhhYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC04OSw3ICs4OSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMuaCIKICNpbmNs
dWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KIAogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKERGR19KSVQpCkBA
IC0yMjQsNTYgKzIyMyw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0V2l0aFRoaXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsCiAgICAgYmFzZVZhbHVl
LnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgTnVtYmVyT3BlcmF0aW9u
Pgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYmluYXJ5T3AoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBiaWdJbnRPcCwgTnVt
YmVyT3BlcmF0aW9uJiYgbnVtYmVyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9w
MSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAg
IH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIobnVtYmVyT3AoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PGRvdWJsZT4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmlnSW50
T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KLXN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGlu
dDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkKLSAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJpZ0lu
dE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6
Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwotICAgIH0KLQot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoaW50MzJPcChXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PGludDMy
X3Q+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJsZSBpbnB1dCkKIHsKICAgICBpbnQgYXNJbnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KGlucHV0KTsKQEAgLTQ3Myw3MSArNDIyLDM0IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJ
bnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxl
ZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGpzTW9kKGxlZnQs
IHJpZ2h0KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0s
IGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQorRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotCi0gICAgYXV0
byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGlmIChXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKQotICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6aW5jKGds
b2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAg
ICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1lcmljKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlICsgMSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNJbmMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
OwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJp
YykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1l
cmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlIC0gMSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEZWMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKIAotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMg
PSBvcDEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmJpdHdpc2VOb3QoZ2xvYmFs
T2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkpKTsKLQotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIofldURjo6Z2V0PGludDMyX3Q+KG9wZXJhbmRO
dW1lcmljKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlTm90KGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKQpAQCAtNTQ2LDE1ICs0NTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAg
IH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0
KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsKLSAgICB9OwotCi0g
ICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCkBAIC01NjMsMTUgKzQ2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3Qg
cmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCB8IHJpZ2h0OwotICAgIH07
Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRP
cDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50
IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTgwLDE1ICs0NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKLSAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQz
Ml90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKLSAg
ICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNv
ZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJp
Z0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlWG9yKGdsb2JhbE9iamVjdCwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTk3LDE1ICs0ODUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmln
SW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBs
ZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPDwg
KHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xv
YmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50T3AsIGludDMyT3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVy
YXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTFNoaWZ0KGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjE0LDE1ICs0OTQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmln
aHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBpbnQz
Mk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7Ci0gICAg
ICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0KLSAgICByZXR1cm4g
Yml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMikKQEAgLTY2MCwxNSArNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewotICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9
OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAt
PiBkb3VibGUgewotICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
YmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGRpdmlzaW9uIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
RGl2KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjc3LDE1ICs1
NDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0g
W10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0lu
dCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25l
bnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIG51
bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7Ci0gICAg
ICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAg
cmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlw
ZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzUG93KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogZG91YmxlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhBYnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSkKQEAgLTE0ODIsNyArMTMzOCw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWdleHAtPnRlc3QoZ2xvYmFs
T2JqZWN0LCBpbnB1dCkpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Vi
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTQ5NCw3ICsxMzUwLDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIGxl
ZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTE1MDUsNyArMTM2MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9iamVjdCwgb3BlcmFu
ZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xNTE3LDcgKzEzNzMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
bwogICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFu
ZCwgcmlnaHRPcGVyYW5kKTsKIH0KICAgICAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTI5LDcgKzEzODUsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6cmVtYWluZGVyKGdsb2Jh
bE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTQxLDcg
KzEzOTcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6
ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNTUzLDcgKzE0MDksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG93
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVy
biBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTY1LDcgKzE0MjEsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmpl
Y3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAt
MTU3Nyw3ICsxNDMzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlm
dEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNC
aWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
OwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwpAQCAtMTU4OSw3ICsxNDQ1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdo
dE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0UlNoaWZ0
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYwMSw3ICsxNDU3LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hp
ZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNjEzLDcgKzE0NjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0
T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogICAgIHJldHVy
biBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3Bl
cmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQor
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjMxLDcgKzE0ODcsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2Fz
ZUlubGluZShnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6c3Ry
aWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKIH0KIAogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGFyZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIpCkBAIC0xNjc2LDEw
ICsxNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub051bWVy
aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byB2YXJpYW50
ID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHZhcmlhbnQpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdURjo6Z2V0PEpTQmlnSW50Kj4odmFyaWFudCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPih2YXJpYW50
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGE4YTRjYmQyMGU2Li5kN2E4YTYzZDkxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODMsMTggKzE4Mywx
OCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSgogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdChKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
dkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0JpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxKSBX
VEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQo
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFwQmlnSW50
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7
CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0ludChKU0dsb2JhbE9i
amVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikg
V1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBC
aWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRF
Uk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlm
dEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRYb3JIZWFwQmln
SW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJO
QUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KFZNKiwgU3Ry
dWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyhWTSosIFN0cnVj
dHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgbWluQ2FwYWNpdHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAppbmRleCBmZTQ5YzMxMzAzNi4uMGY0MTk3MGQ5OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCkBAIC01MzIsNyArNTMyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMDQsNiArMTAxNiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgog
ICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50OgogICAgICAgICBj
YXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgY2FzZSBJc09iamVjdDoKICAgICAgICAgY2Fz
ZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKaW5kZXggOGVjZDM1MzFmYzMuLmRlNzQ3N2FlNTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNzksNyArNzksOSBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN0cmluZ09yT3RoZXJV
c2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAg
ICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJpZ0ludFVzZToKKyAg
ICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgTm90U3Ry
aW5nVmFyVXNlOgpAQCAtMjYzLDYgKzI2NSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAg
ICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNl
IElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6
CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtNjc3LDEw
ICs2ODAsMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFZhbHVlRGl2Ogog
ICAgIGNhc2UgVmFsdWVNb2Q6CiAgICAgY2FzZSBWYWx1ZVBvdzoKLSAgICAgICAgcmV0dXJuIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpOworICAgICAgICByZXR1cm4gbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSk7CiAKICAgICBj
YXNlIFZhbHVlQml0Tm90OgotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IEJpZ0ludFVzZTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMyVXNl
IHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlOwogCiAgICAgY2Fz
ZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDYxOGQ5OTg4YjBlLi43MzYwZDk5OWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjgsNiArMzY4LDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnR5cGVDaGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwgRWRnZSBlZGdlLCBT
cGVjdWxhdGVkVHlwZSB0CiAgICAgc3BlY3VsYXRpb25DaGVjayhleGl0S2luZCwgc291cmNlLCBl
ZGdlLm5vZGUoKSwganVtcFRvRmFpbCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnR5cGVD
aGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwgRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBl
c1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBqdW1wTGlzdFRvRmFpbCwg
RXhpdEtpbmQgZXhpdEtpbmQpCit7CisgICAgQVNTRVJUKG5lZWRzVHlwZUNoZWNrKGVkZ2UsIHR5
cGVzUGFzc2VkVGhyb3VnaCkpOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKGVkZ2UsIHR5cGVz
UGFzc2VkVGhyb3VnaCk7CisgICAgc3BlY3VsYXRpb25DaGVjayhleGl0S2luZCwgc291cmNlLCBl
ZGdlLm5vZGUoKSwganVtcExpc3RUb0ZhaWwpOworfQorCiBSZWdpc3RlclNldCBTcGVjdWxhdGl2
ZUpJVDo6dXNlZFJlZ2lzdGVycygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OwpAQCAtMTcw
OCw2ICsxNzE1LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5j
aChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNl
KSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBjb25kaXRpb24gPT0g
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUJp
Z0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2gobm9kZSwg
YnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzUsMjQgKzM1NDYsNDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7CiAgICAgRWRnZSYg
Y2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBC
aWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxkMS51c2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIG9wZXJh
bmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAvLyBUaGUg
Zm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBv
ZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdlIG1vdmUgYml0cyBh
cm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJUYWcgPT0gMHgx
Mik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZm
ZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBtYXNrRm9yQmlnSW50
MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOworICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsKKworICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMyIC8gSGVhcEJpZ0lu
dAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKSB7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKICAg
ICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFwQmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSk7CisgICAg
SlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVpcmVkIGZvciB0aGUg
QW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVncyA9IG9wZXJhbmQu
anNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0zNTgwLDE0ICszNjE0
LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90KE5vZGUqIG5vZGUp
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpfSklUT3BlcmF0aW9u
X0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVk
T3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5v
ZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAor
ICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgbGVmdENoaWxk
LnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpOworCiAgICAg
aWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJl
cihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlz
LCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMs
IHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAg
ICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCkBAIC0z
NjMyLDExICszNjcwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3Ao
Tm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8
ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25z
dCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBs
ZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJp
Z0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQog
ICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodC5lbXBsYWNl
KHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hp
bGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBy
aWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICByaWdodFJl
Z3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzIsNTIgKzM3MTIsODQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqIG5vZGUp
CiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRD
aGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1
bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQUik7CisK
ICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAg
ICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVl
Qml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBWYWx1ZUJp
dFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9yR2VuZXJhdG9yLCBv
cGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90IGludGVyZmVyZSB3
aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9qaXQuYW5kNjQocmln
aHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBW
YWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRPckdlbmVyYXRv
ciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBub3QgaW50ZXJmZXJl
IHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBtX2ppdC5vcjY0KHJp
Z2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0aGUgdGFnLCBzbyB3
ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24KKyAgICAgICAgICAg
IG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQu
b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFTU0VS
VChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7Ci0gICAg
R1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgogCi0gICAgc3BlY3VsYXRl
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hp
bGQsIHJpZ2h0R1BSKTsKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKKyAg
ICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQUik7CisKKyAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAg
ICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisK
KyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3dpdGNoIChvcCkg
ewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55
QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdEFuZD4obm9k
ZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVyYXRvciwgb3BlcmF0
aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUJp
dE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0T3JH
ZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2Rl
KiBub2RlKQpAQCAtMzc1Nyw3ICszODI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlm
dEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmln
SW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRPcGVyYXRpb25fR0pK
IHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1ZUJpdFJTaGlmdAog
ICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9uVmFsdWVCaXRVUlNo
aWZ0OwpAQCAtMzc2Nyw5ICszODM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0g
ICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51
bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0
aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBp
c0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7
CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdo
dENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAg
ICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
SlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtMzg2MSwy
NyArMzkzNSwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVMU2hpZnRPcChO
b2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVk
Z2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBvcnQgQmlnSW50MzIK
KyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BS
UmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdo
dC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsK
LSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRV
c2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlw
ZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0Pihu
b2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVmdFNoaWZ0R2VuZXJh
dG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAtMzg4OSwyNyArMzk2
MywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSog
bm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiBy
aWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJbnQzMgorICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRH
UFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsK
IAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAg
c3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRl
SGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UgJiYgcmln
aHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVudHlwZWRSaWdodFNo
aWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0T3AoTm9kZSogbm9k
ZSkKQEAgLTM5MjAsNyArMzk5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTaGlm
dE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRVbnR5cGVkUmlnaHRT
aGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJp
dE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTUwLDE5ICs0MDI0LDY3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAg
IEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQg
PSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSBu
ZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVmdC9yaWdodCA/Cisg
ICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90aGVyIHRyaWNrcyBm
b3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAgbV9q
aXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50
MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdheSB0byBlbGltaW5h
dGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNr
ID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIs
IHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIG1faml0LmJveEJpZ0ludDMy
KHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55
QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdo
dENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdz
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7
CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2FsbCBhIG1vcmUgc3BlY2lhbGl6
ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51
bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCBy
aWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9IZWFwQmlnSW50Cisj
ZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMs
IGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJp
Z2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0lu
dChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVm
dEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRCaWdJbnQsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtNDAwOCw0NCArNDEzMCw5MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVT
dWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAg
ICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3Jh
dGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJl
ZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1ZTsKLSNlbmRp
ZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJp
Z0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJpZ2h0
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVhbGx5
IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0ID8K
KyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJpY2tz
IGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAgICBt
X2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJ
bnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
bV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5j
b2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKLSAgICAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwotICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOworICAgICAgICAvLyBG
SVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fz
c2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKIAotICAg
ICAgICBjb21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcsIG5lZWRz
U2NyYXRjaEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24p
OworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBj
aGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAog
Ci0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hp
bGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdoeSBkbyBjb21waWxl
VmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVyIGJ1dCBub3QgVmFs
dWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UpIHsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZUFueUJp
Z0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQocmlnaHRDaGlsZCk7
CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAg
ICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0gICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUlJl
ZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIo
KTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3Vi
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZiAvLyBVU0UoQklHSU5UMzIpCiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0
R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBH
UFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJp
Z2h0LmdwcigpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wgbmVlZHNTY3JhdGNo
R1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOworI2Vs
c2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgYm9vbCBuZWVkc1Nj
cmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRvIHJlcGF0Y2hpbmdG
dW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBpbGVNYXRoSUMobm9k
ZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBSUmVnLCByZXBhdGNo
aW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9u
UmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYzMCw2ICs0Nzk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAgIC8vIEZJWE1FOiBhZGQgYSBm
YXN0IHBhdGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHByb2JhYmx5IGFsc28gZm9yIEhl
YXBCaWdJbnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQu
Z3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CkBAIC00ODEwLDI5ICs0OTc5LDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxk
MSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChs
ZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxkLnVzZUtpbmQoKSA9
PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5vZGUtPmJpbmFyeVVz
ZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBGSVhNRTogdGhlIGNvZGUgYmV0
d2VlbiBjb21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29tcGlsZVZhbHVlTXVs
IGZvciBCaWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8gZ2V0IHJpZCBvZiB0
aGUgZHVwbGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHJp
Z2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgcmVh
bGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBsZWZ0L3JpZ2h0
ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQgb3RoZXIgdHJp
Y2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5ncHIoKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIpOworICAgICAg
ICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hC
aWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVs
aW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3Vs
dEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94Qmln
SW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Ig
bWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAobGVmdENoaWxkLnVz
ZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBC
aWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENo
aWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIp
OworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxk
Lm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVl
T3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJl
cihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgp
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJp
Z2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTUwMTIsMjkgKzUyMTMsMzMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBh
ZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUg
c2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBEaXYgZ2V0cy4KKwor
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVn
IGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5n
cHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAg
ICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3Bl
Y3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVI
ZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
aXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5v
dE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8
fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2Up
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxkLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBy
aWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwog
ICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNTA0
OCw2ICs1MjUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUq
IG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBs
ZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApAQCAtNTI5NywyOSAr
NTUwNCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9k
ZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdo
dENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0lu
dDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhv
dyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlmIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBs
ZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0
KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1
bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRD
aGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwg
cmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEJpZ0ludCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hp
bGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKKyAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+
YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwor
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7Cisg
ICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3Mg
PSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdzID0gb3AyLmpzVmFs
dWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4NjEsMzAgKzYwNzIsMzMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5v
ZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIg
Zm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9mdGVuLgorICAgIGlm
IChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVm
dEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0Lmdwcigp
OwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAg
ICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxh
dGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBC
aWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hl
YXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERGR19BU1NFUlQobV9q
aXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwg
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5iaW5hcnlVc2VL
aW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7CiAKLSAgICBKU1Zh
bHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmln
aHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBzcGVj
dWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgcmlnaHRDaGlsZCk7
CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNjAzMiw2ICs2
MjQ2LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9B
c3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUobm9k
ZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVz
ZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwpAQCAt
NjA2MCw2ICs2MjgwLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2Rl
LCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0ludCBjYXNlIGhlcmUu
CisgICAgLy8gTm90IGhhdmluZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJlIHdpbGwgbm90IGJl
IGZ1c2VkIHdpdGggdGhlIGJyYW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9v
bGVhblVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFyZShub2RlLCBjb25k
aXRpb24pOwpAQCAtNjEzOCw3ICs2MzYxLDI0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1
c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJ
bmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVCaWdJbnQz
MkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJ
bmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNo
SW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTg1LDggKzY0MjUsOCBAQCBib29sIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUpOworICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUhl
YXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKQEAgLTYyODAsOCArNjUyMCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJp
Y3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHko
bm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5
cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CiAgICAgcmV0
dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEwNTQ0LDE4ICsxMDc4
NCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlKQog
ICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVnIGNl
bGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2Vs
bCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RC
aWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmlnSW50LCBtX2ppdC5i
cmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
SGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRnZSwgb3BlcmFuZC5n
cHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UsIEpTVmFs
dWVSZWdzIHJlZ3MpCkBAIC0xMDcyNSw4ICsxMDk2NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJvbFVzZToKICAgICAg
ICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJpZ0lu
dFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0
ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIEhlYXBC
aWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3QoZWRnZSk7CkBAIC0xMzA4NSwxNyArMTMzMzMsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIGFyZ3VtZW50
UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOworICAg
IC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUgKGFuZCBmb3IgdHlw
ZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVkIGluIHRoaXMgZmls
ZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVu
dFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RCaWdJbnQoYXJn
dW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzQmln
SW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAgICBub3RDZWxsLmxp
bmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVy
KGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGluaygmbV9qaXQpOwor
ICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhh
cmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmljLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CkBAIC0xMzk4NCw5
ICsxNDIzMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVC
cmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1cnJlbnROb2RlID0g
YnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludEVxdWFs
aXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVx
dWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3Jl
YXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisg
ICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24g
b2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVm
dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5OTgsOCArMTQyNDcsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkKICAgICBsZWZ0LnVz
ZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxk
MSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQyKCksIHJpZ2h0
R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsK
KyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFuY2hQdHIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmNzUzNTg5NDVlYS4uN2Q2ZjFj
ZWJhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRl
RG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBH
UFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYKICAgICBHZW5lcmF0
ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqKTsKIAogICAg
IHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21waWxlUGVl
cEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlvbl9HSkopOwogICAg
IHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUs
IEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVw
SG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
Qm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0
aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5v
ZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAg
ICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVNaXNj
U3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSop
OwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3lt
Ym9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGlsZVN5
bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlwZWRF
ZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29t
cGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIGNvbXBp
bGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91Ymxl
Q29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9p
ZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
aWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTbmlwcGV0R2Vu
ZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4KLSAgICB2b2lkIGVt
aXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckFueUJpZ0ludEJp
dE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hp
ZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRPcChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNo
aWZ0T3AoTm9kZSopOwpAQCAtMTU2MSw2ICsxNTcwLDcgQEAgcHVibGljOgogICAgIC8vIEhlbHBl
cnMgZm9yIHBlcmZvcm1pbmcgdHlwZSBjaGVja3Mgb24gYW4gZWRnZSBzdG9yZWQgaW4gdGhlIGdp
dmVuIHJlZ2lzdGVycy4KICAgICBib29sIG5lZWRzVHlwZUNoZWNrKEVkZ2UgZWRnZSwgU3BlY3Vs
YXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKSB7IHJldHVybiBtX2ludGVycHJldGVyLm5lZWRz
VHlwZUNoZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7IH0KICAgICB2b2lkIHR5cGVDaGVj
ayhKU1ZhbHVlU291cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gs
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIEV4aXRLaW5kID0gQmFkVHlwZSk7Cisg
ICAgdm9pZCB0eXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwgRWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlw
ZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QganVtcExpc3RUb0ZhaWws
IEV4aXRLaW5kID0gQmFkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVDZWxsVHlwZVdp
dGhvdXRUeXBlRmlsdGVyaW5nKEVkZ2UsIEdQUlJlZyBjZWxsR1BSLCBKU1R5cGUpOwogICAgIHZv
aWQgc3BlY3VsYXRlQ2VsbFR5cGUoRWRnZSwgR1BSUmVnIGNlbGxHUFIsIFNwZWN1bGF0ZWRUeXBl
LCBKU1R5cGUpOwpAQCAtMTU3Miw2ICsxNTgyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1
bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJl
cEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lmIFVTRShCSUdJTlQz
MikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRl
QW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAgICB2b2lkIHNwZWN1
bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CiAg
ICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYyMSw4ICsxNjM1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQg
c3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmlnSW50KEVkZ2UsIEdQ
UlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsKKyAgICB2b2lkIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZvaWQgc3BlY3VsYXRl
SGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwgSlNWYWx1
ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lkIHNwZWN1
bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBAIC0yNjAwLDYgKzI2
MTQsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCisjaWYg
VVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDog
bV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZh
bGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxs
ZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKworICAgIH5TcGVjdWxhdGVC
aWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsK
KyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBt
X2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIoZWRnZSgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZvaWQgdXNlKCkKKyAg
ICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
U3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dw
ck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAjZGVmaW5lIERGR19U
WVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5cGVzUGFz
c2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgX2R0
Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2MjVjYTBlYTZkNy4uMDdhZGQxOTBhOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtNDE4Niw3ICs0MTg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkgdXNlZCBpbiA2NC1i
aXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgSXNCaWdJbnQ6
CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNCaWdJbnQgaXMgb25s
eSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0cnVlIGluIDY0IGJp
dCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1
czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDFlNjAyYTc1ODEyLi5lNjE3MTg1OTNhMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4LDcgKzEz
OCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAg
IGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjog
eworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jp
Z0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dw
cnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDggKzM0MSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRtcDsKICAgICB9CiAg
ICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
SlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgQVNTRVJUKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcy
KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIHNw
ZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7CiAgICAgR1BSUmVn
IGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcsNjcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUs
IE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQg
PyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRh
a2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIs
IHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0d29DZWxs
c0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAgICAgCi0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMUdQUik7
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2ppdC5icmFuY2hJZk51
bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIoYXJnMkdQUik7Ci0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQuYnJhbmNoSWZOdW1i
ZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwotICAgICAgICAKLSAg
ICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGls
ZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFr
ZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nhc2UubGluaygmbV9q
aXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICdpbnZlcnQn
IHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBE
b3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgaWYgKGxlZnQgPT0g
cmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYgKGxlZnQgaXMgQ2Vs
bCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAg
IGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50
cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFu
Y2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2Ug
dXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8vIFRoZSB0cmljayBp
cyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQg
d2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgICAg
ICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRz
IG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3Zl
IG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5tb3Zl
KGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0
LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgc2NyYXRjaC5n
cHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVzdWx0R1BSLCByZXN1
bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJpdHMg
PSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNsb3dQYXRoQ2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAgICAgICAgIGJyYW5j
aDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFr
ZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxpbmsoJm1faml0KTsK
LSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAKLSAgICAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIAorICAgICAgICAv
LyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQg
bGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIp
CisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkgaGF2ZSB0
byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9yIEhlYXBC
aWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQorICAgICAgICAvLyBJ
bnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkg
b2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBD
ZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAgICAgLy8g
ICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAgLy8gMi4gU2luY2Ug
d2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQg
aXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMgQ2VsbCkKKyAgICAg
ICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSBz
ZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElmIGF0IGxlYXN0IG9u
ZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4KKyAgICAgICAgLy8g
ICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUgJ090aGVyJyB0YWcg
d2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vs
c2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vu
ZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmQ2VsbChyZXN1
bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNl
SnVtcCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFu
Y2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVy
bywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVtcChub3RUYWtlbik7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJp
Y3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0
aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0aXZlUGVlcGhvbGVT
dHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEpTVmFs
dWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGFy
ZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5n
cHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwpAQCAtNDI4LDMzICs0NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICB1
bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIG1faml0
Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRHUFIpOworICAgIC8q
IEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8gYmUgZmFsc2UpOgor
ICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgIGdvdG8g
c2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgIGlmIChyZXN1bHQp
CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENl
bGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICByZXR1cm4gcmVzdWx0
OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNlczsKIAot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJyYW5jaElmQ2VsbChy
ZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0gbV9qaXQuYnJhbmNo
SWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0T0subGluaygmbV9q
aXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5icmFuY2hJZkludDMy
KGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk51bWJl
cihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwot
Ci0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJ
VENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRH
UFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAg
IHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5ncHIoKSwgYXJnMlJl
Z3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91
YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2Yg
dGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJ
bnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1
ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJm
bG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51
bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAg
ICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQ
Uik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5h
ZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7
CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMp
LCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJlc3VsdEdQ
UiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2VzdE9mSGlnaEJp
dHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xvd1BhdGhDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAgICBtX2ppdC5jb21w
YXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGls
ZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMy
IHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBj
ZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYgd2UgZG9uJ3Qgc3Vw
cG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBwYXRoIGlmIGJvdGgg
b3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJpZ0ludCBhbmQgU3Ry
aW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNoZXMsIHdl
IGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgLy8gMS4gKGxlZnQg
aXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkg
aXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRzIGFyZSAwIgorICAg
IC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmlnaHQpIGlz
IENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMg
d2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAgICAgSWYgYXQgbGVh
c3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBiZSAwLgorICAgIC8v
ICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhlICdPdGhlcicgdGFn
IHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lmIFVTRShCSUdJTlQz
MikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UK
KyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7CisjZW5kaWYKKyAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKSk7CiAK
LSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWludmVydCksIHJlc3Vs
dEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywg
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwog
CisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3VsdEdQUik7CisKICAg
ICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwNCw2ICsxMDU5LDggQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChFZGdlIGVkZ2UsIERh
dGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOgorICAgIGNh
c2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6CiAg
ICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQmFkIGRhdGEg
Zm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMTg0LDYgKzEyNDEsOCBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UgZWRnZSkKICAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
KyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGVzZSBjYXNlcyBsb29rIGxpa2UgdGhleSBjb3VsZCBz
aGFyZSBjb2RlLgorICAgIC8vIExvb2sgYXQgZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwgZm9y
IGFuIGV4YW1wbGUuCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewogICAgICAgICBHUFJSZWcg
Z3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTIzNSw2ICsxMjk0LDggQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFG
b3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJy
ZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAt
MTMxMiw2ICsxMzczLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERh
dGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNl
IERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAg
ICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZv
cm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMyMCw2ICsxMzgzLDEyNiBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAg
ICB9CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAoU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAg
ICAvLyBJIGlubGluZWQgc3BlY3VsYXRlSGVhcEJpZ0ludCBiZWNhdXNlIGl0IHdvdWxkIGJlIGlu
Y29ycmVjdCB0byBjYWxsIGl0IGhlcmUgaWYgaXQgZGlkIEpTVmFsdWVPcGVyYW5kIC8gU3BlY3Vs
YXRlWFhYT3BlcmFuZCwKKyAgICAvLyBhcyBpdCB3b3VsZCBjb25mdXNlIHRoZSBERkcgcmVnaXN0
ZXIgYWxsb2NhdG9yLgorICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywgZWRnZSwgflNwZWND
ZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KHZh
bHVlUmVncy5ncHIoKSkpOworICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICBub3RD
ZWxsLmxpbmsoJm1faml0KTsKKyAgICBERkdfVFlQRV9DSEVDSyh2YWx1ZVJlZ3MsIGVkZ2UsIFNw
ZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50MzIsIG1faml0LmJyYW5jaElmTm90QmlnSW50MzIodmFs
dWVSZWdzLmdwcigpLCB0ZW1wR1BSKSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7Cit9CisKK0dQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UgZWRnZSkKK3sK
KyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisgICAgbV9pbnRlcnByZXRlci5m
aWx0ZXIodmFsdWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgewor
ICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsK
KyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOworCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBK
U1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAg
ICAgICBBU1NFUlQoanNWYWx1ZS5pc0JpZ0ludDMyKCkpOworICAgICAgICAgICAgbV9qaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKSks
IGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisK
KyAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAoc3BpbGxGb3Jt
YXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRCaWdJbnQzMiwg
c3BpbGxGb3JtYXQpOworCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKworICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEJpZ0ludDMyKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vdCB5ZXQgaW1wbGVt
ZW50ZWQgdGhpcworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTQmlnSW50MzIp
IHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICAgICAgfQorCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1f
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsK
KyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsK
KyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdw
cik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CisgICAgICAgICAgICBHUFJSZWcgdGVt
cEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1wR1BSKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIGZhaWx1cmVDYXNlcyk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgICAg
IH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpT
QmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZv
cm1hdEpTQmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAg
ICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Cisg
ICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoK
KyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUsICJCYWQgZGF0
YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFw
aCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBkYXRhIGZvcm1hdCIpOworICAgICAgICByZXR1
cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0RXF1YWxpdHkoRWRnZSBvYmpl
Y3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU2LDYgKzE3MzksNjEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSogbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNw
ZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKworICAgIEdQUlJlZyBv
cDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgaWYgKGNvbmRpdGlvbiA9PSBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVyYW5kcywgc2luY2Ug
dGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRp
dGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgdGVtcEdQUik7Cisg
ICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisgICAgICAgIG1faml0Lm1vdmUo
b3AyR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0ludDMyKHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIHRlbXBHUFIsIHJlc3VsdEdQ
UiwgcmVzdWx0R1BSKTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9v
bCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKK30KKwordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSogbm9k
ZSwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZGl0aW9uKQoreworICAgIC8vIE90aGVyIGNvbmRpdGlvbnMgd291bGQgcmVxdWlyZSB1bmJveGlu
ZyB0aGUgQmlnSW50MzIgdG8gZ2V0IGNvcnJlY3QgcmVzdWx0cyBvbiBuZWdhdGl2ZSBudW1iZXJz
LgorICAgIEFTU0VSVChjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVxdWFsIHx8IGNvbmRp
dGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpOworCisgICAgQmFzaWNCbG9jayogdGFr
ZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxv
Y2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsK
KworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2Vu
IGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRh
a2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2gu
CisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJ
VENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0g
dGFrZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1w
OworICAgIH0KKworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgYnJhbmNoNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIo
KSwgdGFrZW4pOworICAgIGp1bXAobm90VGFrZW4pOworfQorI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2Rl
KQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAg
LTQwODcsNiArNDMyNSwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNCaWdJbnQ6IHsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuZ3ByKCkpOworCisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayksIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LmFuZDY0KHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdEdQUik7CisgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGNvbnRpbnVhdGlvbiA9IG1faml0Lmp1bXAoKTsKKworICAgICAgICBpc0NlbGwu
bGluaygmbV9qaXQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1Zh
bHVlUmVncygpOworICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUpLCByZXN1bHRHUFIp
OworCisgICAgICAgIGNvbnRpbnVhdGlvbi5saW5rKCZtX2ppdCk7CisgICAgICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IFJldXNlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA3NWYzYTA2YjBmYy4uNmEyNTRjZTdj
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKICAgICAgICAgY2Fz
ZSBWYWx1ZUJpdFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWF5YmUgc3Vw
cG9ydCB0aGUgY2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVhcEJpZ0ludCBhbmQg
dGhlIG90aGVyIGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlmIChtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkg
PT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVz
ZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAobV9ub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2Up
CiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDhlZjcz
YjZmMmU4Li5hYjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNlOgogICAgICAgICBv
dXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCaWdJbnRVc2U6
Ci0gICAgICAgIG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6Cisg
ICAgICAgIG91dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0LnByaW50KCJCaWdJ
bnQzMiIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVudW0gVXNlS2luZCB7
CiAgICAgS25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2UsIC8vIFRoaXMgYml6
YXJyZSB0eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBieXRlY29kZSBndWFy
YW50ZWUgdGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4gbm90IG9iamVjdHMp
LgogICAgIFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55QmlnSW50VXNlLAorICAg
IEhlYXBCaWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9iamVjdFVzZSwKICAg
ICBNYXBPYmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDggKzE1NCwxMiBAQCBp
bmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAg
ICAgIHJldHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNhc2UgU3ltYm9sVXNl
OgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAgICBj
YXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7CisgICAgY2FzZSBI
ZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7CisgICAgY2FzZSBC
aWdJbnQzMlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAgICBjYXNlIFByb21p
c2VPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVjdDsKICAgICBjYXNl
IERhdGVPYmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBib29sIG1heUhhdmVU
eXBlQ2hlY2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90SGF2ZVR5cGVDaGVj
ayhraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5kKQotewot
ICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgY2FzZSBLbm93bklu
dDMyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAg
ICBjYXNlIEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgIGNhc2UgRG91
YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNlIERvdWJsZVJlcEFu
eUludFVzZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5k
KQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBAIGlubGluZSBib29s
IGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgY2FzZSBLbm93
blN0cmluZ1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJpZ0ludFVzZToKKyAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CiAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDg5YjA2
ZDU4ZWIuLjQ2NzlkMTg3NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yNjEsNiArMjYxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAg
ICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6
CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNl
IElzT2JqZWN0T3JOdWxsOgpAQCAtNDg0LDcgKzQ4NSw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVz
ZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNhc2UgQmlnSW50VXNl
OgorICAgICAgICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNh
c2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE1h
cE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVzZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRleCA1YjQ5MjVjZmZi
Yy4uYzBmNGYyYjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1v
blZhbHVlcy5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1ZXM6OmluaXRpYWxp
emVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxvY2sqIGJsb2MKICAg
ICBpbnRQdHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDMpOwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJsb2NrLT5hcHBlbmRO
ZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgYmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9u
VmFsdWVzLmgKaW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2LDEwIEBAIHB1Ymxp
YzoKICAgICBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAgTFZhbHVlIGludFB0
ckVpZ2h0IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9Owot
ICAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJaZXJvIHsgbnVsbHB0
ciB9OworI2VuZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAgICAg
Y29uc3QgdW5zaWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZhbHVlIGJyYW5jaFdl
aWdodHMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggOThkMmEwZWFlYTIuLmYxOTJhZmI5Mjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMzU4LDYgKzEzNTgs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAgICAgICAgY29tcGls
ZUlzTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJc0JpZ0ludDoK
KyAgICAgICAgICAgIGNvbXBpbGVJc0JpZ0ludCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgY29tcGlsZU51bWJlcklzSW50
ZWdlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTQxLDExICsyMTQ0LDI4IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsK
KworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsK
KyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsK
KworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3BlY3VsYXRlQWRkKHVu
Ym94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihy
ZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2luKTsKKworICAgICAg
ICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJp
Z0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjE2MiwxMSArMjE4MiwyOCBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7
CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94QmlnSW50MzIobGVmdCk7
CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJbnQzMihyaWdodCk7
CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNwZWN1bGF0ZVN1Yih1
bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNzU3BlY3VsYXRpb24o
cmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdpbik7CisKKyAgICAg
ICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3VsdCk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBC
aWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hlYXBCaWdJbnQobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dIZWFwQmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkJpZ0ludCwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJIZWFwQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxODMsMTEgKzIy
MjAsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludDMyKG1fbm9k
ZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExlZnQgPSB1bmJveEJp
Z0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdodCA9IHVuYm94Qmln
SW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1bHQgPSBtX291dC5z
cGVjdWxhdGVNdWwodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAgICAgICAgICBibGVz
c1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vcmln
aW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hCaWdJbnQzMihyZXN1
bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVsQmlnSW50LCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyOTEsNyArMjM0NSwy
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwot
ICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3Qgc3VwcG9ydGVkIGJ5IHRoZSBJQyB5ZXQuCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxv
d0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hp
bGQyKCkpOwogCkBAIC0yNTYwLDExICsyNjI4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
aWxlVmFsdWVEaXYoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAv
LyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlCisgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25EaXZCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0
KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uRGl2SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmln
aHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yNjM5LDE4ICsyNzA4LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21waWxlVmFsdWVNb2QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgewotICAg
ICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIC8vIEZJWE1FOiBhZGQgYSBCaWdJbnQzMiBmYXN0IHBhdGggaGVyZQorICAgICAgICBpZiAo
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgeworICAgICAgICAgICAg
TFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25N
b2RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9k
SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAg
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+YmluYXJ5
VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKLSAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UsIG1fbm9kZS0+
YmluYXJ5VXNlS2luZCgpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZU1vZCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQpAQCAtMjgxNSwxNyArMjg4NywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZh
bHVlUG93KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExW
YWx1ZSBleHBvbmVudCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgLy8g
RklYTUU6IG1heWJlIGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVyZQorICAgICAgICBp
ZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBiYXNlID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5
cGUoKSwgb3BlcmF0aW9uUG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBleHBvbmVudCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFVudHlwZWRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVz
ZSkpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGV4cG9uZW50ID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
ICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3Vs
YXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlUG93LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBA
IC0zMjA2LDkgKzMyODIsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdE5v
dCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0gICAgICAgICAgICBM
VmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0Tm90Qmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEJpZ0ludDMy
VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmljayByZWxpZXMgb24g
ZGV0YWlscyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFuZCB3aWxsIGhhdmUg
dG8gYmUgdXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMlRhZyA9PSAweDEyKTsKKyAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7Cisg
ICAgICAgICAgICB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYw
MDAwOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihvcGVyYW5kLCBt
X291dC5jb25zdEludDY0KG1hc2tGb3JCaWdJbnQzMkJpdHMpKTsKKyAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUo
KSwgb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
b3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMjYsMTEgKzMzMTYsMjMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXBpbGVWYWx1ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkg
ewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQz
MihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3gsIHNp
bmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBtX291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0NiwxMSArMzM0OCwyMyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1f
bm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBObyBu
ZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0ZWQgYnkgYml0QW5k
CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVmdCwgcmlnaHQpOwor
ICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVh
cEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJ
bnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjYsMTEgKzMzODAsMjMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAgICAgewogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFs
dWUgcmVzdWx0TWlzc2luZ1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2luZ1RhZywgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7
CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0zMjg2LDExICszNDEyLDI5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJV
c2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZQor
ICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVzZSBhIHJpZ2h0LXNo
aWZ0IGJ5IGEgbmVnYXRpdmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3IgQmlnSW50cy4KKyAg
ICAgICAgICAgIC8vIFNvIGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZsb3cuCisKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAg
ICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0SlNW
YWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8g
VVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFw
QmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMzMDIsMjQgKzM0NDYs
MjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmFTaHIoCiAgICAg
ICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAgICAgIG1fb3V0LmJp
dEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkpKSk7
CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1f
b3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGluayB0aGF0IHRoZSBC
aXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50aWNzIG9mIHNoaWZ0
IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0TFNoaWZ0KCkKICAg
ICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAgIGxvd0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMyKG1fbm9k
ZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAgICAgICAgIG1fb3V0
LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJbnQzMigzMSkp
KSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBpcyB1c2VmdWwsIGl0
IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMKICAgICB9CiAgICAg
CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJp
Z0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIGEgZmFzdCBwYXRo
IGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
SGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBC
aWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExTaGlmdEhl
YXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMzMzNiw3ICszNDgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBzZXRJ
bnQzMihtX291dC5sU2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSks
Ci0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSksIG1f
b3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsgLy8gRklYTUU6IEkg
ZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMgaW5jbHVkZWQgaW4g
dGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBp
bGVVSW50MzJUb051bWJlcigpCkBAIC03NDA0LDYgKzc1NDksOSBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgaWYgKGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkubV90eXBlICYg
KFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBub3ROdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyNl
bmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygp
OwpAQCAtNzQxMywxMCArNzU2MSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBub3RO
dW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RCaWdJbnQzMikpOwor
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2VuZGlmCiAgICAgICAg
ICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQx
KCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsKIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2go
aXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29u
dGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHNl
dmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVtZXJpYyBzdGlsbCBl
eGlzdHMuCkBAIC04NDg2LDcgKzg2MzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHx8IG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVh
cEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJp
Z0ludFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODUyOSw3ICs4Njg0LDEwNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVm
dCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIC8vIE5v
IG5lZWQgdG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2FtZSBvbiBib3RoIHNp
ZGVzCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQp
OworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0lu
dFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0YXJ0IHdpdGggaWYg
KGxlZnQgPT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSByaWdodCBjaGVja3Mg
KHNlZSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAgICAgICAvLyBUaGUg
Y29kZSB0aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29k
ZToKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50MzIobGVmdCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENIRUNLKGlzSGVhcEJp
Z0ludChyaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpTQmlnSW50OjplcXVh
bHNUb0ludDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGlmIChp
c0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbChKU0JpZ0ludDo6
ZXF1YWxzVG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAgICAgICAgQ0hFQ0so
aXNIZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNhbGwoSlNCaWdJbnQ6
OmVxdWFscyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJbnQgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0JpZ0ludDMyID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNOb3RCaWdJbnQz
MiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAvLyBJbnNlcnRzIGEgY2hlY2sg
dGhhdCBhIHZhbHVlIGlzIGEgSGVhcEJpZ0ludCwgYXNzdW1pbmcgb25seSB0aGF0IHdlIGtub3cg
aXQgaXMgbm90IGEgQmlnSW50MzIKKyAgICAgICAgICAgIGF1dG8gY2hlY2tJc0hlYXBCaWdJbnQg
PSBbJl0oTFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1ZSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGhpZ2hWYWx1ZSwgU3BlY0hlYXBCaWdJ
bnQpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtYXlIYXZlVHlwZUNoZWNrKGhpZ2hW
YWx1ZS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGNoZWNrRmFpbGVk
ID0gaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKGxvd1ZhbHVlLCB+U3BlY0JpZ0lu
dDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kT1NSRXhpdChCYWRUeXBlLCBqc1ZhbHVl
VmFsdWUobG93VmFsdWUpLCBoaWdoVmFsdWUubm9kZSgpLCBjaGVja0ZhaWxlZCwgbV9vcmlnaW4p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChpc0JpZ0ludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1
bnN1cmUobGVmdElzQmlnSW50MzIpLCB1bnN1cmUobGVmdElzTm90QmlnSW50MzIpKTsKKworICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhsZWZ0SXNCaWdJ
bnQzMiwgYm90aEFyZUJpZ0ludDMyKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0lu
dDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5zdXJlKGJvdGhBcmVC
aWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmlnSW50MzIpKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyLCBvbmx5TGVmdElzQmlnSW50MzIpOworICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0gbV9vdXQuYW5jaG9y
KG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlMZWZ0SXNCaWdJbnQz
MiwgbGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgY2hlY2tJc0hlYXBCaWdJbnQocmln
aHQsIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0g
dW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdExl
ZnRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxsKHBvaW50ZXJU
eXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCByaWdodCwgdW5ib3hlZExlZnQpKSk7CisgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05v
dEJpZ0ludDMyLCBsZWZ0RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgY2hlY2tJc0hlYXBCaWdJ
bnQobGVmdCwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9v
dXQuZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUobGVmdEVxdWFsc1JpZ2h0KSwgdW5zdXJlKGxl
ZnRJc0hlYXBCaWdJbnQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdEVxdWFs
c1JpZ2h0LCBsZWZ0SXNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
c3VsdExlZnRFcXVhbHNSaWdodCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxlZnRJc0hlYXBCaWdJbnQsIHJpZ2h0SXNCaWdJbnQzMik7CisgICAgICAgICAg
ICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdodCwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxk
MigpKSksIHVuc3VyZShyaWdodElzQmlnSW50MzIpLCB1bnN1cmUocmlnaHRJc05vdEJpZ0ludDMy
KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNCaWdJbnQzMiwgcmlnaHRJ
c05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJp
Z0ludDMyKHJpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJlc3VsdFJpZ2h0SXNC
aWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1BvaW50ZXIoZ2xvYmFs
T2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzTm90Qmln
SW50MzIsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBjaGVja0lzSGVhcEJpZ0ludChyaWdo
dCwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmln
SW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1YWxzIGZvciBiaWcg
aW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEhlYXBCaWdJ
bnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCBy
aWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0Qm90aEFyZUJpZ0ludDMyLCByZXN1
bHRMZWZ0SXNCaWdJbnQzMiwgcmVzdWx0TGVmdEVxdWFsc1JpZ2h0LCByZXN1bHRSaWdodElzQmln
SW50MzIsIHJlc3VsdEJvdGhIZWFwQmlnSW50KSk7CisKKyAgICAgICAgICAgIG1faW50ZXJwcmV0
ZXIuZmlsdGVyKG1fbm9kZS0+Y2hpbGQxKCksIFNwZWNCaWdJbnQpOworICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5maWx0ZXIobV9ub2RlLT5jaGlsZDIoKSwgU3BlY0JpZ0ludCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKICAgICAg
ICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICAg
ICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZl
ckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwpAQCAtODYxMiwxMSArODg2NSwxMSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Yg
c3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRd
W0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3Ig
YmlnIGludHMKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlh
bGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04NzAyLDYgKzg5NTUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklY
TUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyIGhlcmUsIHNlZSB0aGUgREZHU3Bl
Y3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKTsKICAgICAgICAgbm9uU3BlY3VsYXRp
dmVDb21wYXJlKAogICAgICAgICAgICAgWyZdIChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7
CkBAIC0xMDY2NSw3ICsxMDkxOSwzNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGko
SW50MzIsIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0LCBwYXRjaHBvaW50UmVzdWx0KSk7CiAgICAg
fQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGlsZUlzQmlnSW50KCkK
KyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05vdENlbGxDYXNl
LCBpc0NlbGxDYXNlKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBmaWx0ZXIgdGhlIHBy
b3ZlblR5cGUgdG8gaW5jbHVkZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2UgYXJlIG5vdCBkZWFs
aW5nIHdpdGggYSBjZWxsCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBt
X291dC5hbmNob3IoaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgp
KSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0NlbGxXaXRoVHlwZSh2YWx1ZSwgbV9ub2Rl
LT5xdWVyaWVkVHlwZSgpLCBtX25vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVlcnkoKSwgcHJvdmVu
VHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVz
dWx0KSk7CisgICAgfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKKyAgICBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIEFMV0FZU19JTkxJTkUgdm9pZCBjb21waWxlSXNCaWdJbnQoKQorICAgIHsK
KyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggQmlnSW50MzIsIHdlIHNob3Vs
ZCBqdXN0IGVtaXQgSXNDZWxsV2l0aFR5cGUoSGVhcEJpZ0ludCkgaW5zdGVhZC4KKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisjZW5kaWYKICAgICB2b2lkIGNv
bXBpbGVJc0NlbGxXaXRoVHlwZSgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpAQCAtMTQzOTUsOSArMTQ2NzksMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGVtaXRCaW5hcnlTbmlwcGV0KEpfSklUT3BlcmF0aW9uX0dKSiBzbG93
UGF0aEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAg
ICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQyKCkpOworCisgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxkMigpKTsKIAogICAg
ICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7CkBAIC0xNDQ2
Myw4ICsxNDc0OSwxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1f
bm9kZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMigpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwogCiAgICAg
ICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5k
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkucmVzdWx0VHlwZSgpKTsKQEAgLTE1MDc2
LDcgKzE1MzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSW1w
bGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgICAgICAg
ICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgICAgICAgICAgLy8gICAgIGlmICh2YWx1ZSBp
cyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgICAgICAgICAgLy8gICAgIGlmICh2YWx1
ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAgICAgICAgIC8vICAgICAg
ICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgICAgICAgICAvLyAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVyYWRlcy1hcy11
bmRlZmluZWQKQEAgLTE1MDg2LDYgKzE1Mzc1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8v
ICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgICAgICAgICAvLyB9IGVsc2Ug
aWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgICAgICAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5i
b3hEb3VibGUodmFsdWUpCisgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0lu
dDMyKSB7CisgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gKHZhbHVlICE9IEJpZ0ludDMyVGFn
KQogICAgICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgICAgIC8vICAgICByZXN1bHQgPSB2
YWx1ZSA9PSBqc1RydWUKICAgICAgICAgICAgIC8vIH0KQEAgLTE1MDkzLDEzICsxNTM4NCwxNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzdHJpbmdDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0ludENhc2UgPSBtX291dC5uZXdC
bG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nT3JCaWdJbnRDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGhlYXBCaWdJbnRDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZ05v
ckhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3RJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBub3REb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJs
b2NrPiByZXN1bHRzOwpAQCAtMTUxMTMsMjAgKzE1NDA4LDIwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIHN0cmluZ0Nh
c2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIGlzQmlnSW50
KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0gU3BlY1N0cmluZykpLAotICAg
ICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0cmluZ09yQmlnSW50
Q2FzZSkpOworICAgICAgICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShl
ZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAgICAgICAgICB1bnN1cmUo
aGVhcEJpZ0ludENhc2UpLCB1bnN1cmUobm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UpKTsKIAot
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgYmlnSW50Q2FzZSk7CisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdDYXNlLCBoZWFwQmlnSW50Q2FzZSk7CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQubm90RXF1YWwodmFsdWUs
IHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmcobV9ncmFwaC5tX3ZtKSkpKSk7CiAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGJpZ0ludENhc2UsIG5vdFN0cmluZ09yQmlnSW50Q2FzZSk7CisgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhoZWFwQmlnSW50Q2FzZSwgbm90U3RyaW5nTm9ySGVhcEJpZ0ludENhc2UpOwogICAg
ICAgICAgICAgTFZhbHVlIG5vblplcm9CaWdJbnQgPSBtX291dC5ub3RaZXJvMzIoCiAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUodmFsdWUsIG1faGVhcHMuSlNCaWdJbnRf
bGVuZ3RoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iobm9uWmVy
b0JpZ0ludCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdPckJpZ0ludENhc2Us
IG5vdENlbGxDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ05vckhl
YXBCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CiAgICAgICAgICAgICBMVmFsdWUgaXNUcnV0aHlP
YmplY3Q7CiAgICAgICAgICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJ
c1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAgICBpc1RydXRoeU9iamVjdCA9IG1fb3V0LmJv
b2xlYW5UcnVlOwpAQCAtMTUxNjksOCArMTU0NjQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB1bmJveERvdWJsZSh2YWx1ZSksIG1fb3V0LmNvbnN0RG91YmxlKDApKTsKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihkb3VibGVJc1RydXRoeSkpOwogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91YmxlQ2FzZSwgYmlnSW50MzJDYXNlKTsKKyAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBpc0JpZ0ludDMyKHZhbHVl
LCBwcm92ZW5UeXBlKGVkZ2UpICYgflNwZWNDZWxsKSwKKyAgICAgICAgICAgICAgICB1bnN1cmUo
YmlnSW50MzJDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhiaWdJbnQzMkNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgICAg
ICBMVmFsdWUgYmlnSW50MzJOb3RaZXJvID0gbV9vdXQubm90RXF1YWwodmFsdWUsIG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcihiaWdJbnQzMk5vdFplcm8pKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90QmlnSW50MzJDYXNlLCBjb250aW51YXRpb24pOworI2Vsc2UKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisjZW5kaWYKICAgICAg
ICAgICAgIExWYWx1ZSBtaXNjSXNUcnV0aHkgPSBtX291dC5lcXVhbCgKICAgICAgICAgICAgICAg
ICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUp
KSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1pc2NJc1RydXRo
eSkpOwpAQCAtMTU3NzUsMTMgKzE2MDg0LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIC8vICAgICAg
ICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8g
ICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2lu
dCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAg
IC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCiAgICAgICAgIC8vICAgICB9CiAgICAgICAgIC8v
IH0gZWxzZSBpZiAoaXMgbnVtYmVyKSB7CiAgICAgICAgIC8vICAgICByZXR1cm4gbnVtYmVyCisg
ICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAgLy8gICAgIHJldHVy
biBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBudWxsKSB7CiAgICAgICAgIC8vICAg
ICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9vbGVhbikgewpAQCAt
MTU4MDksNiArMTYxMjAsOSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBub3RDZWxs
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIG51bWJlckNhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3ROdW1iZXJDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYKICAgICAgICAgTEJh
c2ljQmxvY2sgbm90TnVsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBib29sZWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IHVuZGVmaW5lZENhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTU4NjEsNyArMTYxNzUsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nhc2UsIGJpZ0lu
dENhc2UpOwogICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBpc0JpZ0ludCh2YWx1
ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0IC0gU3BlY1N0cmlu
ZykpLAorICAgICAgICAgICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAm
IChTcGVjQ2VsbCAtIFNwZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCiAgICAgICAgICAgICB1bnN1
cmUoYmlnSW50Q2FzZSksIHVuc3VyZShzeW1ib2xDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oYmlnSW50Q2FzZSwgc3ltYm9sQ2FzZSk7CkBAIC0xNTg3Nyw4ICsxNjE5MSwxNSBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgbm90
TnVtYmVyQ2FzZSk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6TnVtYmVyKTsKLSAgICAg
ICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJl
ckNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMy
KHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIH5TcGVjQ2VsbCksIHVuc3VyZShiaWdJbnRDYXNl
KSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dEJpZ0ludDMyQ2FzZSwgbm90TnVsbENhc2UpOworI2Vsc2UKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obm90TnVtYmVyQ2FzZSwgbm90TnVsbENhc2UpOworI2VuZGlmCiAgICAgICAgIExWYWx1ZSBp
c051bGw7CiAgICAgICAgIGlmIChwcm92ZW5UeXBlKGNoaWxkKSAmIFNwZWNPdGhlcikKICAgICAg
ICAgICAgIGlzTnVsbCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OlZhbHVlTnVsbCkpOwpAQCAtMTY1NzYsMTUgKzE2ODk3LDMzIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZhbHVlIGxvd0JpZ0ludChFZGdlIGVk
Z2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICBMVmFsdWUgbG93SGVhcEJpZ0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCht
b2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlKTsKIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbG93Q2VsbChlZGdl
LCBtb2RlKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIHJlc3VsdCk7CisgICAgICAg
IHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGxvd0JpZ0lu
dDMyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2Rl
ID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBCaWdJbnQz
MlVzZSk7CisKKyAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHJlc3VsdCksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RC
aWdJbnQzMihyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCisgICAgICAg
ICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICByZXR1cm4gbV9vdXQuYmlnSW50
MzJaZXJvOworICAgIH0KKyNlbmRpZgorCiAgICAgTFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBA
IC0xNjc3MCw3ICsxNzEwOSw3MyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
b3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBJbnQ2NCksIG1fbnVtYmVyVGFnKTsKICAgICB9
Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGlzQmlnSW50MzIoTFZhbHVl
IGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKKyAgICB7CisgICAg
ICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQmlnSW50MzIp
KQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFs
KAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSBpc05vdEJpZ0ludDMyKExWYWx1
ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAg
ICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNCaWdJbnQz
MikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICByZXR1cm4gbV9vdXQubm90
RXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIHVuYm94QmlnSW50MzIo
TFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQuY2FzdFRvSW50MzIo
bV9vdXQubFNocihqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KDE2KSkpOworICAgIH0KKyAgICBM
VmFsdWUgYm94QmlnSW50MzIoTFZhbHVlIGludDMyVmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gbV9vdXQuYml0T3IoCisgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dChpbnQz
MlZhbHVlLCBCMzo6SW50NjQpLCBtX291dC5jb25zdEludDY0KDE2KSksCisgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1
ZSBpc05vdEFueUJpZ0ludChMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNw
ZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZh
bHVlKHR5cGUsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAg
ICAgICAgLy8gaWYgKGlzQmlnSW50MzIpCisgICAgICAgIC8vICAgcmV0dXJuIGZhbHNlCisgICAg
ICAgIC8vIGlmICghaXNDZWxsKQorICAgICAgICAvLyAgIHJldHVybiB0cnVlOworICAgICAgICAv
LyByZXR1cm4gIWlzSGVhcEJpZ0ludAorICAgICAgICBMQmFzaWNCbG9jayBpc0JpZ0ludDMyQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90QmlnSW50MzJD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKGpzVmFsdWUs
IHR5cGUpLCB1bnN1cmUoaXNCaWdJbnQzMkNhc2UpLCB1bnN1cmUoaXNOb3RCaWdJbnQzMkNhc2Up
KTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQmln
SW50MzJDYXNlLCBpc05vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
dHVybkZhbHNlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc05vdEJp
Z0ludDMyQ2FzZSwgaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
ZmlsdGVyIHRoZSB0eXBlIHBhc3NlZCB0byBpc0NlbGwgdG8gYWNjb3VudCBmb3IgdGhlIHByZXZp
b3VzIHRlc3QgdGhhdCB0b2xkIHVzIHdlIGFyZSBkZWZpbml0ZWx5IG5vdCBhIEJpZ0ludDMyLgor
ICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNDZWxs
Q2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNOb3RDZWxsQ2FzZSwgaXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJldHVy
blRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwg
Y29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJuSXNOb3RIZWFwQmln
SW50ID0gbV9vdXQuYW5jaG9yKGlzTm90SGVhcEJpZ0ludChqc1ZhbHVlKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQzMiwgcmV0dXJu
RmFsc2UsIHJldHVyblRydWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7CisgICAgfQorI2VuZGlm
IC8vIFVTRShCSUdJTlQzMikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2MoTFZhbHVlIGpzVmFs
dWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlm
IChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2VsbENoZWNrIHwgU3Bl
Y01pc2MpKQpAQCAtMTcwODIsOCArMTc0ODcsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBC
b29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0
ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNhc2UgQmlnSW50MzJV
c2U6CisgICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFu
eUJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVTRShCSUdJTlQz
MikKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vdFN0cmlu
Z1ZhclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1ZhcihlZGdlKTsKQEAgLTE3
MjY5LDE4ICsxNzY4MiwzOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQz
Mih2bSgpLnN5bWJvbFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc05v
dEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQor
ICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwoTFZhbHVlIHZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgeworICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNIZWFwQmlnSW50KSkKKyAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGVmYXVsdFRvRmFs
c2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKGlzQ2VsbCh2YWx1ZSwgdHlwZSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJlKGNvbnRp
bnVhdGlvbikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0
dXJuRm9yQ2VsbCA9IG1fb3V0LmFuY2hvcihpc0hlYXBCaWdJbnQodmFsdWUsIHR5cGUpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQu
cGhpKEludDMyLCBkZWZhdWx0VG9GYWxzZSwgcmV0dXJuRm9yQ2VsbCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0ludChMVmFsdWUgY2Vs
bCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgflNwZWNCaWdJ
bnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNw
ZWNDZWxsLCB+U3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAg
ICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50MzIodm0oKS5iaWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFsdWUg
aXNCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
KyAgICBMVmFsdWUgaXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJv
dmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAgICAgaWYgKExWYWx1
ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0hlYXBCaWdJbnQp
KQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFs
KAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKSwKQEAgLTE3NzM4LDE1ICsxODE3MSwyOCBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxh
dGVTeW1ib2woZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBzcGVjdWxh
dGVCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBC
aWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQsIGlzTm90SGVhcEJp
Z0ludChjZWxsKSk7CisgICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVk
Z2UpCiAgICAgewotICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVk
Z2UsIFNwZWNCaWdJbnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlSGVh
cEJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2b2lkIHNwZWN1bGF0
ZUJpZ0ludChFZGdlIGVkZ2UpCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgc3BlY3VsYXRl
QmlnSW50MzIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2Us
IGxvd0NlbGwoZWRnZSkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2Us
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJbnQzMih2YWx1ZSkp
OworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7
CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwg
ZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RBbnlCaWdJbnQodmFsdWUpKTsKICAgICB9CisjZW5kaWYK
IAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxs
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcAppbmRleCBkMzcyMjc3ZmMwNi4uM2M5MTM3ZWY3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTI4Miw3ICsyODIs
NyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklU
Q29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4
aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAgICAgIGV4aXQubV9kZXNj
cmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhH
UFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVQ
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86OnJlZ1QwKSwg
R1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFsaXplIGFsbCBvYmplY3Rz
LiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IGFiM2U5YzYy
OWFkLi4yNTg5ZTJjZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBTdHJpbmcgSGVhcFNu
YXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFwU25hcHNob3ROb2Rl
Jik+IGFsbG93TgogCiAgICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNzID0gMDsKICAgICAgICAg
dW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9kZS5jZWxsLT5pc1N0cmlu
ZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAgaWYgKCFub2RlLmNlbGwt
PmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAg
ICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vZGVGbGFnczo6SW50
ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGlu
ZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJN
YXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTY3JpYmJs
ZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZNLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAppbmRleCA2
Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNjcmliYmxlLmgiCiAj
aW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1ZjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0
SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAgaWYgKGNlbGwtPmlzQmln
SW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2
bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsK
KyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyh2bSwgYXNIZWFw
QmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGM0ZDlj
NzI3ZTA3Li5hZDRiMjE1YzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdW5zaWduZWQgc2l6
ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50
cywgdWludDMyX3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNh
c2UgU3ltYm9sVHlwZToKLSAgICBjYXNlIEJpZ0ludFR5cGU6CisgICAgY2FzZSBIZWFwQmlnSW50
VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
SW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsICBhcmd1bWVu
dHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGUzMDllY2ZjNTUxLi5jODlmNjg1ZmY3
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApA
QCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVl
VG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7CiAgICAgLy8gSW1w
bGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6CiAgICAgLy8gaWYg
KHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0cmluZyBvciB2YWx1
ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMg
SGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUtPmxlbmd0aAogICAg
IC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNxdWVy
YWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZQogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveERv
dWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0ludDMyKSB7CisgICAg
Ly8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAvLyB9IGVsc2Ugewog
ICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9CkBAIC03MDYsNyAr
NzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4o
Vk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8gbm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJyYW5jaElmU3RyaW5n
KHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJyYW5jaElmQmlnSW50
KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQgPSBicmFuY2hJZkhl
YXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJZlNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTcyOSw3ICs3MzEs
NyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIoaW52ZXJ0ID8gRXF1
YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJlc3VsdCk7CiAgICAg
ZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNI
ZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFsdWUucGF5bG9hZEdQ
UigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAgICAgY29tcGFyZTMy
KGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZEltbTMyKDApLCByZXN1
bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CkBAIC03NTIsNiArNzU0LDE1IEBAIHZvaWQg
QXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAogICAgIG5vdERv
dWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRvIGlzTm90QmlnSW50
MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUuZ3ByKCksIHJlc3Vs
dCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8gRXF1YWwgOiBOb3RF
cXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjb21wYXJlNjQoaW52ZXJ0ID8gTm90
RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRy
dWUpLCByZXN1bHQpOwogI2Vsc2UKQEAgLTc2Nyw3ICs3NzgsNyBAQCBBc3NlbWJseUhlbHBlcnM6
Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYgdm0sIEpTVmFsdWVS
ZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZsb3cg
c3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAgLy8gICAgIGlmICh2
YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAgICBpZiAodmFsdWUg
aXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAgICAgICByZXN1bHQg
PSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8gICAgICAgICBkbyBl
dmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC03NzcsNiArNzg4LDgg
QEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFs
dWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAvLyAgICAgcmVzdWx0ID0gISF1bmJveElu
dDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVyKSB7CiAgICAgLy8g
ICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBlbHNlIGlmICh2YWx1
ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94QmlnSW50MzIodmFs
dWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFsdWUgPT0ganNUcnVl
CiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5OSw3IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3Qg
QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAK
ICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwogICAgIGF1dG8gaXNT
dHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwotICAgIGF1dG8gaXNC
aWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGF1dG8gaXNI
ZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CiAKICAg
ICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgIEFTU0VS
VChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgIT0gSW52YWxpZEdQ
UlJlZyk7CkBAIC04MTcsNyArODMwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICB0
cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVxdWFsLCB2YWx1ZS5w
YXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIoanNFbXB0eVN0cmluZyh2bSkpKSk7CiAgICAgZG9u
ZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7CisgICAgaXNIZWFw
QmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6
b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkpOwogCkBAIC04NDIs
NiArODU1LDE1IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgfQogCiAgICAgbm90RG91
YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8gaXNOb3RCaWdJbnQz
MiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5ncHIoKSwgc2NyYXRj
aCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJhbmNoVGVzdDMyKGlu
dmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5hcHBlbmQoanVtcCgp
KTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaDY0KGludmVy
dCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggM2Q3ZWY3Yzc3MjcuLmVkMDczZTc2ZGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Mjks
NyArOTI5LDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElmTm90Qm9vbGVhbihy
ZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAKKworI2lmIFVTRShC
SUdJTlQzMikKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdwciwgR1BSUmVnIHRl
bXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCisgICAgewor
ICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9kZSk7CisgICAgICAg
IEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0ZW1w
R1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJldHVybiBiaWdJbnQz
MjsKKyAgICB9CisgICAgSnVtcExpc3QgYnJhbmNoSWZOb3RCaWdJbnQzMihHUFJSZWcgZ3ByLCBH
UFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykK
KyAgICB7CisgICAgICAgIEp1bXBMaXN0IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChi
cmFuY2hJZk51bWJlcihncHIsIG1vZGUpKTsKKyAgICAgICAgSnVtcCBiaWdJbnQzMiA9IGJyYW5j
aElmQmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAgICAgICByZXN1bHQu
YXBwZW5kKGp1bXAoKSk7CisgICAgICAgIGJpZ0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3RO
dW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAgICAgICBBU1NFUlQo
dGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOwor
ICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCB0ZW1wR1BS
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZk5vdEJpZ0lu
dDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90TnVtYmVyKHJlZ3Mu
Z3ByKCksIHRlbXBHUFIpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisgICAgICAgIEFT
U0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3ZlKGdwciwgdGVtcEdQ
Uik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHRl
bXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQklH
SU5UMzIpCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2UgaXQgY2xlYXIgdGhh
dCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAgIEp1bXAgYnJhbmNo
SWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoOCgK
QEAgLTk1MSwxMyArOTkwLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBicmFu
Y2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBy
ZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWlyZSB0aGVpciBpbnB1
dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcgY2VsbEdQUikg
eyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBi
cmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBl
KGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5bWJvbChHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9CiAg
ICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZkJpZ0lu
dChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEJpZ0ludFR5
cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9CisgICAgSnVtcCBicmFu
Y2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxs
R1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90SGVhcEJpZ0ludChH
UFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEhlYXBCaWdJ
bnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIEp1bXAg
YnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RU
eXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTM1Niw2ICsxMzk2LDE5
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHVu
Ym94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIHVyc2hpZnQ2NCh0cnVzdGVk
SW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgIH0KKworICAgIHZvaWQgYm94Qmln
SW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGxzaGlmdDY0KHRydXN0ZWRJbW0zMkZv
clNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgICAgIG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJpZ0ludDMyVGFnKSwgZ3ByKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCkBAIC0xNzE1LDcgKzE3NjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgICAgICAg
fQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAgICAgICAgLy8gICAg
ICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYgKGlzIGJpZ2ludCkg
eworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7CiAgICAgICAgIC8v
ICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gICAgICAgICByZXR1cm4gc3ltYm9sCkBAIC0xNzI2LDYgKzE3NzksOCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9v
bGVhbikgewogICAgICAgICAvLyAgICAgcmV0dXJuIGJvb2xlYW4KKyAgICAgICAgLy8gfSBlbHNl
IGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJpZ2ludAogICAgICAg
ICAvLyB9IGVsc2UgewogICAgICAgICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZAogICAgICAgICAv
LyB9CkBAIC0xNzU3LDEwICsxODEyLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBub3RTdHJpbmcu
bGluayh0aGlzKTsKIAotICAgICAgICBKdW1wIG5vdEJpZ0ludCA9IGJyYW5jaElmTm90QmlnSW50
KGNlbGxHUFIpOworICAgICAgICBKdW1wIG5vdEhlYXBCaWdJbnQgPSBicmFuY2hJZk5vdEhlYXBC
aWdJbnQoY2VsbEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6QmlnSW50LCBmYWxz
ZSk7CiAKLSAgICAgICAgbm90QmlnSW50LmxpbmsodGhpcyk7CisgICAgICAgIG5vdEhlYXBCaWdJ
bnQubGluayh0aGlzKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpTeW1ib2wsIGZhbHNl
KTsKICAgICAgICAgCiAgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKQEAgLTE3NzYsNiArMTgz
MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXAgbm90Qm9vbGVhbiA9IGJyYW5jaElmTm90Qm9v
bGVhbihyZWdzLCB0ZW1wR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpCb29sZWFu
LCBmYWxzZSk7CiAgICAgICAgIG5vdEJvb2xlYW4ubGluayh0aGlzKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgSnVtcCBub3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93
bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsKKyAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpC
aWdJbnQsIGZhbHNlKTsKKyAgICAgICAgbm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZgog
ICAgICAgICAKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpVbmRlZmluZWQsIHRydWUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNmU2MWI4OWJmOS4uZDVlYTk5
ZjMzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM3MCw2ICszNzAsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9p
c191bmRlZmluZWRfb3JfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX2lzX2Jvb2xlYW4pCiAg
ICAgICAgIERFRklORV9PUChvcF9pc19udW1iZXIpCisgICAgICAgIERFRklORV9PUChvcF9pc19i
aWdfaW50KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJTkVf
T1Aob3BfaXNfY2VsbF93aXRoX3R5cGUpCiAgICAgICAgIERFRklORV9PUChvcF9qZXFfbnVsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcwNzM1NWM2ZDcxLi5kNWZjN2NjZTk5OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MjgsNiArNTI4LDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiop
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgdm9pZCBlbWl0X29wX2lzX2JpZ19pbnQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKKyNlbHNlCisgICAgICAgIE5PX1JFVFVSTiB2b2lkIGVtaXRfb3Bf
aXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopOworI2VuZGlmCiAgICAgICAgIHZvaWQgZW1p
dF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzc4NjczZTE4YWMuLjY3YjAwYjBhMDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ3Niw2
ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
JmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fY29kZUJsb2NrLT5h
ZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQo
Y3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CisgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJl
IGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3Bl
cmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRl
SUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3Bl
cmF0aW9uQXJpdGhOZWdhdGUpOwogfQogCkBAIC00ODQsNiArNDg1LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0MKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgSklUTmVnSUMq
IG5lZ0lDID0gYml0d2lzZV9jYXN0PEpJVE5lZ0lDKj4obV9pbnN0cnVjdGlvblRvTWF0aElDLmdl
dChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKKyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgYmV0dGVy
IHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRoZSBvcGVyYW5kIGNh
biBiZSBhIEJpZ0ludAogICAgIGVtaXRNYXRoSUNTbG93PE9wTmVnYXRlPihuZWdJQywgY3VycmVu
dEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUsIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBmYzk0Y2Ez
NzI0OS4uY2ViNjAwZTdmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0
cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MjgzLDYgKzI4MywzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVl
ID0gYnl0ZWNvZGUubV9vcGVyYW5kOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDApOworICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJlZ1QwKTsKKworICAg
IG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayksIHJlZ1QxKTsKKyAgICBh
bmQ2NChyZWdUMSwgcmVnVDApOworICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1Qw
LCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKworICAg
IGlzQ2VsbC5saW5rKHRoaXMpOworICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhlYXBCaWdJbnRUeXBl
KSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7
CisKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OworfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1p
dF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBJZiB3ZSBvbmx5
IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxXaXRoVHlwZSBpbnN0ZWFkIG9m
IGlzQmlnSW50LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisjZW5kaWYK
Kwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtNTcwLDEyICs2MDEsNTMgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjMiA9IGJ5dGVjb2Rl
Lm1fcmhzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwgcmVnVDAsIHNyYzIs
IHJlZ1QxKTsKLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvKiBBdCBhIGhpZ2ggbGV2
ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6CisgICAgSWYgKGxlZnQg
aXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAg
ICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZ290
byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAg
Z290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7CisgICAgKi8KKwor
ICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQg
aXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdv
dWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElm
TnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMy
LCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcg
YWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwg
dGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAgIC8vIExlYXZpbmcg
b25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIG1vdmUocmVnVDAsIHJlZ1Qy
KTsKKyAgICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAgICBhZGQ2NChyZWdUNSwgcmVnVDIpOwor
ICAgIGFkZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCBy
ZWdUNSk7CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0
KEFib3ZlT3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJl
Z1QwLCByZWdUMSwgcmVnVDUpOworICAgIEp1bXAgZG9uZSA9IGJyYW5jaFRlc3Q2NChOb25aZXJv
LCByZWdUNSk7CisKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgLy8gSnVtcCBzbG93IGlm
IGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgor
ICAgIGFuZDY0KHJlZ1QxLCByZWdUMik7CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0
aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5l
ZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgaWYg
KHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpCisgICAgICAgIHhvcjY0
KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xlYW4ocmVnVDUsIEpTVmFsdWVS
ZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1Q1KTsK
KyNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCiAgICAgLy8gSnVtcCBzbG93IGlmIGJvdGggYXJl
IGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CiAgICAg
b3I2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChyZWdUMikp
OwotICAgIAorCiAgICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRvdWJsZS4gRmlyc3Qg
dGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0aGVuIHRlc3QKICAg
ICAvLyBpZiBpdCdzIGEgZG91YmxlLgogICAgIEp1bXAgbGVmdE9LID0gYnJhbmNoSWZJbnQzMihy
ZWdUMCk7CkBAIC01OTIsNiArNjY0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3N0cmlj
dGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02MTQsNiArNjg3
LDQ1IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5cGUnIHRvIGJlIFN0cmljdEVx
KToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKQorICAgICAgIGdv
dG8gc2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgZ290byB0YWtlbjsK
KyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgZ290byBzbG93
UGF0aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICovCisKKyAgICAvLyBUaGlzIGZyYWdtZW50
IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBz
aW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVp
cmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0
cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkg
dG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAor
ICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBp
dHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBv
ciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgbW92ZShyZWdUMSwg
cmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMp
LCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2NChyZWdUNSwgcmVn
VDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOworICAgIG9yNjQocmVn
VDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJlZ1Qz
LCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9IGJyYW5jaDY0KEVxdWFsLCByZWdUMCwg
cmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlwZTo6U3RyaWN0RXEp
CisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdldCk7CisKKyAgICBtb3ZlKHJlZ1QwLCBy
ZWdUMik7CisgICAgLy8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwgKHRvIGNv
dmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgorICAgIGFuZDY0KHJlZ1QxLCByZWdUMik7CisgICAg
Ly8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVy
ZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3Ro
IGFyZSBzdHJpbmdzCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CisKKyAg
ICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RFcSkgeworICAgICAg
ICBhZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKKyAgICAgICAgYXJlRXF1YWwubGluayh0aGlzKTsK
KyAgICB9CisjZWxzZSAvLyBpZiAhVVNFKEJJR0lOVDMyKQogICAgIC8vIEp1bXAgc2xvdyBpZiBi
b3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIp
OwogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKQEAgLTYyNywxMSArNzM5LDExIEBAIHZvaWQgSklU
Ojpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgQ29tcGlsZU9wCiAgICAgSnVtcCByaWdodE9LID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsKICAgICByaWdodE9LLmxp
bmsodGhpcyk7Ci0KICAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6OlN0cmlj
dEVxKQogICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KEVxdWFsLCByZWdUMSwgcmVnVDApLCB0YXJn
ZXQpOwogICAgIGVsc2UKICAgICAgICAgYWRkSnVtcChicmFuY2g2NChOb3RFcXVhbCwgcmVnVDEs
IHJlZ1QwKSwgdGFyZ2V0KTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY4Niw3ICs3OTgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdU
MCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7Ci0gICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmlnSW50ID0ganVtcCgp
OwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMWMzMDc3NjlkYWEuLjQ4NDAzMDBiMjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0y
ODgsNiArMjg4LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7
CiB9CiAKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3Ry
dWN0aW9uKikKK3sKKyAgICAvLyBXZSBlbWl0IGlzX2NlbGxfd2l0aF90eXBlIGluc3RlYWQsIHNp
bmNlIEJpZ0ludDMyIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IHBsYXRmb3Jtcy4KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19j
ZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5
cGU+KCk7CkBAIC04NjYsNyArODcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKHNyYywg
cmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJl
Z1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdUMCkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAgIEp1bXAgaXNCaWdJ
bnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdhZTE1MGNjNjYxLi40MDgxOGZi
YWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0xMzE1LDYgKzEzMTUsMTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY28KICAgICByZXR1cm4g
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZ2xvYmFsT2JqZWN0LCBzcmMxLCBzcmMyKTsKIH0KIAorI2lm
IFVTRShCSUdJTlQzMikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhl
YXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogaGVh
cEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKworICAgIEFTU0VSVChoZWFwQmlnSW50LT5pc0hlYXBCaWdJbnQoKSk7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPihoZWFwQmlnSW50KS0+ZXF1YWxzVG9JbnQz
MihzbWFsbEludCk7Cit9CisjZW5kaWYKKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywg
aW50IHNpemUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjgzOCw2
ICsyODUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gcHJvZmlsZWRN
dWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsK
IH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlv
blZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg1MCw4ICsyODY0LDE2IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRp
dmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZt
LCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmlt
VmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUu
YmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIs
IC12YWx1ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
dmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNIZWFwQmlnSW50KCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVuYXJ5TWludXModm0s
IHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51bWJlciA9IHByaW1W
YWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg1OSw2ICsyODgxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogCiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0
aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmln
SW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZSk7CkBAIC0yODczLDEwICsyODk2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQq
IHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludDMyKCkpIHsKKyAg
ICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAg
ICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSlNW
YWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAgICAgYXJpdGhQcm9m
aWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVlID0gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAocHJpbVZhbHVl
LmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAgICAgICAgYXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg4Nyw2ICsyOTIwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
Ky8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1
ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwg
SklUTmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTI5MDcsOSArMjk0MSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpT
VmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAg
IGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0g
SlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkpOworCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlu
dDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2
YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1WYWx1ZS5pc0hlYXBC
aWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWlu
dXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiAgICAgfQpAQCAtMjkyMSw2ICsyOTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiBp
dCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2lu
Y2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKiBuZWdJQykKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTQwLDkgKzI5ODYsMTggQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFu
ZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6dW5hcnlNaW51cyh2
bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJ
WE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3VtZW50IGJ1dCBub3Qg
dGhlIHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICBp
bnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBpZiAo
dmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAgcHJpbVZhbHVlID0g
SlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAo
cHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmlnSW50KCkpKTsKIAog
ICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOGVmYjViNWFjOTguLjQzYjlh
MGE4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAt
MjA2LDYgKzIwNiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkCiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKICNpZiBVU0UoSlNWQUxVRTY0KQog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdURl9JTlRFUk5BTDsK
K3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMy
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90IHNtYWxsSW50KSBX
VEZfSU5URVJOQUw7CiAjZWxzZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBX
VEZfSU5URVJOQUw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAppbmRleCA1MjQzNWE2NjEyMC4uMmEyYmI5OWY5NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fSlNWQUxV
RTY0IDAKICNlbmRpZgogCisjaWYgVVNFKEJJR0lOVDMyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9C
SUdJTlQzMiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQzMiAwCisjZW5kaWYK
KwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FERFJFU1M2NCAxCiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGI1Njk5YzMwZDJjLi42ZmYxOTdiMjMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTk2
LDYgKzE5NiwxMSBAQCBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBWYWx1ZU51bGwgICAgICAgPSBj
b25zdGV4cHIgSlNWYWx1ZTo6VmFsdWVOdWxsCiAgICAgY29uc3QgVGFnTnVtYmVyICAgICAgID0g
Y29uc3RleHByIEpTVmFsdWU6Ok51bWJlclRhZwogICAgIGNvbnN0IE5vdENlbGxNYXNrICAgICA9
IGNvbnN0ZXhwciBKU1ZhbHVlOjpOb3RDZWxsTWFzaworICAgIGlmIEJJR0lOVDMyCisgICAgICAg
IGNvbnN0IFRhZ0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFsdWU6OkJpZ0ludDMyVGFnCisgICAg
ICAgIGNvbnN0IE1hc2tCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpCaWdJbnQzMk1hc2sK
KyAgICBlbmQKKyAgICBjb25zdCBMb3dlc3RPZkhpZ2hCaXRzID0gY29uc3RleHByIEpTVmFsdWU6
Okxvd2VzdE9mSGlnaEJpdHMKIGVsc2UKICAgICBjb25zdCBJbnQzMlRhZyA9IGNvbnN0ZXhwciBK
U1ZhbHVlOjpJbnQzMlRhZwogICAgIGNvbnN0IEJvb2xlYW5UYWcgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6Qm9vbGVhblRhZwpAQCAtNTIxLDYgKzUyNiw3IEBAIGNvbnN0IEpTRnVuY3Rpb25UeXBlID0g
Y29uc3RleHByIEpTRnVuY3Rpb25UeXBlCiBjb25zdCBBcnJheVR5cGUgPSBjb25zdGV4cHIgQXJy
YXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHByIERlcml2ZWRBcnJheVR5
cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9iamVjdFR5cGUKK2Nv
bnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRUeXBlCiAKICMgVGhlIHR5
cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBwYXJ0aWN1bGFyIG9yZGVy
IGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNoIHN0YXRlbWVudCBpbiBn
ZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA4MTg5MWMyMmU2
MS4uNThiZjFmNjYxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMzA2LDYgKzEzMDYsMTIgQEAg
bGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogZW5kKQogCiAKKyMgT24gMzItYml0IHBsYXRmb3JtcyBC
SUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkLCBzbyB3ZSBnZW5lcmF0ZSBvcF9pc19jZWxsX3dpdGhf
dHlwZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKK2xsaW50T3Aob3BfaXNfYmlnX2ludCwgT3BJ
c0JpZ0ludCwgbWFjcm8odW51c2VkLCB1bnVzZWQsIHVudXNlZCkKKyAgICBub3RTdXBwb3J0ZWQo
KQorZW5kKQorCisKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0aF90eXBlLCBPcElz
Q2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdl
dChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQw
LCB0MykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWUyZTM3NzNmZmQuLmY5NWU3YzQ3MmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0
NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxs
LCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0CiBlbmQpCiAKIAotbWFjcm8g
c3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5T3BlcmF0aW9uKQor
bWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGNyZWF0ZUJvb2xlYW4p
CiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX3JocywgdDAp
CiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQyLCB0
MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAgICAjIElmIChsZWZ0
IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1Bh
dGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAgICAgICAjIGlmIChy
ZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBD
ZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAg
ICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0OworCisgICAgICAgICMgVGhpcyBm
cmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3
aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVs
eSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKKyAgICAg
ICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50MzIsIHRoZW4gYWRk
aW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmluZyBhbGwgaGlnaCBi
aXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8
PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMgTGVhdmluZyBvbmx5
IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAg
ICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAg
ICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0Mwor
ICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAg
ICAgICBjcWVxIHQwLCB0MSwgdDUKKyAgICAgICAgYnRxbnogdDUsIHQ1LCAuZG9uZSAjaXMgdGhl
cmUgYSBiZXR0ZXIgd2F5IG9mIGNoZWNraW5nIHQ1ICE9IDAgPworCiAgICAgICAgIG1vdmUgdDAs
IHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEgY291bGQgYmUgYW4g
J29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3Ig
YSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAgICAgIGFuZHEgdDEs
IHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAgICAgICBicWFlcSB0
MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93
Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywgLnJpZ2h0T0sKLSAg
ICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRPSzoKLSAgICAgICAg
ZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKLSAgICAgICAgb3JxIFZhbHVlRmFsc2UsIHQw
Ci0gICAgICAgIHJldHVybih0MCkKKworICAgIC5kb25lOgorICAgICAgICBjcmVhdGVCb29sZWFu
KHQ1KQorICAgICAgICByZXR1cm4odDUpCiAKICAgICAuc2xvdzoKICAgICAgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtODcxLDMzICs4OTUsNTMgQEAgZW5kCiAK
IAogc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmln
aHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKKyAgICBtYWNybyAob3Bl
cmFuZCkgeG9ycSBWYWx1ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAogCiBzdHJpY3RFcU9wKG5zdHJp
Y3RlcSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNxbmVx
IGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVyYW5kKSB4b3JxIFZhbHVl
VHJ1ZSwgb3BlcmFuZCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1wT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3JvIHN0cmljdEVxdWFs
aXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwganVtcElmRXF1YWwsIGp1bXBJZk5v
dEVxdWFsKQogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX2xocywg
dDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQz
LCB0MSkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAgICAjIElmIChs
ZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAgIGdvdG8gc2xv
d1BhdGg7CisgICAgICAgICMgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICMgICAgIGdvdG8g
anVtcFRhcmdldDsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwp
CisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgZ290byBvdGhlckp1bXBU
YXJnZXQKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0
aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZklu
dDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1Zh
bHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3Zl
cmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgICMgSWYgaXQgaXMgbm90
IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNl
dAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgog
ICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCisgICAgICAgIG1vdmUgdDEs
IHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAgICAgYWRkcSB0NSwg
dDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0MworICAgICAgICBsc2hp
ZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAgICAgICBicWVxIHQw
LCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEg
Y291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBw
b3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAg
ICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAg
ICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1i
ZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywg
LnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRP
SzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVtcFRhcmdldCkKLSAgICAg
ICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAgIGp1bXAobV90YXJnZXRM
YWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90YXJnZXRMYWJlbCwgZGlzcGF0
Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1bXAsIG1fdGFyZ2V0TGFi
ZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywyNiArOTUxLDI4IEBAIGVuZAogCiAKIHN0
cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQpCi0KKyAgICBt
YWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRhcmdldExhYmVsKSBlbmQs
CisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQp
CiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHJpY3RlcSwKLSAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQp
CisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlzcGF0Y2goKSBlbmQs
CisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkganVtcCh0YXJnZXRMYWJl
bCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29k
ZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JoIHR5
cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Qy
XQogICAgICAgICBlbmQKIAogICAgICAgICBnZXQobV9zcmNEc3QsIHQwKQotICAgICAgICBsb2Fk
cSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICAgICAgIyBN
ZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0MywgbnVtYmVyVGFnLCAu
c2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykKLSAgICAgICAgb3JxIG51
bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwgOF0KKyAgICAgICAgbG9h
ZHEgW2NmciwgdDAsIDhdLCB0MQorICAgICAgICBtZXRhZGF0YSh0MiwgdDMpCisgICAgICAgICMg
c3JjRHN0IGluIHQxLCBtZXRhZGF0YSBpbiB0MgorICAgICAgICAjIEZJWE1FOiB0aGUgbmV4dCBs
aW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGggZm9yIEJpZ0ludDMyLiBXZSBjb3VsZCBpbnN0ZWFk
IGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBoZXJlIGZvciB0aGVtLgorICAgICAgICBicWIgdDEs
IG51bWJlclRhZywgLnNsb3cKKyAgICAgICAgaW50ZWdlck9wZXJhdGlvbih0MSwgLnNsb3cpCisg
ICAgICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhd
CiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgICAgIGRp
c3BhdGNoKCkKIApAQCAtOTM0LDYgKzk4MCw3IEBAIG1hY3JvIHByZU9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbikKICAgICAgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQorCiBlbmQK
IAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKQEAgLTEyNzksNiArMTMyNiwyNiBAQCBsbGludE9w
V2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCiAgICAgcmV0dXJuKHQxKQogZW5kKQogCitpZiBCSUdJTlQzMgorICAg
IGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQsIG1hY3JvKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCisgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAgICAgICBidHFueiB0
MCwgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQorICAgICAgICBjYmVxIEpTQ2VsbDo6bV90eXBl
W3QwXSwgSGVhcEJpZ0ludFR5cGUsIHQxCisgICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQorICAg
ICAgICByZXR1cm4odDEpCisgICAgLm5vdENlbGxDYXNlOgorICAgICAgICBhbmRxIE1hc2tCaWdJ
bnQzMiwgdDAKKyAgICAgICAgY3FlcSB0MCwgVGFnQmlnSW50MzIsIHQwCisgICAgICAgIG9ycSBW
YWx1ZUZhbHNlLCB0MAorICAgICAgICByZXR1cm4odDApCisgICAgZW5kKQorZWxzZQorIyBpZiBC
SUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkIHdlIGdlbmVyYXRlIG9wX2lzX2NlbGxfd2l0aF90eXBl
IGluc3RlYWQgb2Ygb3BfaXNfYmlnX2ludAorICAgIGxsaW50T3Aob3BfaXNfYmlnX2ludCwgT3BJ
c0JpZ0ludCwgbWFjcm8odW51c2VkLCB1bnVzZWQsIHVudXNlZCkKKyAgICAgICAgbm90U3VwcG9y
dGVkKCkKKyAgICBlbmQpCitlbmQKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93aXRo
X3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUsIHQwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCA4NGZlMzk5Y2Q4
Yy4uNGI5NDQ1MDVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
QXJlbmEuY3BwCkBAIC04Myw2ICs4MywxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVy
QXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZQogICAg
IGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiaWdJbnQgPSBK
U0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3RyaW5nKCksIHJhZGl4
LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgSlNCaWdJbnQ6OlBh
cnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisK
ICAgICAvLyBGSVhNRTogV2UgYXJlIGFsbG9jYXRpbmcgYSBKU0JpZ0ludCBqdXN0IHRvIGJlIGFi
bGUgdG8gdXNlCiAgICAgLy8gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyB3aGVuIHJhZGl4IGlzIG5v
dCAxMC4KICAgICAvLyBUaGlzIGNyZWF0ZXMgc29tZSBHQyBwcmVzc3VyZSwgYnV0IHNpbmNlIHRo
ZXNlIGlkZW50aWZpZXJzCkBAIC05MCwxMSArOTQsMTUgQEAgY29uc3QgSWRlbnRpZmllciYgSWRl
bnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJ
ZGUKICAgICAvLyBpdCB3b250IGJlIG11Y2ggcHJvYmxlbWF0aWMsIGdpdmVuIHN1Y2ggY2FzZXMg
YXJlIHZlcnkgcmFyZS4KICAgICAvLyBUaGVyZSBpcyBhIGxvdCBvZiBvcHRpbWl6YXRpb25zIHdl
IGNhbiBhcHBseSBoZXJlIHdoZW4gbmVjZXNzYXJ5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MjcKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gSlNCaWdJbnQ6OnBhcnNl
SW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVy
cm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJzZUludFNpZ246OlVu
c2lnbmVkKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1faWRlbnRpZmll
cnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50Ojp0cnlHZXRTdHJp
bmcodm0sIGJpZ0ludCwgMTApKSk7CisgICAgSlNCaWdJbnQqIGhlYXBCaWdJbnQ7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICBoZWFwQmln
SW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSk7
CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGhlYXBCaWdJbnQgPSBiaWdJbnQuYXNIZWFwQmln
SW50KCk7CisKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50LCAxMCkpKTsKICAgICBy
ZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBlOTgwMzNhMmJhNi4uMmJiYjZj
MzRkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRl
ICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNzdkOGNhZjIzNjguLjhlZDE0YWE4ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsMTggKzc1LDYgQEAgdm9p
ZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJbnRQcm90b3R5
cGUqIGJpZ0ludFByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGJvb2wgaXNT
YWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVudC5pc0ludDMy
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1bWVudC5pc0RvdWJsZSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0gYXJndW1lbnQu
YXNEb3VibGUoKTsKLSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBudW1iZXIgJiYgc3RkOjph
YnMobnVtYmVyKSA8PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcmd1bWVu
dCkKIHsKICAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CkBAIC05NCwyMCArODIs
MjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYgKGFyZ3VtZW50LmlzQmln
SW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1lbnQpOwotICAgIAor
CisgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwg
YXJndW1lbnQuYXNCb29sZWFuKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9vbGVhbigpKSk7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkgeworICAgICAgICBy
ZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmll
dyB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpw
YXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
QVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIo
KSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKQotICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAgCi0gICAgaWYgKGFyZ3Vt
ZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVu
dC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJf
cyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwotICAgIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1l
bnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOwotICAgIH0pKTsKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBh
cmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTExOSwyMCArMTEx
LDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB2
YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1pdGl2ZS5pc051bWJlcigp
KSB7Ci0gICAgICAgIGlmICghaXNTYWZlSW50ZWdlcihwcmltaXRpdmUpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKLSAgICAgICAgCi0gICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBw
cmltaXRpdmUuYXNJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0ludDMyKCkpIHsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZWxzZQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBwcmltaXRp
dmUuYXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5p
c1VJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzVUludDMyKCkpKTsKKyAgICBpZiAocHJpbWl0aXZl
LmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHByaW1pdGl2ZS5hc0RvdWJs
ZSgpOworICAgICAgICBpZiAodHJ1bmMobnVtYmVyKSAhPSBudW1iZXIgfHwgc3RkOjphYnMobnVt
YmVyKSA+IG1heFNhZmVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90
IGEgc2FmZSBpbnRlZ2VyIl9zKSk7CiAKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZlLmFz
RG91YmxlKCkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1h
a2VIZWFwQmlnSW50T3JCaWdJbnQzMih2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocHJpbWl0aXZl
LmFzRG91YmxlKCkpKSk7CiAgICAgfQotICAgIAorCiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0
ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcAppbmRleCBlZTAw
NDVkYWM5Ni4uZTYxOTgyYjkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JpZ0ludE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50T2JqZWN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklB
TExZX0RFU1RSVUNUSUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xhc3NJbmZvIEJpZ0ludE9i
amVjdDo6c19pbmZvID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAKIAotQmlnSW50T2JqZWN0
KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0ludE9iamVjdDo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiaWdJbnQpCiB7
CiAgICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxC
aWdJbnRPYmplY3Q+KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+Ymln
SW50T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGJp
Z0ludCk7CkBAIC00OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6QmlnSW50T2JqZWN0KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmlnSW50T2JqZWN0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lkIEJpZ0ludE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKaW5kZXggODQ3NjcxMGYy
MzIuLmRlYTgxZDIyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRPYmplY3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2Fp
byBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSlNC
aWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uYmlnSW50T2Jq
ZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50T2JqZWN0KiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3RhdGljIEJpZ0ludE9i
amVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsgfQorICAg
IEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3JhcHBlck9iamVjdDo6
aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByb3RlY3Rl
ZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNCaWdJ
bnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNW
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZNJiwgU3RydWN0dXJl
Kik7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoQmlnSW50T2JqZWN0KSA9PSBzaXplb2YoSlNX
cmFwcGVyT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcAppbmRleCAzZWZkNDFkN2RjMy4uOWExNGY2NmE4N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcApAQCAt
ODEsMTIgKzgxLDI0IEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRv
VGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIC8vIEZJWE1FOiBoZWFwLWFsbG9jYXRpbmcgYWxsIGJpZyBpbnRzIGlzIGlu
bmVmaWNpZW50LCBidXQgcmUtaW1wbGVtZW50aW5nIHRvU3RyaW5nIGZvciBzbWFsbCBCaWdJbnRz
IGlzIGVub3VnaCB3b3JrIHRoYXQgSSdtIGRlZmVycmluZyBpdCB0byBhIGxhdGVyIHBhdGNoLgor
ICAgIGlmICh0aGlzVmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmNyZWF0ZUZyb20odm0sIHRoaXNWYWx1ZS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKwog
ICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKEpTQmlnSW50KiBiaWdJ
bnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAgICAgaWYgKEJpZ0ludE9i
amVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmplY3QqPih2bSwgdGhp
c1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRPYmplY3QtPmludGVy
bmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJbnRPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpKSB7Cisg
ICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+aW50ZXJuYWxWYWx1ZSgp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigp
KQorICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYmlnSW50
LmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIGJpZ0ludC5h
c0hlYXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTE2LDYgKzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJlc3VsdFN0cmluZykpOwogfQog
CisvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBzaG91bGQgaW50cm9kdWNlIHRoZSByaWdodCBzZXBh
cmF0b3JzIGZvciB0aG91c2FuZHMgYW5kIHNpbWlsYXIgdGhpbmdzLgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiOGRlOTY1NTgyZi4uMjY2NTIwZWNmNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRl
ICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
LSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDY5LDEz
ICs0NjgsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQogICAgIEJFR0lOKCk7CiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50
ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpTQmln
SW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2JhbE9i
amVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50
KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQotICAgICAg
ICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQq
PihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc051bWJlcihX
VEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAgUkVUVVJOX1dJVEhfUFJP
RklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0pOwogfQogCkBAIC00
ODQsMTMgKzQ3OCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMpCiAgICAgQkVHSU4o
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIFZhcmlhbnQ8
SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGdsb2JhbE9iamVjdCwgYXJn
dW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUgcmVzdWx0OwotICAg
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0VmFyaWFudCkpCi0g
ICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0Jp
Z0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGpzTnVt
YmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsKICAgICBSRVRVUk5fV0lU
SF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQsIHsgfSk7CiB9CiAK
QEAgLTUwNyw3ICs0OTYsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5h
cnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICBVbmFyeUFy
aXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwogICAgIHByb2Zp
bGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwg
cmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgeworCisgICAg
aWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEhl
YXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAocmVzdWx0LmlzQmln
SW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMyKCk7CisjZW5kaWYK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpKTsKICAgICAgICAg
aWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0ludDMy
KCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKTsK
QEAgLTUyNywxMCArNTI0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5h
cnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEKICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50KCkpCi0gICAgICAg
IHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIHByb2ZpbGUu
c2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UKIHN0YXRpYyB2b2lkIHVw
ZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmLCBKU1Zh
bHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0NSw4ICs1MzksMjEgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRp
dmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwog
Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1
bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAg
IGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlm
ICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEpTVmFsdWUo
SlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIFJFVFVSTl9XSVRIX1BS
T0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JV
bmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHByaW1WYWx1ZS5pc0hl
YXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5
TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIFJFVFVSTl9XSVRI
X1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVu
YXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAgICAgfSk7CkBAIC01
ODQsOCArNTkxLDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFy
aXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAgICAgICAgICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQotICAgICAgICBwcm9m
aWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNIZWFwQmln
SW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50KCk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkpCisgICAgICAgIHBy
b2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxzZSAKICAgICAgICAg
cHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYwNywxMyArNjE4LDggQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVHSU4oKTsKICAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpTVmFsdWUgYXJndW1l
bnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICBWYXJpYW50PEpT
QmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3VsdDsKLSAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKQot
ICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpOwotICAg
IGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihyZXN1bHRW
YXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKQEAgLTY0OSw3ICs2
NTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAvLyBUaGUgZm9sbG93
aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRvIGJlIHN1cmUgdG8g
cnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVyLiAgKEEgY2FsbCB0
byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0JpZ0ludE9ySW50MzIo
KSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhlc2UgaXMgaWRlbXBv
dGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRoZSBDYWxsRnJhbWUu
KQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjcxLDI0ICs2NzcsOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFs
dWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUo
KTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwog
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxK
U0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMp
KTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBjLCByZXN1bHQsIGxl
ZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAtIFdURjo6Z2V0PGRv
dWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwg
ewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAgfSk7CkBAIC03MDAs
MjYgKzY5MCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29k
ZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0LnRvTnVtZXJpYyhn
bG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVy
aWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04o
KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7
Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxP
YmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0lu
dCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAg
ICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAgICAgICAgICAgICAg
dXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsKLSAgICB9Ci0KLSAg
ICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBi
ID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAg
ICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpAQCAtNzMxLDI0ICs3
MDMsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMp
LmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9
IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNS
ZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0
TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJp
YykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6cmVtYWluZGVy
KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhS
T1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0gICAgCi0g
ICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsKLSAgICBkb3VibGUg
YiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRVUk4oanNOdW1iZXIo
anNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3BvdykKQEAgLTc1NywyNSArNzE0LDkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93PigpOwogICAgIEpTVmFs
dWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBy
aWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQp
OwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIklu
dmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVy
YXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4o
bGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVy
aWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3coYSwgYikpKTsKKyAg
ICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkK
QEAgLTc4NCwyMiArNzI1LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpCiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQg
PSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBH
RVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBs
ZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAg
ICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGxlZnQgc2hp
ZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklMRUQoanNOdW1iZXIo
V1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxpbnQzMl90PihyaWdo
dE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xTaGlmdChnbG9iYWxP
YmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5f
UFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3JzaGlmdCkK
QEAgLTgwOCwyMiArNzM3LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpCiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBKU1ZhbHVlIGxlZnQg
PSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBH
RVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBs
ZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7
Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9G
SUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBz
aWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQotICAgIFJFVFVSTl9Q
Uk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYykgPj4gKFdURjo6
Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfdXJzaGlmdCkKQEAgLTg0OSw3OSArNzY2LDQ3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBHRVRfQyhieXRlY29k
ZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBK
U0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4ob3Bl
cmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQgPSBHRVRfQyhieXRl
Y29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJl
cih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAgYXV0byByZXN1bHQg
PSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBDSEVDS19FWENFUFRJ
T04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9DKGJ5dGVjb2Rl
Lm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhieXRlY29kZS5t
X3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
bGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51
bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmJpdHdp
c2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RG
OjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQ
VElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcgb3BlcmF0aW9uLiIp
KTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUo
KTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAot
ICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJp
YykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CisgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gR0VUX0MoYnl0
ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKLSAg
ICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IEdFVF9DKGJ5dGVj
b2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJp
Z2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6
Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyks
IFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAg
ICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAg
ICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgICAg
ICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmln
SW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIikpOwotICAgIH0K
LQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVt
ZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdFVF9D
KGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7
Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRfQyhi
eXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwot
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1l
cmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
SW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3Bl
cmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMp
LmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFs
dWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90Pihs
ZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IGRjZGZjZmEyYmNiLi5lOWI1NDY1NzAyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAg
LTg3LDEyICs4NywyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0RnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCogZwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBudW1iZXJGb3JtYXQgPSBqc0Nh
c3Q8SW50bE51bWJlckZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgYXV0
byB2YXJpYW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHN3aXRjaE9uKHZhcmlhbnQsIFsmXShhdXRvJiYgdmFsdWUpIHsKLSAgICAgICAg
cmV0dXJuIG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgIH0p
KSk7CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChiaWdJbnRPck51bWJlci5pc051bWJl
cigpKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGJpZ0ludE9yTnVtYmVyLmFzTnVtYmVyKCk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
YmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIEpTQmlnSW50KiB2YWx1ZSA9
IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnRPck51bWJlci5iaWdJbnQzMkFzSW50MzIo
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXQo
Z2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKGJpZ0lu
dE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCogdmFsdWUgPSBiaWdJbnRP
ck51bWJlci5hc0hlYXBCaWdJbnQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJl
ckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDljMzQ1NDQyZjU0Li4x
YzIzOWNiZmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0
aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEpTQmlnSW50Ojppbml0aWFsaXplKEluaXRpYWxpemF0
aW9uVHlwZSBpbml0VHlwZSkKIAogU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQmlnSW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEhlYXBCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIEpT
QmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYgdm0pCkBAIC0xNDIsOCArMTQyLDEwIEBA
IEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0X3QgdmFsdWUpCiB7
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotICAgIAot
ICAgIGlmIChzaXplb2YoRGlnaXQpID09IDgpIHsKKworICAgIC8vIFRoaXMgcGF0aCBpcyBub3Qg
anVzdCBhbiBvcHRpbWl6YXRpb246IGJlY2F1c2Ugd2UgZG8gbm90IGNhbGwgcmlnaHRUcmltIGF0
IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwKKyAgICAvLyBpdCB3b3VsZCBiZSBhIGJ1ZyB0byBj
cmVhdGUgYSBCaWdJbnQgd2l0aCBsZW5ndGg9MiBpbiB0aGlzIGNhc2UuCisgICAgaWYgKHNpemVv
ZihEaWdpdCkgPT0gOCB8fCAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+PSBJTlRfTUlOKSkg
ewogICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2
bSwgMSk7CiAgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAgIGJpZ0ludC0+c2V0
RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90PigtKHZhbHVl
ICsgMSkpICsgMSkpOwpAQCAtMTg4LDM0ICsxOTAsMjEgQEAgSlNWYWx1ZSBKU0JpZ0ludDo6dG9Q
cmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAog
ICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CiB9CiAKLU9wdGlvbmFsPHVp
bnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkKLXsKLSAgICBpZiAo
aXNaZXJvKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChsZW5ndGgoKSA9PSAx
ICYmICFzaWduKCkpIHsKLSAgICAgICAgRGlnaXQgckRpZ2l0ID0gZGlnaXQoMCk7Ci0gICAgICAg
IGlmIChyRGlnaXQgPD0gOSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90
PihyRGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1KU0JpZ0ludCogSlNCaWdJ
bnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywg
RXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6OnBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUg
cGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHBhcnNl
SW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2Rl
KTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3RlcnMxNigpLCBz
Lmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUlu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWlu
dDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24p
CitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFy
c2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAg
ICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNoYXJhY3RlcnM4KCksIHMu
bGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJzZUludE1vZGU6OkRpc2Fs
bG93RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBz
LmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgc2lnbiwg
UGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKIH0KIAotSlNCaWdJbnQqIEpTQmln
SW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdW
aWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCiB7CiAgICAgcmV0dXJuIHBhcnNlSW50KGdsb2Jh
bE9iamVjdCwgcywgRXJyb3JQYXJzZU1vZGU6Oklnbm9yZUV4Y2VwdGlvbnMpOwogfQpAQCAtNDU0
LDE2ICs0NDMsMjMgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW4KIAogSlNCaWdJbnQqIEpTQmln
SW50OjppbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgpCiB7Ci0g
ICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBmYWlyIGJpdCBtb3Jl
IGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJl
dHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9uZS5nZXQoKSk7Cisg
ICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFkZE9uZShnbG9iYWxP
YmplY3QsIHgsIFNpZ25PcHRpb246OlVuc2lnbmVkKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
YWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7CisgICAgcmVzdWx0
LT5zZXRTaWduKHRydWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEpTQmlnSW50KiBKU0Jp
Z0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4KQogewot
ICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEgZmFpciBiaXQgbW9y
ZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBy
ZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOwor
ICAgIGlmICh4LT5pc1plcm8oKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gY3JlYXRl
RnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAgICAgICByZXN1bHQtPnNldFNpZ24odHJ1
ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmICgheC0+c2lnbigpKQor
ICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgo
KSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwgeCwgU2lnbk9wdGlv
bjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQpAQCAtNTMyLDcgKzUyOCw3
IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAgaWYgKHgtPnNpZ24oKSkKICAgICAgICAg
c3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkgPT0g
eCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkKICAgICBKU0JpZ0ludCog
eTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHksIHktPmxlbmd0aCgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICByZXR1cm4gYWJzb2x1dGVB
bmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTY0MCw3IEBAIFN0cmluZyBKU0JpZ0ludDo6
dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkKIHsKICAg
ICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6
dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
NjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7CiAKICAgICBBU1NFUlQocmFkaXgg
Pj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcgKzE3OTgsNyBAQCBib29sIEpTQmlnSW50
OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
JiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hhclR5cGUq
ICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlKQor
SlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFy
c2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMTgxMCw3
ICsxODA2LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKICAgICB3aGlsZSAocCA8IGxlbmd0
aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsKIAotICAgIC8vIENo
ZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgIC8vIENoZWNrIFJhZGl4IGZyb20g
Zmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9PSAnMCcpIHsKICAgICAg
ICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdiJykpCiAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0YSwgbGVuZ3RoLCBw
ICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5zaWduZWQsIFBhcnNlSW50
TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0xODI0LDI0ICsxODIwLDE4IEBAIEpTQmln
SW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUludFNpZ24gc2lnbiA9IFBhcnNlSW50U2ln
bjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKGRhdGFbcF0g
PT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlIGlmIChkYXRhW3BdID09ICct
JykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScpIHsKICAgICAgICAgICAgIHNpZ24gPSBQ
YXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAgKytwOwogICAgIH0KIAot
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBs
ZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7Ci0KLSAgICBpZiAocmVzdWx0ICYm
ICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJz
ZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBwYXJz
ZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9k
ZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBD
aGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNp
Z25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBz
aWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQ
YXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUg
cGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAgdW5zaWduZWQgcCA9
IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4NDIsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgQ2hhclR5cGUqIGRh
dAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGVycm9yUGFyc2VN
b2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAgICAgICAgICAgICB0aHJv
d1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIC8vIFNr
aXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjYsNDQgKzE4NTYsODQgQEAgSlNCaWdJbnQqIEpT
QmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENo
YXJUeXBlKiBkYXQKIAogICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsKIAotICAgIGlmIChwID09
IGxlbmd0aCkKKyAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDApOworI2Vsc2UKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotCi0gICAgdW5zaWduZWQgbGltaXQwID0gJzAnICsg
KHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBsaW1pdGEgPSAnYScgKyAo
cmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHJhZGl4IC0gMTApOwot
Ci0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJh
ZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2ZSBhY2Nl
c3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFuIGV4Y2Vw
dGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9uVHlwZTo6V2l0aFpl
cm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsK
LSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRhW2ldID49ICcwJyAmJiBk
YXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJzAnOwotICAg
ICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGltaXRhKQotICAgICAg
ICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAgIGVsc2UgaWYgKGRhdGFb
aV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAgICBkaWdpdCA9IGRhdGFb
aV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGlnaXQ+KHJhZGl4KSwg
c3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisjZW5kaWYKICAgICB9CiAKLSAgICByZXN1bHQt
PnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRydWUgOiBmYWxzZSk7Ci0g
ICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0p
OworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgbnVtYmVyIHN1Y2ggdGhh
dCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMyX01BWAorICAgIHVuc2ln
bmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChyYWRpeCkgeworICAgIGNh
c2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMwOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSAxMDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQz
MiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAgIGxlbmd0aExpbWl0
Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBs
ZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
SlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwogCi0gICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2Vw
dGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0lu
dCIpKTsKKyAgICB1bnNpZ25lZCBsaW1pdDAgPSAnMCcgKyAocmFkaXggPCAxMCA/IHJhZGl4IDog
MTApOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNfY2FzdDxpbnQzMl90Pihy
YWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gbGVuZ3Ro
IC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBpbnQzMl90IGRpZ2l0ID0g
MDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZsb3c+IG11bHRpcGxpZXIg
PSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoTGltaXRGb3JCaWdJ
bnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAgICAgIGRpZ2l0ICo9IHJh
ZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAgICAgICAgICAgIGlmIChk
YXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAgICAgICAgICAgIGRpZ2l0
ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRhW3BdID49ICdhJyAm
JiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAn
YScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ0EnICYmIGRhdGFbcF0g
PCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAtICdBJyArIDEwOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09
IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWls
ZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdldCgpKTsKKworICAgICAg
ICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChwID09IGxlbmd0aCkgeworICAg
ICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKQorICAgICAgICAg
ICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgZGlnaXQpOworI2Vsc2UKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
ZGlnaXQpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgaGVhcFJlc3VsdCA9
IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBpbml0aWFsTGVuZ3RoKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgICAg
ICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3Mg
dG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93IGFuIGV4Y2VwdGlv
biBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICBpZiAoIWhlYXBSZXN1bHQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIGhlYXBSZXN1bHQtPmluaXRpYWxp
emUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CisgICAgICAgIH0KKyAgICAgICAgaGVh
cFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0PihtdWx0aXBsaWVy
LnVuc2FmZUdldCgpKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisgICAgfQogCi0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihzaWduID09IFBhcnNlSW50
U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3VsdC0+cmlnaHRUcmltKHZtKTsKIH0K
IAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5zaWduZWQgbikKQEAg
LTE5MjcsMTggKzE5NTcsMjAgQEAgYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1
ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CiAgICAgCi0g
ICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1
ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhp
cy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAo
dGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGlj
X2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKLSAg
ICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsc1Rv
SW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAgICBkb3VibGUgdmFsdWUgPSBudW1W
YWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21wYXJlVG9Eb3VibGUodGhpcywgdmFsdWUp
ID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCitib29sIEpTQmlnSW50OjplcXVhbHNU
b0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJu
IHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkgJiYgKHRo
aXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDApID09IHN0YXRpY19j
YXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKSk7Cit9CisK
IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoSlNC
aWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0
IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uOGUyYzE0OGU2Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDYgKzgyLDE3IEBAIHB1YmxpYzoKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKKyAgICBz
dGF0aWMgSlNWYWx1ZSBtYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoVk0mIHZtLCBpbnQ2NF90IHZh
bHVlKQorICAgIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2YWx1ZSA8PSBJTlRf
TUFYICYmIHZhbHVlID49IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpOworI2VuZGlmCisK
KyAgICAgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihwdHIpKTsKKyAgICB9CisK
ICAgICBlbnVtIGNsYXNzIEVycm9yUGFyc2VNb2RlIHsKICAgICAgICAgVGhyb3dFeGNlcHRpb25z
LAogICAgICAgICBJZ25vcmVFeGNlcHRpb25zCkBAIC05MCwxMyArMTAxLDEyIEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERpc2FsbG93RW1wdHlTdHJpbmcsIEFsbG93
RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50U2lnbiB7IFVuc2lnbmVkLCBT
aWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxPYmplY3Qq
LCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQ
YXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWduID0gUGFyc2VJbnRTaWduOjpV
bnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0dsb2JhbE9iamVjdCos
IFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0
aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVj
dCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9IEVy
cm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2ln
bjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0
KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNl
cHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVj
dCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0cmluZyB0cnlHZXRTdHJpbmcoVk0mLCBK
U0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmds
ZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAgZW51bSBjbGFzcyBDb21wYXJpc29uTW9k
ZSB7CkBAIC0xMTMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmlnSW50Kik7CiAgICAgYm9vbCBl
cXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVxdWFs
c1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENvbXBhcmlzb25SZXN1bHQgY29tcGFyZShK
U0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIo
SlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25zdDsK
QEAgLTIyMiwxMCArMjMzLDEwIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNHbG9iYWxP
YmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUp
OworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUq
ICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2ln
biA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUludE1vZGU6OkFs
bG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiA9IFBh
cnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUludE1vZGU6OkFsbG93RW1w
dHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihKU0dsb2JhbE9i
amVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2lnbmVkIGNoYXJjb3VudCk7CiAKQEAgLTI1
OCw5ICsyNjksOSBAQCBwcml2YXRlOgogICAgIENhZ2VkVW5pcXVlUHRyPEdpZ2FjYWdlOjpQcmlt
aXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxpbmUgSlNCaWdJbnQqIGFzQmlnSW50KEpT
VmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludChKU1ZhbHVlIHZhbHVl
KQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7CisgICAgQVNTRVJU
KHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU0Jp
Z0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1ZGI3Y2QzZmQxOS4uOGY3ZWJmYjE1MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0yMyw2ICsy
Myw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCisj
aW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNl
dHRlci5oIgpAQCAtNjgsOSArNjksMTggQEAgZG91YmxlIEpTVmFsdWU6OnRvTGVuZ3RoKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAKIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJl
clNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFpc0RvdWJsZSgpKTsKICAg
ICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc0NlbGwoKS0+dG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0lu
dDMyKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNv
bnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOwor
ICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAgIGlmIChpc1RydWUoKSkKICAg
ICAgICAgcmV0dXJuIDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/IFBOYU4gOiAwOyAv
LyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2ICsxMTEsMTAgQEAg
SlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmpl
Y3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3Qs
IGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAqdGhp
cyk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGds
b2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMzIsMTMgQEAgSlNWYWx1ZSBKU1ZhbHVl
Ojp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBl
Y21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFz
VmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAgICAgICAgcmV0dXJu
IGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFs
dWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAg
ICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oSlNCaWdJbnQ6OmNy
ZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIoKSkpOworICAgICAg
ICByZXR1cm4gaGVhcEJpZ0ludC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICB9CisjZW5k
aWYKKwogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTUxLDcgQEAgSlNPYmplY3QqIEpT
VmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKTsKLSAgICAgICAg
aWYgKGlzQmlnSW50KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAgICAgICBBU1NFUlQo
aXNTeW1ib2woKSk7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJvbFByb3RvdHlw
ZSgpOwpAQCAtMTQwLDYgKzE2MSwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVBy
b3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAoaXNCb29sZWFuKCkp
CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVm
aW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTI4Niw2ICsz
MTEsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAg
ICAgICAgICAgIG91dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1
Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgaW5D
b250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250ZXh0KSk7CisgICAgICAg
IGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgb3V0LnByaW50KCJCaWdJbnRb
aGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKICAgICAgICAg
ZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEpTT2JqZWN0Ojpp
bmZvKCkpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdDogIiwgUmF3UG9pbnRlcihh
c0NlbGwoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50KCIgd2l0aCBidXR0ZXJmbHkgIiwgUmF3
UG9pbnRlcihhc09iamVjdChhc0NlbGwoKSktPmJ1dHRlcmZseSgpKSk7CkBAIC0zMDUsNiArMzMy
LDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAg
ICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAg
ICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNl
IGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAl
ZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnBy
aW50KCJJTlZBTElEIik7CiB9CkBAIC0zNDcsNiArMzc4LDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVt
cEZvckJhY2t0cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQo
Ik51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBvdXQucHJpbnQo
IlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMy
KCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJ
bnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7
CiB9CkBAIC0zODQsMTggKzQxOSwyNyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVybkVtcAogICAgICAg
ICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBpZiAoaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsK
LSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOwotICAg
ICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoaXNC
aWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0ludDMyQXNJbnQzMigpOwor
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIpIDw9IDkpCisgICAgICAg
ICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhpbnRlZ2Vy
ICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdm0ubnVtZXJp
Y1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlzQmlnSW50KCkpIHsKLSAg
ICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKLSAgICAgICAgaWYgKGF1
dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKCpkaWdpdCAr
ICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkpOworI2VuZGlmCisgICAg
aWYgKGlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBhc0hlYXBC
aWdJbnQoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIgaGF2ZSB0d28gY2Fz
ZXMgaGVyZTogb25lLWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFsU3RyaW5nIGZvciBl
dmVyeXRoaW5nIGVsc2UuCisgICAgICAgIGF1dG8gc3RyaW5nID0gYmlnSW50LT50b1N0cmluZyhn
bG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZXJy
b3JWYWx1ZSgpKTsKKyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9IEpTU3RyaW5nOjpj
cmVhdGUodm0sIHN0cmluZy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlcnJvclZhbHVlKCkpOwogICAgICAgICByZXR1
cm4gcmV0dXJuU3RyaW5nOwogICAgIH0KKyAgICBpZiAoaXNTeW1ib2woKSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1i
b2wgdG8gYSBzdHJpbmciX3MpOworICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworICAgIH0K
IAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggNDJjNTM3NzdjY2QuLjg3MmMzNjM5OTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xNzcs
NiArMTc3LDkgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNUcnVlIH07CiAgICAg
ZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxsVGFnIHsgSlNDZWxs
VHlwZSB9OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbnVtIEpTQmlnSW50MzJUYWcgeyBKU0Jp
Z0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNE
b3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4Niw2ICsxODksOSBAQCBwdWJsaWM6CiAg
ICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBK
U1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgSlNWYWx1
ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgogCiAgICAgLy8gTnVtYmVycwogICAg
IEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CkBAIC0yMTksNiArMjI1LDkgQEAg
cHVibGljOgogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFu
KCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11c3Qgb25seSBiZSBj
YWxsZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJfdCBhc0ludDMyRm9y
QXJpdGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50LCBidXQgb3RoZXJ3
aXNlIGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzgsNiArMjQ3LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9v
bCBpc0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7CisgICAg
Ym9vbCBpc0JpZ0ludDMyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAg
IGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CkBAIC0yNDYsNyArMjU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBj
b25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJv
b2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb09y
TnVsbChWTSYpIGNvbnN0OwotICAgICAgICAKKwogICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVl
LgogICAgIGJvb2wgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgV1RGOjpTdHJpbmcmKSBjb25z
dDsKICAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8g
bnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCkBAIC0yNjUsOSArMjc2LDEwIEBAIHB1YmxpYzoK
ICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJlIHNpZGUgZWZmZWN0
IGZyZWUgaWYgYW4gZXhjZXB0aW9uIGhhcwogICAgIC8vIGJlZW4gc2V0IGluIHRoZSBDYWxsRnJh
bWUgYWxyZWFkeS4KICAgICBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
LSAgICAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiB0b051bWVyaWMoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4gdG9CaWdJbnRP
ckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICBKU1ZhbHVlIHRvTnVtZXJpYyhK
U0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTVmFsdWUgdG9CaWdJbnRPckludDMyKEpTR2xv
YmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludCgpIGNvbnN0Owog
CiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0IHNp
ZGUgZWZmZWN0cy4KICAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgp
IGNvbnN0OwpAQCAtMzE2LDggKzMyOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVh
bFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAg
c3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJvb2wgc3RyaWN0RXF1
YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwotICAg
IHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpY3RFcXVhbEZvckNl
bGxzKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2Mik7CiAgICAgc3RhdGlj
IFRyaVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKIAogICAg
IGJvb2wgaXNDZWxsKCkgY29uc3Q7CkBAIC00MTUsMTEgKzQyNiwyMCBAQCBwdWJsaWM6CiAgICAg
ICogVGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogICAgICAqIC0g
Qml0IDEgKE90aGVyVGFnKSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywgYWxsb3dpbmcgcmVh
bCBwb2ludGVycyB0byBiZQogICAgICAqICAgcXVpY2tseSBkaXN0aW5ndWlzaGVkIGZyb20gYWxs
IGltbWVkaWF0ZSB2YWx1ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBvaW50ZXJzLgotICAg
ICAqIC0gV2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBh
bmQgTnVsbCBzaGFyZSB0aGUKKyAgICAgKiAtIFdpdGggYml0IDMgbWFza2VkIG91dCAoVW5kZWZp
bmVkVGFnKSwgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQogICAgICAqICAgc2FtZSB2YWx1
ZSwgYWxsb3dpbmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlja2x5IGRldGVjdGVkLgogICAg
ICAqCiAgICAgICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJpdCBwYXR0ZXJuIDB4
MCwgdGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQogICAgICAqIGhvbGVzLCBhbmQgYXMg
YSBDKysgJ25vIHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBhbiBpbnRlcm5hbCB2
YWx1ZSBvZiAwKS4KKyAgICAgKgorICAgICAqIFdoZW4gVVNFKEJJR0lOVDMyKSwgd2UgaGF2ZSBh
IHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBhcmUgc21hbGwgKDMyLWJp
dCBhdCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIKKyAgICAgKiBUaGlz
IHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0aGluZ3M6Cisg
ICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBvciBJbnRlZ2VyIHRo
YW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRo
IGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBpcyBzZXQgdG8gdHJ1
ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2ludGVyIHRvIHdhc20g
dGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90
IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlzIHNldCB0byBmYWxz
ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3VuZGVmaW5lZCBiZWNh
dXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAgICAvLyBUaGlzIHZhbHVlIGlz
IDJeNDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBlbmNvZGVkIHZhbHVl
IHdpbGwgYmVnaW4KQEAgLTQyOSwxMSArNDQ5LDE5IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbGwg
Yml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJl
ciwKICAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91
YmxlIHByZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJl
clRhZyA9IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3Rh
bnQgaXMgdXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RyaWN0RXEs
IHRvIGRldGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRvdWJsZQorICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcpOworICAgIHN0YXRp
Y19hc3NlcnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJUYWcpKTsKIAogICAgIC8v
IEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUg
Yml0IDIgc2V0LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBPdGhlclRhZyAgICAgICA9
IDB4MjsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9vbFRhZyAgICAgICAgPSAweDQ7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRhZyAgID0gMHg4OworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQmlnSW50MzJUYWcg
ICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJbnQzMk1hc2sgICA9
IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOworI2VuZGlmCiAgICAgLy8gQ29tYmluZWQgaW50ZWdl
ciB2YWx1ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KICAgICBzdGF0aWMgY29uc3RleHBy
IGludDMyX3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCBmYWxzZTsKICAg
ICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVlICAgICAgPSBPdGhlclRhZyB8IEJv
b2xUYWcgfCB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKaW5kZXggNWIzZmY4YWM0NGUuLjBlZTYyZTExMmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC00Nyw3ICs0Niw5IEBAIEFMV0FZU19JTkxJTkUgaW50MzJfdCBKU1ZhbHVlOjp0b0ludDMyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW50MzIoKSkK
ICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICByZXR1cm4gSlNDOjp0b0ludDMyKHRvTnVt
YmVyKGdsb2JhbE9iamVjdCkpOworCisgICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmpl
Y3QpOworICAgIHJldHVybiBKU0M6OnRvSW50MzIoZCk7CiB9CiAKIGlubGluZSB1aW50MzJfdCBK
U1ZhbHVlOjp0b1VJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAt
MzI5LDYgKzMzMCwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkg
Y29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1LmFzQml0cy5wYXls
b2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7Cit9CisKIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAg
ICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC01MjIsOCArNTI5LDIzIEBAIEFMV0FZU19J
TkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJldHVybiB1LnB0cjsK
IH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFwQmlnSW50KCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxKU0JpZ0ludCo+KHUucHRyKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKKyNp
ZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBp
bnQzMl90IHZhbHVlKQoreworICAgIHVpbnQ2NF90IHNoaWZ0ZWRWYWx1ZSA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKSA8PCAxNjsKKyAgICBBU1NF
UlQoIShzaGlmdGVkVmFsdWUgJiBOdW1iZXJUYWcpKTsKKyAgICB1LmFzSW50NjQgPSBzaGlmdGVk
VmFsdWUgfCBCaWdJbnQzMlRhZzsKK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIGlubGlu
ZSBpbnQ2NF90IHRyeUNvbnZlcnRUb0ludDUyKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgaWYgKG51
bWJlciAhPSBudW1iZXIpCkBAIC02MTAsOSArNjMyLDMxIEBAIGlubGluZSBib29sIEpTVmFsdWU6
OmlzU3RyaW5nKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCaWdJbnQoKSBjb25z
dAogewotICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKKyAgICBy
ZXR1cm4gaXNCaWdJbnQzMigpIHx8IGlzSGVhcEJpZ0ludCgpOwogfQogCitpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0NlbGwoKSAmJiBh
c0NlbGwoKS0+aXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQmln
SW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICByZXR1cm4gKHUuYXNJbnQ2
NCAmIEJpZ0ludDMyTWFzaykgPT0gQmlnSW50MzJUYWc7CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIGludDMyX3QgSlNWYWx1
ZTo6YmlnSW50MzJBc0ludDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNCaWdJbnQzMigpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odS5hc0ludDY0ID4+IDE2KTsKK30KKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3ltYm9sKCk7CkBA
IC02MjAsNyArNjY0LDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1ib2woKSBjb25zdAog
CiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1ByaW1pdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwoKS0+aXNTeW1ib2wo
KSB8fCBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gIWlzQ2VsbCgpIHx8IGFzQ2Vs
bCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFzQ2VsbCgpLT5pc0hl
YXBCaWdJbnQoKTsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBj
b25zdApAQCAtNzM4LDYgKzc4Miw5IEBAIGlubGluZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHRv
UHJlZmVycmVkUHJpbWl0aXZlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgdmFsdWUpCiB7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChpc0ludDMyKCkpIHsKICAgICAgICAgbnVtYmVyID0gYXNJbnQzMigp
OwogICAgICAgICB2YWx1ZSA9ICp0aGlzOwpAQCAtNzYwLDggKzgwNywxNSBAQCBpbmxpbmUgYm9v
bCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmxlJiBudQogICAgICAgICB2YWx1ZSA9ICp0aGlzOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAgIG51bWJlciA9IFBOYU47
CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgbnVtYmVyID0gUE5hTjsKKyAgICAg
ICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQVNT
RVJUKGlzQmlnSW50MzIoKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4i
X3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlzOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNzc1LDQ0ICs4MjksNDUgQEAgQUxXQVlTX0lOTElORSBkb3VibGUgSlNWYWx1
ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1
cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIFZh
cmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRv
TnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIGlmIChp
c0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYgKGlzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0JpZ0ludCgpKQotICAgICAg
ICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOwotCi0gICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJs
ZSgpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKwogICAgIEpTVmFsdWUg
cHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlmIChwcmltVmFsdWUu
aXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChwcmltVmFsdWUuaXNEb3Vi
bGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsK
KwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIGpzTnVtYmVy
KHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJfdD4g
SlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSW50MzIoKSkKLSAg
ICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUoKSAmJiBjYW5CZUludDMy
KGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3Vi
bGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludCgqdGhp
cyk7Ci0KICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpc0ludDMyKCkgfHwgaXNCaWdJ
bnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIGlmIChpc0RvdWJsZSgpICYmIGNhbkJl
SW50MzIoYXNEb3VibGUoKSkpCisgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90Pihhc0RvdWJsZSgpKSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRv
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpCi0gICAgICAg
IHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBwcmltVmFsdWUuaXNC
aWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGludDMyX3QgdmFsdWUg
PSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9CiAKIGlubGluZSBK
U09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKQEAgLTEwMzIsMzcgKzEwODcsMTcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6
OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAgIGlmICh2MS5pc051bWJlcigpICYm
IHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5h
c051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOwotICAgICAgICBi
b29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMyKQotICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9i
amVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgczIp
IHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGds
b2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKG4pOwotICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5pc051bWJlcigpKSB7CisgICAgICAg
ICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1i
ZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAgLy8gR3VhcmFudGVlaW5nIHRoYXQg
aWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBzb21lIG9mIHRoZSBjYXNlcyBiZWxv
dyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgU3RyaW5nIHYx
U3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgSlNCaWdJbnQq
IG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MVN0cmluZyk7Ci0g
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9vbGVhbnMsIEJpZ0ludDMyLCBPYmpl
Y3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9yZSB0eXBlcy4KKyAgICAgICAgLy8g
SXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwgYmVjYXVzZSBpdCBpcyBOT1QgdHJ1
ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09IHYyKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAg
ICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtMTA4MCw3ICsxMTE1LDcgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBpZiAodjEuaXNPYmplY3QoKSkgewog
ICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHYx
ID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEgPT0gdjIgaXMgYWxy
ZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIEpTVmFsdWUgcDEgPSB2MS50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBwMTsKQEAgLTExMDIsNTYgKzExMzcs
ODYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgYm9vbCBzeW0yID0gdjIuaXNT
eW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikgewogICAgICAgICAgICAgaWYgKHN5
bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4gYXNTeW1ib2wodjEpID09IGFzU3lt
Ym9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHYxID09IHYyIGlzIGFs
cmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsKKyAgICAgICAgYm9v
bCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChzMSkgeworICAgICAgICAgICAgaWYg
KHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmco
djEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOworICAgICAgICAgICAgc3Rk
Ojpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0byBlbnRl
ciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFyaWFudCBvZiBvbmx5IHYyIGJlaW5n
IGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAgICBpZiAoczEgfHwgczIpIHsKLSAg
ICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBkb3Vi
bGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGQxID09IGQyOwor
ICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgc3RyaW5nIGlzIHYyICh0
aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSkg
eworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+dmFsdWUo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQo
Z2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICghdjIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodjEgPT0gdjIpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3IgQmlnSW50MzIKKyAgICAgICAg
ICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBjb2RlIGZvciBjb21wYXJp
bmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRoZSBCaWdJbnQzMi9CaWdJbnQzMiBj
YXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYxLmlzQm9vbGVhbigpKTsKKyAgICAg
ICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
djEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9vbGVhbigpKSA9PSB2
Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQoKSkgewotICAg
ICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYxID0g
SlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdo
IHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKKyAgICAgICAgICAgIC8vIFdl
IGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRvIHJlcGFpciB0aGUgcnVsZSB0aGF0IG9ubHkgdjIg
aXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBpbiB0aGVzZSBjb21wYXJpc29ucworICAgICAgICAg
ICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFuKCkp
IHsKLSAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgIHJldHVy
biB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgIHYy
ID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051
bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQv
TnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJlcih2Mik7CiAKLSAgICAgICAgaWYgKHYyLmlz
QmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2
MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2
MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0ludDMyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpID09IHYyLmFzSW50MzIoKTsKKyAg
ICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMyQXNJbnQzMigpKSA9PSB2Mi5hc0RvdWJsZSgpOwor
ICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0Uo
QklHSU5UMzIpCisKKyAgICAgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAg
ICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNCaWdJbnQzMigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFz
SW50MzIoKSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgaWYgKHYyLmlz
TnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVh
bHNUb051bWJlcih2Mik7CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdjEgPT0gdjI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxlICh0cnVlKTsKIH0KIAogLy8gRUNNQSAx
MS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
CitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYyKQogewotICAgIEFT
U0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAodjEuYXNDZWxsKCkt
PmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCisgICAgaWYgKHYxLT5pc1N0
cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5l
cXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7Ci0gICAgaWYgKHYxLmlzQmlnSW50KCkg
JiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJ
bnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2MS0+aXNIZWFwQmlnSW50KCkgJiYgdjIt
PmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhzdGF0aWNf
Y2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MikpOwogICAgIHJl
dHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE2MywxMCArMTIyOCwxNyBAQCBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCiAgICAg
ICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAKLSAgICBpZiAoIXYx
LmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHYxID09IHYyOworI2lm
IFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQz
MigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFsc1RvSW50MzIodjIu
YmlnSW50MzJBc0ludDMyKCkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNIZWFw
QmlnSW50KCkpCisgICAgICAgIHJldHVybiB2Mi5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQz
Mih2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MS5pc0NlbGwoKSAm
JiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9yQ2VsbHMoZ2xvYmFs
T2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOwogCi0gICAgcmV0dXJuIHN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAgIHJldHVybiB2MSA9
PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMo
KSBjb25zdApAQCAtMTE4NCwxNSArMTI1NiwyMyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6
cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxLmFzTnVt
YmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5p
c0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKLSAgICAKLSAgICBp
ZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpIHsK
LSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdl
dFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3Ry
aW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGlmICghdjFTdHJpbmcgfHwgIXYy
U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci0gICAgICAgIHJldHVy
biB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2
Mi5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNI
ZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5hc0hlYXBCaWdJbnQoKS0+
ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlmCisKKyAgICBpZiAo
djEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpIHsKKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5p
c1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBjb25z
dCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0VmFsdWVJbXBsKCk7
CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFzU3RyaW5nKHYyKS0+
dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBpZiAoIXYxU3RyaW5nIHx8ICF2MlN0cmlu
ZykKKyAgICAgICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJl
dHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5hc0NlbGwo
KS0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gdHJpU3RhdGUoSlNCaWdJbnQ6
OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpKTsKICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKQEAgLTEyMDYsNiArMTI4NiwxMCBA
QCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CiAgICAgICAg
IHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDog
RmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0NlbGwoKSkKICAgICAg
ICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFuKCk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBiaWdJbnQzMkFzSW50MzIoKSA/
IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVl
KCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxMzkwYzc2MTlhYy4uMDY1OTc5ZTgzNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTEzLDcgKzExMyw3
IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChjZWxsLT5p
c1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJbnQoKSkKKyAgICBp
ZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJp
Z0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1ByaW1pdGl2ZShnbG9i
YWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTEyMyw3ICsxMjMsNyBA
QCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJv
bCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBj
ZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZt
LCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBK
U1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBl
KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHByZWZlcnJlZFR5cGUp
OwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvUHJpbWl0aXZlKGds
b2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlw
ZSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBKU0NlbGw6OmdldFByaW1pdGl2ZU51bWJl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlMKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPmdldFByaW1pdGl2
ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlmIChpc1N5bWJvbCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4odGhpcyktPmdldFBy
aW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwotICAgIGlmIChpc0Jp
Z0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmpl
Y3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVj
dCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBudW1iZXIsIHZhbHVl
KTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAo
aXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRo
aXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlm
IChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmln
SW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiB9CkBA
IC0xOTYsNyArMTk2LDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAg
ICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3Ry
aW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGlzQmlnSW50KCkp
CisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQo
aXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMp
LT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAppbmRleCAyYmVmNGE3ZDhlYy4uMDZlZDRlNzA5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogcHVibGlj
OgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsK
LSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBCaWdJbnQoKSBjb25z
dDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0
OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAxYzlkMTMyNDhhOS4uODc5OGM1YTk3
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
QEAgLTIwNCw5ICsyMDQsOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGluZSBib29sIEpTQ2Vs
bDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hlYXBCaWdJbnQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKKyAgICByZXR1cm4gbV90
eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9s
KCkgY29uc3QKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVh
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIChpc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+
dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9C
b29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPm1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTM0OSw3ICszNDksNyBA
QCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAg
ICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xlYW4oKSA/IFRydWVU
cmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCBjNDBhNTZhZDExNy4uMjNmNWViYzNmN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTA2Nyw2ICsx
MDY3LDcgQEAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW8KIHsKICAgICBWTSYgdm0gPSBnZXRWTShn
bG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwogICAgIGlmIChpbml0aWFsTGVuZ3RoID49IE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpCiAgICAgICAgIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoQXJyYXlTdG9yYWdlLCBuZXdUYXJnZXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMjJjMDEyMDVjMmYuLjdl
OGIyNjBhZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAg
LTEwMzgsNiArMTAzOCwxMCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0b0Jvb2xlYW4oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGFzRG91YmxlKCkg
PiAwLjAgfHwgYXNEb3VibGUoKSA8IDAuMDsgLy8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0Nl
bGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAgcmV0dXJu
ICEhYmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKICAgICByZXR1cm4gaXNUcnVlKCk7IC8vIGZh
bHNlLCBudWxsLCBhbmQgdW5kZWZpbmVkIGFsbCBjb252ZXJ0IHRvIGZhbHNlLgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCA2YjNkYzk2N2M0Mi4uNzY3
YjU2ZTY0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcApAQCAt
NDMsNyArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpK
U1R5cGUgdHlwZSkKICAgICBDQVNFKENlbGxUeXBlKQogICAgIENBU0UoU3RyaW5nVHlwZSkKICAg
ICBDQVNFKFN5bWJvbFR5cGUpCi0gICAgQ0FTRShCaWdJbnRUeXBlKQorICAgIENBU0UoSGVhcEJp
Z0ludFR5cGUpCiAgICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQogICAgIENBU0UoQVBJ
VmFsdWVXcmFwcGVyVHlwZSkKICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBiN2FhYzI1NjJjZS4uYjJlMTYyOWRl
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC0yNiw4ICsyNiw4
IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gVGhlIENlbGxUeXBlIHZhbHVlIG11
c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxsLgogICAgIENlbGxUeXBl
LAogICAgIFN0cmluZ1R5cGUsCi0gICAgQmlnSW50VHlwZSwKLSAgICBMYXN0TWF5YmVGYWxzeUNl
bGxQcmltaXRpdmUgPSBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRUeXBlLAorICAgIExhc3RN
YXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLAogICAgIFN5bWJvbFR5cGUs
CiAKICAgICBHZXR0ZXJTZXR0ZXJUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlSW5mby5oCmluZGV4IDNjZDcxM2Q4NGYzLi44OGUzMGYyMDlkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApAQCAtMTM0LDcgKzEzNCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNT
RVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICBib29s
IGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8
PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKLSAgICB1aW50OF90IG1f
dHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOwogICAgIHVpbnQ4X3QgbV9mbGFnczsKICAgICB1aW50
MTZfdCBtX2ZsYWdzMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCmluZGV4IGM0ZWJiZWM1MDM1
Li4yN2EyMjFjMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKQEAgLTI2LDkgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
LmgiCiAKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
aW5kZXggNDkwNWQ1YmFmMDcuLmQzNjdlN2Q1YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiwxMSArMzYsNiBAQCBib29sIEpTVmFsdWU6OmVxdWFs
U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MgogICAgIHJldHVybiBlcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgdjEsIHYy
KTsKIH0KIAotYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0gICAgcmV0dXJuIHN0
cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwotfQotCiBORVZF
Ul9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7CiAgICAgLy8gZXhjZXB0aW9uIGZvciB0aGUg
RGF0ZSBleGNlcHRpb24gaW4gZGVmYXVsdFZhbHVlKCkKQEAgLTczLDIxICs2OCwyMyBAQCBORVZF
Ul9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVgogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpz
U3RyaW5nKGdsb2JhbE9iamVjdCwgcDFTdHJpbmcsIGFzU3RyaW5nKHAyKSkpOwogICAgIH0KIAot
ICAgIGF1dG8gbGVmdE51bWVyaWMgPSBwMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0g
cDIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVm
dE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVy
aWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlk
IG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgKyBXVEY6
OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91
YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQg
KyByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQs
IGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAg
Q2hlY2tlZEludDMyIHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCArPSByaWdodDsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJ
bnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShs
ZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50
OjphZGQsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcykpOwogfQogCiBKU1ZhbHVlIGpzVHlwZVN0cmluZ0Zv
clZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQpA
QCAtMTI4LDcgKzEyNSw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsK
IAogICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAgIGlmICh0eXBlID09
IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0gQmlnSW50VHlwZSkK
KyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9sVHlwZSB8fCB0eXBl
ID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUg
Pj0gT2JqZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSh2bSkt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA0YmJlMjNjMDcyNS4uMTc3ZWRhMGU5OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw3ICsyNSw2
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQmlnSW50Lmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjM5LDYgKzIzOCwzNSBAQCBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZQogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZUJpZ0ludFRvT3RoZXJQ
cmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHYxLCBKU1Zh
bHVlIHByaW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQVNTRVJUKHByaW1W
YWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5pc0JpZ0ludCgpKTsK
KworICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBKU1ZhbHVlIGJpZ0lu
dFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmco
cHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAg
ICAgICBpZiAoIWJpZ0ludFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgaWYgKGJpZ0ludFZhbHVlLmlzSGVh
cEJpZ0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlKHYxLCBiaWdJ
bnRWYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CisKKyAgICAgICAgQVNTRVJUKGJpZ0ludFZhbHVlLmlz
QmlnSW50MzIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAvLyBGSVhNRTogdXNlIHNv
bWV0aGluZyBsZXNzIGhhY2t5LCBlLmcuIHNvbWUga2luZCBvZiBKU0JpZ0ludDo6Y29tcGFyZVRv
SW50MzIKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIHN0YXRp
Y19jYXN0PGRvdWJsZT4oYmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMyKCkpKTsKKyNlbmRpZgor
ICAgIH0KKworICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21w
YXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0JpZ0ludDo6Y29tcGFyZVRv
RG91YmxlKHYxLCBudW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRD
b21wYXJlUmVzdWx0KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBhcmlzb25SZXN1bHQs
IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkKIHsKICAgICBpZiAoY29t
cGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKQEAgLTI1
NSw1MCArMjgzLDQ3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21wYXJlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCi0gICAg
ICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50
KHYxKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAotICAgIGlmICh2MS5p
c0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7Ci0gICAgICAgIGlm
IChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZh
bHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJp
bVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIGJpZ0ludENv
bXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBiaWdJbnRWYWx1ZSks
IGNvbXBhcmlzb25Nb2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmltVmFsdWUuaXNC
aWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50
Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVlKSksIGNvbXBhcmlzb25N
b2RlKTsKLQotICAgICAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZVRv
RG91YmxlKGFzQmlnSW50KHYxKSwgbnVtYmVyVmFsdWUpLCBjb21wYXJpc29uTW9kZSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1v
ZGU6Okxlc3NUaGFuKQorICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpIDwg
djIuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIEFTU0VSVChjb21wYXJpc29uTW9kZSA9PSBK
U0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuT3JFcXVhbCk7CisgICAgICAgIHJldHVy
biB2MS5iaWdJbnQzMkFzSW50MzIoKSA8PSB2Mi5iaWdJbnQzMkFzSW50MzIoKTsKICAgICB9Ci0g
ICAgCi0gICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB2MTsKLSAgICBpZiAocHJpbVZhbHVlLmlzU3Ry
aW5nKCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmlu
Z1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFs
T2JqZWN0KSk7CisjZW5kaWYKKworICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJbnQgPSBudWxscHRy
OworICAgIEpTQmlnSW50KiB2MkhlYXBCaWdJbnQgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBo
YXZlIHNvbWUgZmFzdC1pc2ggcGF0aCBmb3IgYSBjb21wYXJpc29uIGJldHdlZW4gYSBzbWFsbCBh
bmQgYSBsYXJnZSBiaWctaW50CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICB2
MUhlYXBCaWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAg
ZWxzZSBpZiAodjEuaXNCaWdJbnQzMigpKQorICAgICAgICB2MUhlYXBCaWdJbnQgPSBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgdjEuYmlnSW50MzJBc0ludDMyKCkpOworI2VuZGlmCisKKyAgICBp
ZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHYySGVhcEJpZ0ludCA9IHYyLmFzSGVhcEJp
Z0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHYySGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCB2Mi5iaWdJ
bnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MUhlYXBCaWdJbnQgJiYgdjJIZWFw
QmlnSW50KQorICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29t
cGFyZSh2MUhlYXBCaWdJbnQsIHYySGVhcEJpZ0ludCksIGNvbXBhcmlzb25Nb2RlKTsKKworICAg
IGlmICh2MUhlYXBCaWdJbnQpIHsKKyAgICAgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29t
cGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MUhlYXBCaWdJbnQsIHYy
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBp
ZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJl
dHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGJpZ0ludFZhbHVlLCBh
c0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7CisgICAgICAgIHJldHVybiBiaWdJbnRDb21w
YXJlUmVzdWx0KGNvbXBhcmlzb25SZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsKICAgICB9Ci0gICAg
Ci0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYmlnSW50Q29t
cGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludChwcmltVmFsdWUpLCBhc0JpZ0lu
dCh2MikpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgZG91YmxlIG51bWJlclZhbHVlID0g
cHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogCisgICAgYXV0byBjb21wYXJpc29uUmVzdWx0ID0gY29tcGFyZUJp
Z0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJbnQsIHYxKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgLy8gSGVyZSB3ZSBjaGVj
ayBpbnZlcnRlZCBiZWNhdXNlIEJpZ0ludCBpcyB0aGUgdjIKLSAgICBKU0JpZ0ludDo6Q29tcGFy
aXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0ID0gSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShh
c0JpZ0ludCh2MiksIG51bWJlclZhbHVlKTsKICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNC
aWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKICAgICAgICAgcmV0dXJuIGNvbXBhcmlz
b25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOwotCiAg
ICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6
OkdyZWF0ZXJUaGFuIHx8IGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25S
ZXN1bHQ6OkVxdWFsOwogfQogCkBAIC0zNTcsNyArMzgyLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IGpzTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAg
ICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBpZiAod2FzTm90U3Ry
aW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAy
LmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0lu
dENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6
TGVzc1RoYW4pKTsKIApAQCAtNDA3LDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xl
c3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAotICAgIGlm
ICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlmICh3YXNOb3RTdHJpbmcx
IHx8IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNC
aWdJbnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29t
cGFyZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNz
VGhhbk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzcsMzQ5IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsK
IH0KIAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQzMk9wIGV4cGVjdHMgaXRz
IG9wZXJhbmRzIHVuYm94ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQgdW5ib3hlZCBhcyB3ZWxs
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBEb3VibGVP
cGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXJp
dGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50T3AsIERvdWJsZU9w
ZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwgY29uc3QgY2hhciog
ZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9OdW1lcmljKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUg
cmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwor
ICAgIGlmIChsZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJpYy5pc051bWJlcigp
KQorICAgICAgICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVyaWMuYXNOdW1iZXIo
KSwgcmlnaHROdW1lcmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVyaWMu
aXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiaWdJbnQz
Mk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVyaWMuYmlnSW50MzJB
c0ludDMyKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBK
U0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNCaWdJbnQqIHJpZ2h0SGVh
cEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmlnSW50MzJB
c0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmln
SW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAg
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlv
bi4iX3MpOworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAg
ICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2
bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0lu
dCwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIGlmIChyaWdodE51bWVy
aWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChn
bG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodEhlYXBCaWdJbnQp
KTsKKyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpCisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9iYWxPYmpl
Y3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFwQmlnSW50
KCkpKTsKICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShiaWdJbnQzMk9wKTsKKyAgICBp
ZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzSGVhcEJpZ0lu
dCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRPcChnbG9i
YWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMuYXNIZWFw
QmlnSW50KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICByZXR1cm4ganNOdW1iZXIoV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJp
YykpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtd
IChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4g
bGVmdCAtIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3Qg
bGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBDaGVja2VkSW50MzIgcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVzdWx0IC09IHJpZ2h0
OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpK
U0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BB
UkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJldHVybiBhcml0
aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50OjpzdWIsIGRvdWJs
ZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGlu
IHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91Ymxl
IHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50
MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lm
IFVTRShCSUdJTlQzMikKKyAgICAgICAgQ2hlY2tlZEludDMyIHJlc3VsdCA9IGxlZnQ7CisgICAg
ICAgIHJlc3VsdCAqPSByaWdodDsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShK
U1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAgIHJl
dHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50Ojpt
dWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OworICAgIH07
CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkg
LT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAoIXJpZ2h0KQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1
ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJB
TShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICByZXR1cm4gYXJpdGht
ZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6ZGl2aWRlLCBkb3Vi
bGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNSZW1haW5kZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKK3sK
KyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRv
dWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7CisgICAgfTsKKyAgICBh
dXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNWYWx1ZSB7CisgICAg
ICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4KKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChn
bG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91YmxlT3AsIGJpZ0lu
dDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gcmVtYWluZGVy
LiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gZG91Ymxl
T3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07CisgICAgYXV0byBi
aWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUgeworICAgICAgICAv
LyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0IHNsb3cgaW4gdGhl
IGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAgICAgICAvLyBTbyBk
b24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9uIGluIHRoYXQgY2Fz
ZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRo
bWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmV4cG9uZW50aWF0
ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYudG9OdW1lcmljKGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIo
b3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50NjRfdCBuZXdW
YWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJpZ0ludDMyQXNJbnQz
MigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5leHQgZmV3IGxpbmVz
IG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAg
ICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1Zh
bHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1ZSkpOworICAgIH0K
KyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJpZ0ludCgpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xvYmFsT2JqZWN0LCBv
cGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc051bWJl
cihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQ2NF90IG5l
d1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMuYmlnSW50MzJBc0lu
dDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgbmV4dCBmZXcgbGlu
ZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgor
ICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpT
VmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1ZhbHVlKSk7CisgICAg
fQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFwQmlnSW50KCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRlYyhnbG9iYWxPYmplY3Qs
IG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0gdi50
b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVtZXJpYy5iaWdJbnQz
MkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVtZXJpYy5pc0hlYXBC
aWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0JpZ0ludDo6Yml0d2lz
ZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBzaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBib29sIGlzTGVmdCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51bWVyaWMgPSB2MS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGxlZnROdW1lcmljID0gdjEudG9CaWdJ
bnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByaWdodE51bWVyaWMgPSB2Mi50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmln
SW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51
bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOworICAgIGlmIChsZWZ0
TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkgeworICAgICAgICBp
bnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAgICAgICAgaW50MzJf
dCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOworICAgICAgICBpbnQz
Ml90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQzMikgOiAobGVmdElu
dDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKKyAg
ICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmljLmlzQmlnSW50MzIo
KSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgbGVmdElu
dDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGludDMyX3Qgcmln
aHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgaWYgKHJp
Z2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0OworICAgICAgICAg
ICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQgcmVxdWlyZWQgYmVj
YXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEgc2hpZnQgd2hlcmUg
dGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgYml0LXdpZHRoIG9m
IHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+IHN0ZDo6bWluKHJp
Z2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBsZWZ0IHNoaWZ0
IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0aW5nIEhlYXBCaWdJ
bnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gZG8gc29tZXRo
aW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQgZGV0ZWN0aW5nIHNv
bWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAgICAgIEpTQmlnSW50
KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHRJbnQzMik7
CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmln
aHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJ
bnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRI
ZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0TnVtZXJpYy5pc0Jp
Z0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAgICBhdXRvIGVycm9y
TWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90
aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKyAg
ICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBjYXNlIGZvciBsZWZ0IGlzIEhl
YXBCaWdJbnQgYW5kIHJpZ2h0IGlzIEJpZ0ludDMyLCBpdCBzZWVtcyBmYWlybHkgbGlrZWx5IHRv
IG9jY3VyIGZyZXF1ZW50bHkuCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpTQmlnSW50KiBsZWZ0
SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVG
cm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmlj
LmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVyaWMuYmln
SW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpOworI2Vsc2UKKyAg
ICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsK
KyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0lu
dCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0Jp
Z0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdo
dEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTFNoaWZ0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAg
Ym9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxPYmplY3QsIHYxLCB2
MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91Ymxl
PihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFsdWUgKiByaWdodFZh
bHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJvb2wgaXNMZWZ0ID0g
ZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYyLCBpc0xlZnQpOwog
fQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0ZTx0eXBlbmFtZSBI
ZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJ
bnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKIHsKLSAg
ICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9IHYxLnRvQmlnSW50
T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGxl
ZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCksIHJpZ2h0TnVtZXJp
Yy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMu
aXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51bWVyaWMuYmlnSW50
MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIC8vIEZJ
WE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQsIGFuZCBmb3IgSGVh
cEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVzZSBjb3VsZCBiZSBt
YWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBzbWFsbCBiaWctaW50
IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8gQnV0IGl0IGlzIHF1
aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2UgYSBzaWduIGJpdCB3
aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCisjZW5kaWYK
KworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHROdW1lcmljLmlzQmln
SW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKU0JpZ0ludCogbGVm
dEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRl
RnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVmdE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJp
Yy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmlnaHROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyNlbHNlCisg
ICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNIZWFwQmlnSW50KCk7
CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJ
bnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRPcChn
bG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKIH0KIAotI2Rl
ZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJhZGJlZWYwKQorQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50MzJPcCA9IFtdIChp
bnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAgICAgICByZXR1cm4g
bGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVudGx5LCBmb3IgcGFp
cnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBhbmQgcmUtYm94IHRo
ZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpTVmFsdWUuCisgICAg
cmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OmJp
dHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5lIGJvb2wgaXNTY3Jp
YmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lz
ZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
CiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNWYWx1ZTo6ZW5jb2Rl
KGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAgYXV0byBpbnQzMk9w
ID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7CisgICAgICAg
IHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBjdXJyZW50bHks
IGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhlICJvciIgYW5kIHJl
LWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVl
LgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmln
SW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVy
IHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1pbmxpbmUgdm9pZCBz
Y3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRv
IGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAgICAgc3RhdGljX2Nh
c3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nh
c3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKKyAgICAgICAgcmV0
dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1cnJlbnRseSwgZm9y
IHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhvciIgYW5kIHJlLWJv
eCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRoZSBKU1ZhbHVlLCBh
bmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhlIGVuZCB0byByZXN0
b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEs
IHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0lu
dCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4iX3MpOwogfQogCiBB
TFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJK
U0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxp
bmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJuIEFTU0VSVF9FTkFCTEVE
IHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNkZWZpbmUgU0NSSUJCTEVf
V09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKworaW5saW5lIGJvb2wgaXNT
Y3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJC
TEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qg
c2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVkIHZhbHVlIHRvIGVu
c3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAgICAgc3RhdGljX2Nhc3Q8
RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8
SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDVmYTcwMTNjYjdm
Li5mMTZjMDJhNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaApAQCAtMjc5LDcgKzI3OSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZSkK
ICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7CiAgICAgCi0g
ICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50VHlwZSkKKyAgICBp
ZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKICAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAKICAgICBBU1NFUlQo
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBhZWMyZmVmYWM5Yi4uNWMwZWUyNjEzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAgIHNlbnRpbmVsTWFwQnVj
a2V0KCk7CiAgICAgICAgIHNlbnRpbmVsU2V0QnVja2V0KCk7CiAgICAgfQotICAgIGJpZ0ludENv
bnN0YW50T25lLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20oKnRoaXMsIDEpKTsKKyAg
ICBoZWFwQmlnSW50Q29uc3RhbnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6Y3JlYXRlRnJvbSgq
dGhpcywgMSkpOwogCiAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVudEF0b21TdHJpbmdU
YWJsZShleGlzdGluZ0VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IGI0MWRjZTdkYzllLi4xMjg2MmE0MGNlMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC03MjYsNyArNzI2LDcgQEAgcHVibGljOgogICAgIEF0b21T
dHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9tU3RyaW5n
VGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0
dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAotICAgIFN0cm9uZzxKU0JpZ0ludD4gYmlnSW50Q29u
c3RhbnRPbmU7CisgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29uc3RhbnRPbmU7CiAK
ICAgICBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGIwNmJlYzI5Y2QuLjJjMDA5YjZjZmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yMjA1
LDcgKzIyMDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNhbGxXaXRoU3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIHVpbnQ4X3QqIHZtU3Rh
Y2tFbmQgPSB2bVN0YWNrU3RhcnQgLSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2U7CiAg
ICAgcHRyZGlmZl90IHNpemVEaWZmID0gdm1TdGFja0VuZCAtIGVuZDsKICAgICBSRUxFQVNFX0FT
U0VSVChzaXplRGlmZiA+PSAwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplRGlmZiA8IFVJTlRf
TUFYKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZURpZmYp
IDwgVUlOVF9NQVgpOwogCiAgICAgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tVc2FnZSgpID0g
b3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlICsgc2l6ZURpZmY7CiAgICAgaGVscGVyLnVw
ZGF0ZVZNU3RhY2tMaW1pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzBiYjViMjllM2IuLmVmZGNhZjViYWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTA2ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGlu
IEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMyIikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lOVDMyKSBmbGFnLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDQtMTcgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQg
aXMgYnJva2VuIG9uIGFybTY0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1V
c2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggMzY5NjQ3ZThiOWEuLjVk
MzgxOTQxNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTEzOSw2ICsxMzksMTAgQEAKICNlbmRp
ZgogI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZB
TFVFMzJfNjQpICovCiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2RlZmluZSBVU0VfQklHSU5UMzIg
MAorI2VuZGlmCisKIC8qIEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJlIG1vcmUgc3BlY2lmaWMg
aWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwogLyogVXNlIF9fYnVpbHRp
bl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBDYWxsRnJhbWUqICovCiAjaWYgQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMKaW5kZXggYzRlMDhmMGZmNGYuLmIwNTc5OTNjOTdmIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTcwMiw2ICs3MDIsMTQgQEAgZGVmIHJ1bkJpZ0ludEVu
YWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImJpZy1pbnQtZW5h
YmxlZCIsICItLXVzZUJpZ0ludD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RT
cGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5CaWdJbnRFbmFibGVkTm9KSVQoKm9wdGlv
bmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJpZy1pbnQtZW5hYmxlZC1ub2ppdCIs
ICItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlSklUPWZhbHNlIiwgKm9wdGlvbmFsVGVzdFNwZWNp
ZmljT3B0aW9ucykKK2VuZAorCitkZWYgcnVuQmlnSW50RW5hYmxlZEJhc2VsaW5lKCpvcHRpb25h
bFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtYmFzZWxpbmUi
LCAiLS11c2VCaWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD0wIiwgKm9wdGlvbmFsVGVzdFNwZWNp
ZmljT3B0aW9ucykKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5P
X0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQK
</data>
<flag name="commit-queue"
          id="412301"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396882</attachid>
            <date>2020-04-18 18:33:16 -0700</date>
            <delta_ts>2020-04-18 19:21:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patchBigInt32</filename>
            <type>text/plain</type>
            <size>411443</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MmU5ZjcyYzQxODMuLmRlMWM0Y2Q1ODQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBp
bmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0lu
dDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSSBp
bXByb3ZlZCBzZXZlcmFsIG9mIHRoZSB0ZXN0cyB0byBnaXZlIG1vcmUgaW5mb3JtYXRpdmUgZXJy
b3IgbWVzc2FnZXMgaW4gdGhlIHByb2Nlc3Mgb2YgZml4aW5nIHRoZW0uCisKKyAgICAgICAgTW9y
ZSBpbnRlcmVzdGluZ2x5IEkgaGFkIHRvIG1vZGlmeSAibWlzc2luZy1leGNlcHRpb24tY2hlY2st
aW4tc3RyaW5nLWNvbXBhcmUiIGJlY2F1c2UgaXQgcmVsaWVkIG9uICJzMSA9PSBzMSIgcmVzb2x2
aW5nIHJvcGVzLCBhbmQgd2Ugbm93IGp1c3QgcmV0dXJuIHRydWUuCisKKyAgICAgICAgKiBzdHJl
c3MvYmlnLWludC1kaXZpc2lvbi5qczoKKyAgICAgICAgKHRlc3REaXYpOgorICAgICAgICAqIHN0
cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qczoKKyAgICAgICAgKGFzc2Vy
dC5zYW1lVmFsdWUpOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90LmpzOgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzOgor
ICAgICAgICAqIHN0cmVzcy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanM6CisgICAgICAg
ICh0ZXN0UmlnaHRTaGlmdCk6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92
ZW4tdHlwZS5qczoKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICogc3RyZXNzL2NvbXBhcmUt
c3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanM6CisgICAgICAgICh0ZXN0QWxsVHlwZXNDYWxs
KToKKyAgICAgICAgKiBzdHJlc3MvZnRsLXN0cmluZy1zdHJpY3QtZXF1YWxpdHkuanM6CisgICAg
ICAgICogc3RyZXNzL21pc3NpbmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpz
OgorCiAyMDIwLTA0LTE4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZGVzaWduIGhvdyB3ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZvciBKU0FycmF5
cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1kaXZpc2lvbi5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKaW5kZXggNDAxODkwYWQ2MzEuLjNlNTEwYjlk
ODk3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWRpdmlzaW9uLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZGl2aXNpb24uanMKQEAgLTEsNCArMSw1IEBACiAvL0Ag
cnVuQmlnSW50RW5hYmxlZAorLy9AIHJ1bkJpZ0ludEVuYWJsZWROb0pJVAogCiAvLyBDb3B5cmln
aHQgKEMpIDIwMTcgUm9iaW4gVGVtcGxldG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVGhp
cyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0QgbGljZW5zZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgpAQCAtMTQsNyArMTUsNyBAQCBhc3NlcnQuc2FtZVZhbHVlID0gZnVuY3Rpb24gKGlu
cHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewogfQogCiBmdW5jdGlvbiB0ZXN0RGl2KHgsIHksIHop
IHsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKHggLyB5LCB6LCB4ICsgIiAvICIgKyB5ICsgIiA9ICIg
KyB6KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHggLyB5LCB6LCB4ICsgIiAvICIgKyB5ICsgIiA9
ICIgKyAoeC95KSArICIgYnV0IHNob3VsZCBiZSAiICsgeik7CiB9CiAKIHRlc3REaXYoMHhGRURD
QkE5ODc2NTQzMjEwbiwgMHhGRURDQkE5ODc2NTQzMjEwbiwgMHgxbik7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9iaWctaW50LWxlZnQtc2hpZnQtd3JhcHBlZC12YWx1ZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbGVmdC1zaGlmdC13cmFwcGVkLXZhbHVlLmpzCmluZGV4IGM2OWRi
ZGEzM2QzLi5mODEyYjFjYmE0MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
ZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1s
ZWZ0LXNoaWZ0LXdyYXBwZWQtdmFsdWUuanMKQEAgLTMsNyArMyw3IEBACiBhc3NlcnQgPSB7CiAg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiAgICAg
ICAgIGlmIChpbnB1dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
bWVzc2FnZSk7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSArICIgaW5wdXQ6
ICIgKyBpbnB1dCArICIgIT0gZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CiAgICAgfQogfTsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1sb2dpY2FsLW5vdC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMKaW5kZXggYWYyOGE3MmIxYzMuLmQwMmU1
NTJmOWM3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWxvZ2ljYWwtbm90Lmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtbG9naWNhbC1ub3QuanMKQEAgLTEsOCArMSw4
IEBACiAvL0AgcnVuQmlnSW50RW5hYmxlZAogCi1mdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworZnVu
Y3Rpb24gYXNzZXJ0KGEsIGUsIG4pIHsKICAgICBpZiAoYSAhPT0gZSkgewotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkJhZCEiKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgbG9naWNh
bCBuZWdhdGlvbiBmb3IgIiArIG4pOwogICAgIH0KIH0KIApAQCAtMTIsOSArMTIsOSBAQCBmdW5j
dGlvbiBsb2dpY2FsTm90KGEpIHsKIG5vSW5saW5lKGxvZ2ljYWxOb3QpOwogCiBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoMTBuKSwgZmFs
c2UpOwotICAgIGFzc2VydChsb2dpY2FsTm90KDFuKSwgZmFsc2UpOwotICAgIGFzc2VydChsb2dp
Y2FsTm90KDBuKSwgdHJ1ZSk7Ci0gICAgYXNzZXJ0KGxvZ2ljYWxOb3QoLTFuKSwgZmFsc2UpOwor
ICAgIGFzc2VydChsb2dpY2FsTm90KDEwbiksIGZhbHNlLCAxMG4pOworICAgIGFzc2VydChsb2dp
Y2FsTm90KDFuKSwgZmFsc2UsIDFuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgwbiksIHRydWUs
IDBuKTsKKyAgICBhc3NlcnQobG9naWNhbE5vdCgtMW4pLCBmYWxzZSwgLTFuKTsKIH0KIApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzIGIvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1tb2Qtaml0LmpzCmluZGV4IDgxYzVkYTdjNWJjLi44NTk1NDBjODUzMSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1tb2Qtaml0LmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtbW9kLWppdC5qcwpAQCAtMjUsOSArMjUsOSBAQCBub0lubGluZShiaWdJ
bnRNb2RGb2xkaW5nKTsKIAogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAg
bGV0IHIgPSBiaWdJbnRNb2RGb2xkaW5nKDEwLCAzMCk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShy
LCAtMTAsICItKCIgKyAxMCArICIgJSAiICsgMzAgKyAiKSA9ICIgKyByKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKHIsIC0xMCwgIltOdW1iZXJdIC0oIiArIDEwICsgIiAlICIgKyAzMCArICIpID0g
IiArIHIpOwogfQogCiBsZXQgciA9IGJpZ0ludE1vZEZvbGRpbmcoMTBuLCAzMG4pOwotYXNzZXJ0
LnNhbWVWYWx1ZShyLCAtMTBuLCAiLSgiICsgMTBuICsgIiAlICIgKyAzMG4gKyAiKSA9ICIgKyBy
KTsKK2Fzc2VydC5zYW1lVmFsdWUociwgLTEwbiwgIltCaWdJbnRdIC0oIiArIDEwbiArICIgJSAi
ICsgMzBuICsgIikgPSAiICsgcik7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtbXVsdGlwbGljYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LW11bHRpcGxpY2F0
aW9uLmpzCmluZGV4IDNlY2Q2MzZkN2Y4Li43Y2U1YWNmZmNmYiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1tdWx0aXBsaWNhdGlvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9i
aWctaW50LW11bHRpcGxpY2F0aW9uLmpzCkBAIC0xLDE4ICsxLDE4IEBACiAvL0AgcnVuQmlnSW50
RW5hYmxlZAorLy9AIHJ1bkJpZ0ludEVuYWJsZWROb0pJVAogCiAvLyBDb3B5cmlnaHQgKEMpIDIw
MTcgUm9iaW4gVGVtcGxldG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVGhpcyBjb2RlIGlz
IGdvdmVybmVkIGJ5IHRoZSBCU0QgbGljZW5zZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ci1hc3NlcnQgPSB7Ci0gICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBt
ZXNzYWdlKSB7Ci0gICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG1lc3NhZ2UpOwotICAgIH0KLX07CitmdW5jdGlvbiB0ZXN0T25lTXVsKHgsIHksIHop
IHsKKyAgICBsZXQgcmVzdWx0ID0geCAqIHk7CisgICAgaWYgKHJlc3VsdCAhPT0geikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJDb21wdXRpbmcgIiArIHggKyAiICogIiArIHkgKyAiIHJlc3Vs
dGVkIGluICIgKyByZXN1bHQgKyAiIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICIgKyB6KTsKK30K
IAogZnVuY3Rpb24gdGVzdE11bCh4LCB5LCB6KSB7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZSh4ICog
eSwgeiwgeCArICIgKiAiICsgeSArICIgPSAiICsgeik7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZSh5
ICogeCwgeiwgeSArICIgKiAiICsgeCArICIgPSAiICsgeik7CisgICAgdGVzdE9uZU11bCh4LCB5
LCB6KTsKKyAgICB0ZXN0T25lTXVsKHksIHgsIHopOwogfQogCiB0ZXN0TXVsKDB4RkVEQ0JBOTg3
NjU0MzIxMG4sIDB4RkVEQ0JBOTg3NjU0MzIxMG4sIDB4RkRCQUMwOTdDOERDNUFDQ0RFRUM2Q0Q3
QTQ0QTQxMDBuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hp
ZnQtZ2VuZXJhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2VuZXJh
bC5qcwppbmRleCA0ZTU4Y2E2MDc0MC4uZDAyYWFjYjUxZGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtcmlnaHQtc2hpZnQtZ2VuZXJhbC5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LXJpZ2h0LXNoaWZ0LWdlbmVyYWwuanMKQEAgLTEsMTA0ICsxLDYzIEBACiAvL0Ag
cnVuQmlnSW50RW5hYmxlZAogCiAvLyBDb3B5cmlnaHQgKEMpIDIwMTcgSm9zaCBXb2xmZS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZS4gQWxsIHJpZ2h0
cyByZXNlcnZlZAogLy8gVGhpcyBjb2RlIGlzIGdvdmVybmVkIGJ5IHRoZSBCU0QgbGljZW5zZSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCi1mdW5jdGlvbiBhc3NlcnQoYSkgewotICAgIGlm
ICghYSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7CitmdW5jdGlv
biB0ZXN0UmlnaHRTaGlmdChsZWZ0LCByaWdodCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIHJlc3Vs
dCA9IGxlZnQgPj4gcmlnaHQ7CisgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiIiArIGxlZnQgKyAiLCAiICsgcmlnaHQgKyAiIHJlc3VsdGVkIGlu
ICIgKyByZXN1bHQgKyAiIGJ1dCBleHBlY3RlZCAiICsgZXhwZWN0ZWQpOwogfQogCi1hc3NlcnQu
c2FtZVZhbHVlID0gZnVuY3Rpb24gKGlucHV0LCBleHBlY3RlZCwgbWVzc2FnZSkgewotICAgIGlm
IChpbnB1dCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMCA7ICsraSkgeworICAgIHRlc3RSaWdodFNoaWZ0KDBu
LCAwbiwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwgLTFuLCAwYjEwMTBuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIC0ybiwgMGIxMDEwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KDBiMTAxbiwgLTNuLCAwYjEwMTAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBiMTAxbiwg
MW4sIDBiMTBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgwYjEwMW4sIDJuLCAxbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoMGIxMDFuLCAzbiwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAtMTI4
biwgMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDBuLCAxMjhuLCAwbik7CisgICAgdGVzdFJpZ2h0
U2hpZnQoMHgyNDZuLCAwbiwgMHgyNDZuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIC0x
MjduLCAweDEyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJp
Z2h0U2hpZnQoMHgyNDZuLCAtMTI4biwgMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KDB4MjQ2biwgLTEyOW4sIDB4NDhjMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDI0Nm4sIDEy
OG4sIDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biwgLTY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3ODAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgLTMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0xNm4sIDB4MTIzNDU2Nzg5YWJj
ZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDBuLCAweDEyMzQ1Njc4OWFi
Y2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDE2biwgMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDMybiwgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRj
YmE5ODc2NTQzMjEyMzQ1Njc4biwgNjRuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
biwgMTI3biwgMHgyNDY4YWNuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgweDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI4biwgMHgxMjM0NTZuKTsKKyAgICB0ZXN0Umln
aHRTaGlmdCgweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI5biwg
MHg5MWEyYm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgLTFuLCAtMHhhbik7CisgICAgdGVz
dFJpZ2h0U2hpZnQoLTVuLCAtMm4sIC0weDE0bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAt
M24sIC0weDI4bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTVuLCAxbiwgLTNuKTsKKyAgICB0ZXN0
UmlnaHRTaGlmdCgtNW4sIDJuLCAtMm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC01biwgM24sIC0x
bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAtMTI4biwgLTB4MTAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTFuLCAwbiwgLTFuKTsKKyAg
ICB0ZXN0UmlnaHRTaGlmdCgtMW4sIDEyOG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4
MjQ2biwgMG4sIC0weDI0Nm4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIC0xMjduLCAt
MHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0weDI0Nm4sIC0xMjhuLCAtMHgyNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIC0xMjluLCAtMHg0OGMwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4pOworICAgIHRlc3RSaWdodFNoaWZ0KC0weDI0Nm4sIDEy
OG4sIC0xbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuLCAtNjRuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0zMm4sIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIC0xNm4sIC0weDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMG4pOworICAgIHRlc3RSaWdodFNo
aWZ0KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMG4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4bik7CisgICAgdGVzdFJpZ2h0U2hp
ZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCAxNm4sIC0weDEy
MzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzVuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgt
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sIDMybiwgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuLCA2NG4sIC0weDEyMzQ1Njc4OWFiY2Rl
ZjBmZWRjYmJuKTsKKyAgICB0ZXN0UmlnaHRTaGlmdCgtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4sIDEyN24sIC0weDI0NjhhZG4pOworICAgIHRlc3RSaWdodFNoaWZ0
KC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwgMTI4biwgLTB4MTIz
NDU3bik7CisgICAgdGVzdFJpZ2h0U2hpZnQoLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1
NDMyMTIzNDU2NzhuLCAxMjluLCAtMHg5MWEyY24pOwogfQotCi1hc3NlcnQuc2FtZVZhbHVlKDBu
ID4+IDBuLCAwbiwgIjBuID4+IDBuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4g
Pj4gLTFuLCAwYjEwMTBuLCAiMGIxMDFuID4+IC0xbiA9PT0gMGIxMDEwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgwYjEwMW4gPj4gLTJuLCAwYjEwMTAwbiwgIjBiMTAxbiA+PiAtMm4gPT09IDBiMTAx
MDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDBiMTAxbiA+PiAtM24sIDBiMTAxMDAwbiwgIjBiMTAx
biA+PiAtM24gPT09IDBiMTAxMDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEwMW4gPj4gMW4s
IDBiMTBuLCAiMGIxMDFuID4+IDFuID09PSAwYjEwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgwYjEw
MW4gPj4gMm4sIDFuLCAiMGIxMDFuID4+IDJuID09PSAxbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgw
YjEwMW4gPj4gM24sIDBuLCAiMGIxMDFuID4+IDNuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgwbiA+PiAtMTI4biwgMG4sICIwbiA+PiAtMTI4biA9PT0gMG4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoMG4gPj4gMTI4biwgMG4sICIwbiA+PiAxMjhuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1
ZSgweDI0Nm4gPj4gMG4sIDB4MjQ2biwgIjB4MjQ2biA+PiAwbiA9PT0gMHgyNDZuIik7Ci1hc3Nl
cnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAtMTI3biwgMHgxMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMG4sICIweDI0Nm4gPj4gLTEyN24gPT09IDB4MTIzMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAtMTI4biwgMHgy
NDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4sICIweDI0Nm4gPj4gLTEyOG4gPT09
IDB4MjQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZh
bHVlKDB4MjQ2biA+PiAtMTI5biwgMHg0OGMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MG4sICIweDI0Nm4gPj4gLTEyOW4gPT09IDB4NDhjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKDB4MjQ2biA+PiAxMjhuLCAwbiwgIjB4MjQ2biA+
PiAxMjhuID09PSAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYw
ZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAtMzJuLCAw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDBuLAotICAiMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTMybiA9PT0gMHgxMjM0
NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDAwMDAwbiIpOwotYXNzZXJ0LnNh
bWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4g
LTE2biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuLAotICAi
MHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biA9PT0gMHgx
MjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3ODAwMDBuIik7Ci1hc3NlcnQuc2Ft
ZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAw
biwgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4sCi0gICIweDEyMzQ1
Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAwbiA9PT0gMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoCi0gIDB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biwgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNi
YTk4NzY1NDMyMTIzNDU2NzhuID4+IDE2biA9PT0gMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMzJuLCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMm4sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAz
Mm4gPT09IDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMybiIpOwotYXNzZXJ0LnNhbWVW
YWx1ZSgKLSAgMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gNjRu
LCAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuLAotICAiMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2Jh
OTg3NjU0MzIxMjM0NTY3OG4gPj4gNjRuID09PSAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmFuIik7
Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4biA+PiAxMjduLCAweDI0NjhhY24sCi0gICIweDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjduID09PSAweDI0NjhhY24iKTsKLWFzc2VydC5zYW1lVmFs
dWUoCi0gIDB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4s
IDB4MTIzNDU2biwKLSAgIjB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDEyOG4gPT09IDB4MTIzNDU2biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgMHgxMjM0NTY3
ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTI5biwgMHg5MWEyYm4sCi0gICIw
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluID09PSAweDkx
YTJibiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTFuLCAtMHhhbiwgIi01biA+PiAtMW4g
PT09IC0weGFuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAtMm4sIC0weDE0biwgIi01biA+
PiAtMm4gPT09IC0weDE0biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gLTNuLCAtMHgyOG4s
ICItNW4gPj4gLTNuID09PSAtMHgyOG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTVuID4+IDFuLCAt
M24sICItNW4gPj4gMW4gPT09IC0zbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgtNW4gPj4gMm4sIC0y
biwgIi01biA+PiAybiA9PT0gLTJuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC01biA+PiAzbiwgLTFu
LCAiLTVuID4+IDNuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTFuID4+IC0xMjhuLCAt
MHgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCAiLTFuID4+IC0xMjhuID09PSAt
MHgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVl
KC0xbiA+PiAwbiwgLTFuLCAiLTFuID4+IDBuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFsdWUo
LTFuID4+IDEyOG4sIC0xbiwgIi0xbiA+PiAxMjhuID09PSAtMW4iKTsKLWFzc2VydC5zYW1lVmFs
dWUoLTB4MjQ2biA+PiAwbiwgLTB4MjQ2biwgIi0weDI0Nm4gPj4gMG4gPT09IC0weDI0Nm4iKTsK
LWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAtMTI3biwgLTB4MTIzMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDBuLCAiLTB4MjQ2biA+PiAtMTI3biA9PT0gLTB4MTIzMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKC0weDI0Nm4gPj4g
LTEyOG4sIC0weDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgIi0weDI0Nm4g
Pj4gLTEyOG4gPT09IC0weDI0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiIpOwot
YXNzZXJ0LnNhbWVWYWx1ZSgtMHgyNDZuID4+IC0xMjluLCAtMHg0OGMwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMG4sICItMHgyNDZuID4+IC0xMjluID09PSAtMHg0OGMwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMG4iKTsKLWFzc2VydC5zYW1lVmFsdWUoLTB4MjQ2biA+PiAx
MjhuLCAtMW4sICItMHgyNDZuID4+IDEyOG4gPT09IC0xbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgK
LSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IC02NG4sIC0w
eDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4MDAwMDAwMDAwMDAwMDAwMG4s
Ci0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTY0biA9
PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwMDAwMDAwMDAw
MDAwbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4
NzY1NDMyMTIzNDU2NzhuID4+IC0zMm4sIC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQz
MjEyMzQ1Njc4MDAwMDAwMDBuLAotICAiLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuID4+IC0zMm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEy
MzQ1Njc4MDAwMDAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNk
ZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gLTE2biwgLTB4MTIzNDU2Nzg5YWJjZGVmMGZl
ZGNiYTk4NzY1NDMyMTIzNDU2NzgwMDAwbiwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5
ODc2NTQzMjEyMzQ1Njc4biA+PiAtMTZuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM0NTY3ODAwMDBuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlh
YmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMG4sIC0weDEyMzQ1Njc4OWFiY2RlZjBm
ZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2
NTQzMjEyMzQ1Njc4biA+PiAwbiA9PT0gLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMy
MTIzNDU2NzhuIik7Ci1hc3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVk
Y2JhOTg3NjU0MzIxMjM0NTY3OG4gPj4gMTZuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3
NjU0MzIxMjM1biwKLSAgIi0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4
biA+PiAxNm4gPT09IC0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzVuIik7Ci1h
c3NlcnQuc2FtZVZhbHVlKAotICAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0
NTY3OG4gPj4gMzJuLCAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzNuLAotICAiLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDMybiA9PT0gLTB4MTIz
NDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMzbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4
MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDY0biwgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYm4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIx
MjM0NTY3OG4gPj4gNjRuID09PSAtMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JibiIpOwotYXNzZXJ0
LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2Nzhu
ID4+IDEyN24sIC0weDI0NjhhZG4sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0
MzIxMjM0NTY3OG4gPj4gMTI3biA9PT0gLTB4MjQ2OGFkbiIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgK
LSAgLTB4MTIzNDU2Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOG4sIC0w
eDEyMzQ1N24sCi0gICItMHgxMjM0NTY3ODlhYmNkZWYwZmVkY2JhOTg3NjU0MzIxMjM0NTY3OG4g
Pj4gMTI4biA9PT0gLTB4MTIzNDU3biIpOwotYXNzZXJ0LnNhbWVWYWx1ZSgKLSAgLTB4MTIzNDU2
Nzg5YWJjZGVmMGZlZGNiYTk4NzY1NDMyMTIzNDU2NzhuID4+IDEyOW4sIC0weDkxYTJjbiwKLSAg
Ii0weDEyMzQ1Njc4OWFiY2RlZjBmZWRjYmE5ODc2NTQzMjEyMzQ1Njc4biA+PiAxMjluID09PSAt
MHg5MWEyY24iKTsKLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9m
LXByb3Zlbi10eXBlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLXByb3Zlbi10
eXBlLmpzCmluZGV4IGQyZjUzOTc5OGM1Li5kZTEyMmM5ZGZkNiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC10eXBlLW9mLXByb3Zlbi10eXBlLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtdHlwZS1vZi1wcm92ZW4tdHlwZS5qcwpAQCAtMSw4ICsxLDggQEAKIC8vQCBy
dW5EZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIp
CiAKLWZ1bmN0aW9uIGFzc2VydChhKSB7Ci0gICAgaWYgKCFhKQotICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK2Z1bmN0aW9uIGFzc2VydChpbnB1dCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkJhZCByZXN1bHQ6ICIgKyBpbnB1dCk7CiB9CiAKIGZ1bmN0aW9uIGZvbyhvKSB7CkBAIC0xMyw2
ICsxMyw1IEBAIGZ1bmN0aW9uIGZvbyhvKSB7CiBub0lubGluZShmb28pOwogCiBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICBhc3NlcnQoZm9vKDNuKSA9PT0gIjMiKTsKKyAg
ICBhc3NlcnQoZm9vKDNuKSwgIjMiKTsKIH0KLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Y29tcGFyZS1udW1iZXItYW5kLW90aGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1udW1i
ZXItYW5kLW90aGVyLmpzCmluZGV4IDg1NDZiZjM3ZWExLi44MjVlODVkNmI2MSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvY29tcGFyZS1udW1iZXItYW5kLW90aGVyLmpzCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2NvbXBhcmUtbnVtYmVyLWFuZC1vdGhlci5qcwpAQCAtNTksMTcgKzU5LDE3IEBA
IGZvciAobGV0IG9wZXJhdG9yIG9mIG9wZXJhdG9ycykgewogICAgICAgICAgICAgbm9JbmxpbmUo
dGVzdE1vbm9tb3JwaGljUmlnaHRDb25zdGFudCR7dGVzdENhc2VJbmRleH0pOwogCiAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHRlc3RNb25vbW9ycGhpYyR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSwgJHtyaWdodH0pICE9ICR7
bGxpbnRSZXN1bHR9KQorICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBoaWMke3Rlc3RD
YXNlSW5kZXh9KCR7bGVmdH0sICR7cmlnaHR9KSAhPT0gJHtsbGludFJlc3VsdH0pCiAgICAgICAg
ICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdE1vbm9tb3JwaGljJHt0ZXN0Q2FzZUluZGV4
fSgke2xlZnR9LCAke3JpZ2h0fSkiOwotICAgICAgICAgICAgICAgIGlmICh0ZXN0TW9ub21vcnBo
aWNMZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9KCR7cmlnaHR9KSAhPSAke2xsaW50UmVzdWx0
fSkKKyAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljTGVmdENvbnN0YW50JHt0ZXN0
Q2FzZUluZGV4fSgke3JpZ2h0fSkgIT09ICR7bGxpbnRSZXN1bHR9KQogICAgICAgICAgICAgICAg
ICAgICB0aHJvdyAiRmFpbGVkIHRlc3RNb25vbW9ycGhpY0xlZnRDb25zdGFudCR7dGVzdENhc2VJ
bmRleH0oJHtyaWdodH0pIjsKLSAgICAgICAgICAgICAgICBpZiAodGVzdE1vbm9tb3JwaGljUmln
aHRDb25zdGFudCR7dGVzdENhc2VJbmRleH0oJHtsZWZ0fSkgIT0gJHtsbGludFJlc3VsdH0pCisg
ICAgICAgICAgICAgICAgaWYgKHRlc3RNb25vbW9ycGhpY1JpZ2h0Q29uc3RhbnQke3Rlc3RDYXNl
SW5kZXh9KCR7bGVmdH0pICE9PSAke2xsaW50UmVzdWx0fSkKICAgICAgICAgICAgICAgICAgICAg
dGhyb3cgIkZhaWxlZCB0ZXN0TW9ub21vcnBoaWNMZWZ0Q29uc3RhbnQke3Rlc3RDYXNlSW5kZXh9
KCR7bGVmdH0pIjsKICAgICAgICAgICAgICAgICBpZiAodGVzdFBvbHltb3JwaGljKCR7bGVmdH0s
ICR7cmlnaHR9KSAhPT0gJHtsbGludFJlc3VsdH0pCi0gICAgICAgICAgICAgICAgICAgIHRocm93
ICJGYWlsZWQgcG9seW1vcnBoaWNWZXJzaW9uKCR7bGVmdH0pIjsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgIkZhaWxlZCBwb2x5bW9ycGhpY1ZlcnNpb24oJHtsZWZ0fSwgJHtvcGVyYXRvcn0s
ICR7cmlnaHR9LCBleHBlY3RlZCByZXN1bHQ6ICR7bGxpbnRSZXN1bHR9KSI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBgKTsKICAgICAgICAgICAgICsrdGVzdENhc2VJbmRleDsKICAgICAg
ICAgfQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1vbi12YXJpb3VzLXR5cGVzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvY29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcwppbmRl
eCBhZjIyODNmOGVlNC4uN2Y1Y2IxMDRlMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Nv
bXBhcmUtc3RyaWN0LWVxLW9uLXZhcmlvdXMtdHlwZXMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Y29tcGFyZS1zdHJpY3QtZXEtb24tdmFyaW91cy10eXBlcy5qcwpAQCAtODMsNyArODMsOCBAQCBm
dW5jdGlvbiB0ZXN0QWxsVHlwZXNDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIiwg
UmlnaHQgPSAiICsKICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2FzZXNbcmlnaHRDYXNl
SW5kZXhdICsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJlc3VsdCA9ICIgKwotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpY3RFcXVhbE91dHB1dCArCisgICAgICAgICAgICAgICAgICAgICAgICAiIChjYXNl
OiAiICsgbGVmdENhc2VJbmRleCArICIsICIgKyByaWdodENhc2VJbmRleCArICIpIjsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBsZXQgc3RyaWN0Tm90RXF1YWxPdXRwdXQg
PSBvcGFxdWVTdHJpY3ROb3RFcXVhbEFsbFR5cGVzKGxlZnRDYXNlc1tsZWZ0Q2FzZUluZGV4XSwg
cmlnaHRDYXNlc1tyaWdodENhc2VJbmRleF0pOwpAQCAtOTMsNyArOTQsOCBAQCBmdW5jdGlvbiB0
ZXN0QWxsVHlwZXNDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIiwgUmlnaHQgPSAi
ICsKICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2FzZXNbcmlnaHRDYXNlSW5kZXhdICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICIsIFJlc3VsdCA9ICIgKwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaWN0RXF1YWxPdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
Y3RFcXVhbE91dHB1dCArCisgICAgICAgICAgICAgICAgICAgICAgICAiIChjYXNlOiAiICsgbGVm
dENhc2VJbmRleCArICIsICIgKyByaWdodENhc2VJbmRleCArICIpIjsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2Z0bC1zdHJpbmctc3RyaWN0LWVxdWFsaXR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZnRsLXN0cmlu
Zy1zdHJpY3QtZXF1YWxpdHkuanMKaW5kZXggMDQzYTc2MDdhNGYuLjhlOTZjZjQ0Mjg5IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9mdGwtc3RyaW5nLXN0cmljdC1lcXVhbGl0eS5qcwpAQCAtMzAsNiAr
MzAsNiBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CiAgICAgdmFyIHJlc3Vs
dCA9IGZvbyhhcnJheSwgYXJyYXkyW2luZGV4XSk7CiAgICAgdmFyIGV4cGVjdGVkID0gaW5kZXgg
Pj0gYXJyYXkubGVuZ3RoID8gbnVsbCA6IGluZGV4CiAgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0
ZWQpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0ICsgIiBidXQgZXhwZWN0ZWQg
IiArIGV4cGVjdGVkOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9taXNzaW5nLWV4
Y2VwdGlvbi1jaGVjay1pbi1zdHJpbmctY29tcGFyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL21pc3Np
bmctZXhjZXB0aW9uLWNoZWNrLWluLXN0cmluZy1jb21wYXJlLmpzCmluZGV4IDk2NWE3ZDczYjcx
Li5kZDg1YTgzODdmYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbWlzc2luZy1leGNlcHRp
b24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWlzc2lu
Zy1leGNlcHRpb24tY2hlY2staW4tc3RyaW5nLWNvbXBhcmUuanMKQEAgLTEsNiArMSw4IEBACiBj
b25zdCBzMSA9ICgtMSkudG9Mb2NhbGVTdHJpbmcoKS5wYWRFbmQoMioqMzEtMSwgJ2FhJyk7Citj
b25zdCBzMiA9ICgtMSkudG9Mb2NhbGVTdHJpbmcoKS5wYWRFbmQoMioqMzEtMSwgJ2FhJyk7CiB0
cnkgewotICAgIHMxID09IHMxOworICAgIC8vIEZvcmNlIGV2YWx1YXRpb24gb2YgUm9wZQorICAg
IHMxID09IHMyOwogfSBjYXRjaCAoZSkgewogICAgIGV4Y2VwdGlvbiA9IGU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTU5NTNkYjQ5MzAuLmQxZDkyMzI5OTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05ODYsNiArOTg2LDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuaAogICAgIHJ1bnRpbWUvU2NvcGVPZmZzZXQuaAogICAgIHJ1bnRpbWUv
U2NvcGVkQXJndW1lbnRzVGFibGUuaAorICAgIHJ1bnRpbWUvU2NyaWJibGUuaAogICAgIHJ1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMu
aAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBhODgwYTBmNjNlYi4uNmM0MjEyMmRjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4NyBAQAorMjAyMC0wNC0wNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBw
bGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgYW4gaW5saW5lZCByZXByZXNlbnRhdGlvbiBpbiBK
U1ZhbHVlIG9mIHNtYWxsIEJpZ0ludHMgKCJCaWdJbnQzMiIpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxODIKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMgdG8gb3B0aW1p
emUgdGhlIHBlcmZvcm1hbmNlIG9mIEJpZ0ludHMsIHdoZW4gdGhleSBhcmUgc21hbGwgKDMyIGJp
dCBvciBsZXNzKS4KKyAgICAgICAgSXQgd29ya3MgYnkgaW5saW5pbmcgdGhlbSBpbnRvIEpTVmFs
dWUgb24gNjQtYml0IHBsYXRmb3JtcywgYXZvaWRpbmcgdGhlIGFsbG9jYXRpb24gb2YgYSBKU0Jp
Z0ludC4KKyAgICAgICAgVGhlIGJpdCBwYXR0ZXJuIHdlIHVzZSBpcyAwMDAwOlhYWFg6WFhYWDow
MDEyCisgICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24gd29ya3MgYmVjYXVzZSBvZiB0aGUgZm9s
bG93aW5nIHRoaW5nczoKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERv
dWJsZSBvciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgICAgLSBJdCBjYW5u
b3QgYmUgY29uZnVzZWQgd2l0aCBhIHBvaW50ZXIgdG8gYSBDZWxsLCB0aGFua3MgdG8gYml0IDEg
d2hpY2ggaXMgc2V0IHRvIHRydWUKKyAgICAgICAgLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0
aCBhIHBvaW50ZXIgdG8gd2FzbSB0aGFua3MgdG8gYml0IDAgd2hpY2ggaXMgc2V0IHRvIGZhbHNl
CisgICAgICAgIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNl
IGJpdCAyIGlzIHNldCB0byBmYWxzZQorICAgICAgICAtIEl0IGNhbm5vdCBiZSBjb25mdXNlZCBm
b3IgbnVsbC91bmRlZmluZWQgYmVjYXVzZSBiaXQgNCBpcyBzZXQgdG8gdHJ1ZQorCisgICAgICAg
IFRoaXMgZW50aXJlIGNoYW5nZSBpcyBnYXRlZCBieSBVU0UoQklHSU5UMzIpLCB0byBtYWtlIGl0
IGVhc2llciB0byBkaXNhYmxlIGlmIGl0IHR1cm5zIG91dCB0byBoYXZlIGJ1Z3MuCisgICAgICAg
IEl0IHNob3VsZCBhbHNvIG1ha2UgaXQgbXVjaCBlYXNpZXIgdG8gdmVyaWZ5IGlmIGEgZ2l2ZW4g
YnVnIGNvbWVzIGZyb20gaXQgb3IgZnJvbSBzb21ldGhpbmcgZWxzZS4KKworICAgICAgICBOb3Rl
IHRoYXQgaW4gdGhpcyBwYXRjaCB3ZSBjcmVhdGUgQmlnSW50MzJzIHdoZW4gcGFyc2luZyBzbWFs
bCBCaWdJbnQgY29uc3RhbnRzLCBhbmQgbW9zdCBvcGVyYXRpb25zIChlLmcuIEFkZCBvciBCaXRP
cikgcHJvZHVjZSBhIEJpZ0ludDMyIGlmIGJvdGggb2YgdGhlaXIgb3BlcmFuZHMgYXJlIEJpZ0lu
dDMyLAorICAgICAgICBidXQgd2UgZG9uJ3QgcHJvZHVjZSBhIEJpZ0ludDMyIGZyb20gZm9yIGV4
YW1wbGUgdGhlIHN1YnN0cmFjdGlvbi9kaXZpc2lvbiBvZiB0d28gbGFyZ2UgaGVhcC1hbGxvY2F0
ZWQgSlNCaWdJbnRzLCBldmVuIGlmIHRoZSByZXN1bHQgZml0cyBpbiAzMi1iaXRzLgorICAgICAg
ICBBcyBhIHJlc3VsdCwgc21hbGwgQmlnSW50cyBjYW4gbm93IGVpdGhlciBiZSBoZWFwLWFsbG9j
YXRlZCBvciBpbmxpbmVkIGluIHRoZSBKU1ZhbHVlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5j
bHVkZXMgYSBzaWduaWZpY2FudCByZWZhY3RvciBvZiB2YXJpb3VzIHNsb3cgcGF0aHMsIHdoaWNo
IGFyZSBub3cgZ3JvdXBlZCB0b2dldGhlciBpbiBPcGVyYXRpb25zLmgKKyAgICAgICAgQmVjYXVz
ZSB0aGlzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiBPcGVyYXRpb25zLmggc2lnbmlmaWNhbnRseSwg
SSBzcGxpdCB0aGUgcGFydHMgb2YgT3BlcmF0aW9ucy5oIHdoaWNoIGFyZSBvbmx5IHVzZWQgYnkg
dGhlIEdDIGludG8gU2NyaWJibGUuaCwgdG8gYXZvaWQgYmxvYXRpbmcgY29tcGlsZSB0aW1lcy4K
KworICAgICAgICBJbiB0aGUgREZHIGFuZCBGVEwgd2Ugbm93IGhhdmUgMyBVc2VLaW5kcyBmb3Ig
QmlnSW50czogSGVhcEJpZ0ludFVzZSwgQmlnSW50MzJVc2UgYW5kIEFueUJpZ0ludFVzZS4KKyAg
ICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgd2hlbiB3ZSBrbm93IHRoYXQgd2UgYXJlIHJlY2Vp
dmluZyBCaWdJbnRzLCBidXQgc3BlY3VsYXRpb24gaW5kaWNhdGVzIGEgbWl4IG9mIGhlYXAtYWxs
b2NhdGVkIGFuZCBzbWFsbCAoaW5saW5lZCkgYmlnLWludHMuCisKKyAgICAgICAgVW5mb3J0dW5h
dGVseSwgYSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhdGNoIHNpZ25pZmljYW50bHkg
cmVncmVzc2VzIHRoZSBwZXJmb3JtYW5jZSBvZiBTdHJpY3RFcSAoYW5kIGl0cyB2YXJpYW50cyks
IGFzIGl0IGlzIG5vIGxvbmdlciB0cnVlIHRoYXQgYSBjZWxsIGFuZCBhIG5vbi1jZWxsIGNhbm5v
dCBiZSBlcXVhbC4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIHRoZSBjb2RlIHdhcyBqdW1w
aW5nIHRvIGEgc2xvdyBwYXRoIGlmIGVpdGhlcjoKKyAgICAgICAgLSBhdCBsZWFzdCBvbmUgb3Bl
cmFuZCBpcyBhIGRvdWJsZQorICAgICAgICAtIG9yIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzCisg
ICAgICAgIE5vdywgaXQgYWxzbyBuZWVkcyB0byBqdW1wIHRvIHRoZSBzbG93IHBhdGggaWYgYXQg
bGVhc3Qgb25lIGlzIGEgY2VsbC4KKyAgICAgICAgVG8gcmVjb3ZlciB0aGlzIHBlcmZvcm1hbmNl
IGNvc3QsIEkgc2lnbmlmaWNhbnRseSByZXdyb3RlIHRoaXMgY29kZSwgZnJvbQorICAgICAgICAg
IGlmIChsZWZ0IGlzIENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgeworICAgICAgICAgICAgaWYgKGxl
ZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZ290
byBzbG93UGF0aDsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCEgbGVmdCBpcyBJbnQzMikg
eworICAgICAgICAgICAgaWYgKGxlZnQgaXMgTnVtYmVyKQorICAgICAgICAgICAgICBnb3RvIHNs
b3dQYXRoCisgICAgICAgICAgfQorICAgICAgICAgIGlmICghIHJpZ2h0IGlzIEludDMyKSB7Cisg
ICAgICAgICAgICBpZiAocmlnaHQgaXMgTnVtYmVyKQorICAgICAgICAgICAgICBnb3RvIHNsb3dQ
YXRoCisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0CisgICAgICAg
IFRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgaWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0
IGlzIERvdWJsZSkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAgICAgICAgICBpZiAobGVm
dCA9PSByaWdodCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGlmIChsZWZ0
IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2VsbCkKKyAgICAgICAgICAgIGdvdG8gc2xvd1BhdGgKKyAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEkgYmVsaWV2ZSB0aGlzIHRvIGJlIGZhc3Rl
ciB0aGFuIGp1c3QgcmVwbGFjaW5nIChsZWZ0IGlzIENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgYnkg
YW4gfHwsIGJlY2F1c2UgSSBmb3VuZCBhIGJpdC10cmljayB0byBjaGVjayAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKSB3aGljaCBzaG91bGQgaGVscCByZWR1Y2UgdGhlIHByZXNz
dXJlIG9uIHRoZSBicmFuY2ggcHJlZGljdG9yLgorICAgICAgICBFYXJseSBKZXRTdHJlYW0yIHRl
c3RzIGFwcGVhciB0byBjb25maXJtIHRoYXQgdGhpcyBwYXRjaCBpcyByb3VnaGx5IG5ldXRyYWwg
d2hpbGUgaXQgd2FzIGEgMC41JSByZWdyZXNzaW9uIGJlZm9yZSBJIHVzZWQgdGhpcyB0cmljaywg
YnV0IHRoZSBudW1iZXJzIGFyZSBzdGlsbCB0b28gbm9pc3ksIEkgcGxhbiB0byBkbyBtb3JlIG1l
YXN1cmVtZW50cyBiZWZvcmUgbGFuZGluZyB0aGlzIHBhdGNoLgorCisgICAgICAgIEkgZG9uJ3Qg
eWV0IGhhdmUgcGVyZm9ybWFuY2UgbnVtYmVycyBmb3IgdGhpcyBwYXRjaCBvbiBhIEJpZ0ludCBi
ZW5jaG1hcmssIEkgd2lsbCBnZXQgc3VjaCBudW1iZXJzIGJlZm9yZSB0cnlpbmcgdG8gbGFuZCBp
dCwgYnV0IEknZCBsaWtlIHNvbWUgcmV2aWV3IGluIHRoZSBtZWFudGltZS4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nklu
c3RydWN0aW9uRm9ybWF0dGVyOjpTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlcjo6bWVtb3J5
TW9kUk0pOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50
MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hv
dWxkRW1pdFNldEhlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEhlYXBCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludDMyIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxl
Lmg6CisgICAgICAgIChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZU5vbkludDMyKToK
KyAgICAgICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlQmlnSW50KToKKyAgICAg
ICAgKEpTQzo6T2JzZXJ2ZWRSZXN1bHRzOjpkaWRPYnNlcnZlSGVhcEJpZ0ludCk6CisgICAgICAg
IChKU0M6Ok9ic2VydmVkUmVzdWx0czo6ZGlkT2JzZXJ2ZUJpZ0ludDMyKToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJpZ0ludDMyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9ybWF0Lmg6CisgICAgICAgICogYnl0ZWNvZGUv
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6
c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9t
VmFsdWUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21KU1R5cGUpOgorICAgICAgICAo
SlNDOjpsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNCaWdJ
bnQzMlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNIZWFwQmlnSW50U3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjppc0JpZ0ludFNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmFkZEJpZ0ludENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAg
ICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJp
emUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAg
ICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAg
ICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb1Ro
aXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9OdW1lcmljKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFs
dWUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlNhZmVUb0V4ZWN1dGVFZGdlOjpvcGVyYXRvcigpKToKKyAgICAgICAg
KEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVCaXROb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBl
ZE9yQW55QmlnSW50Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVCaXR3aXNlT3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTFNoaWZ0T3ApOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2hpZnRPcCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZURpdik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0
RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmln
SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJpYyk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZDo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5kKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQ6On5TcGVjdWxhdGVCaWdJ
bnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZDo6ZWRnZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVy
YW5kOjpub2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVCaWdJbnQzMk9w
ZXJhbmQ6Omdwcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
Ojp1c2UpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUJpZ0ludDMyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQW55QmlnSW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJpZ0ludDMyQ29tcGFyZSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJpZ0lu
dDMyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdVc2VLaW5kLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAg
ICAgICogZGZnL0RGR1VzZUtpbmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9y
KToKKyAgICAgICAgKEpTQzo6REZHOjppc0NlbGwpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkNvbW1vblZhbHVlczo6
aW5pdGlhbGl6ZUNvbnN0YW50cyk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVEaXYpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVNb2QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVQb3cpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXROb3QpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRBbmQpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRPcik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdFhvcik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEJpdFJTaGlmdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEJpdExT
aGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1
ZUJpdExTaGlmdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVCaXRVUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVRvTnVtZXJpYyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDb21wYXJlRXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUlzQmlnSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6ZW1pdEJpbmFyeVNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjplbWl0QmluYXJ5Qml0T3BTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Ym9vbGlmeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmJ1aWxkVHlwZU9mKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6bG93SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
Omxvd0JpZ0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNC
aWdJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90Qmln
SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveEJpZ0lu
dDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym94QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEFueUJpZ0ludCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90SGVhcEJpZ0ludFVua25vd25X
aGV0aGVyQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90
SGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzSGVh
cEJpZ0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0
ZUhlYXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVj
dWxhdGVIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlQmlnSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVBbnlCaWdJbnQpOgorICAgICAgICAqIGZ0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToK
KyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oOgorICAgICAgICAqIGhlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OnNpemVPZlZhcmFyZ3MpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkJpZ0ludDMyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90QmlnSW50MzJL
bm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZI
ZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdEhl
YXBCaWdJbnQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnVuYm94QmlnSW50MzIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJveEJpZ0ludDMyKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0VHlwZU9mKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9uZWdhdGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2lzX2JpZ19pbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0
cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXApOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fbnVtZXJpYyk6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWVyaWMpOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0JpZ0ludCk6CisgICAgICAgIChKU0M6OmNh
bGxCaWdJbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9CaWdJbnRPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpCaWdJbnRPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJp
Z0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjp0b1RoaXNCaWdJbnRWYWx1ZSk6CisgICAgICAgIChKU0M6OmJpZ0ludFByb3RvRnVuY1Rv
U3RyaW5nSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJv
ZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZv
ckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OnBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KToK
KyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmluYyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpk
ZWMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Yml0d2lzZUFuZCk6CisgICAgICAgIChKU0M6
OkpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1
YWxzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMik6Cisg
ICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOgorICAgICAgICAoSlNDOjphc0hlYXBCaWdJbnQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnRvTnVtYmVyU2xvd0Nhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlzU2xvd0Nh
c2UgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0
dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OmFzSGVhcEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OmlzQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNIZWFwQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNCaWdJbnQzMiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmJpZ0ludDMyQXNJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmlzUHJpbWl0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6Z2V0UHJp
bWl0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1lcmljIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9CaWdJbnRPckludDMyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZSk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnN0cmljdEVxdWFsRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpzdHJpY3RF
cXVhbCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCk6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXQpOgorICAgICAgICAoSlNDOjpK
U0NlbGw6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvUHJpbWl0aXZlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRQcmltaXRpdmVOdW1iZXIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
aXNIZWFwQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b0Jvb2xlYW4gY29u
c3QpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnB1cmVUb0Jvb2xlYW4gY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9Cb29sZWFu
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnBy
aW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlv
blNjb3BlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpqc0FkZFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGVPck51bGwp
OgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpjb21wYXJl
QmlnSW50VG9PdGhlclByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OmJpZ0ludENvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpqc0xlc3MpOgorICAgICAgICAoSlNDOjpqc0xlc3NFcSk6CisgICAgICAg
IChKU0M6OmFyaXRobWV0aWNCaW5hcnlPcCk6CisgICAgICAgIChKU0M6OmpzU3ViKToKKyAgICAg
ICAgKEpTQzo6anNNdWwpOgorICAgICAgICAoSlNDOjpqc0Rpdik6CisgICAgICAgIChKU0M6Ompz
UmVtYWluZGVyKToKKyAgICAgICAgKEpTQzo6anNQb3cpOgorICAgICAgICAoSlNDOjpqc0luYyk6
CisgICAgICAgIChKU0M6OmpzRGVjKToKKyAgICAgICAgKEpTQzo6anNCaXR3aXNlTm90KToKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjpqc0xTaGlmdCk6CisgICAgICAgIChK
U0M6OmpzUlNoaWZ0KToKKyAgICAgICAgKEpTQzo6Yml0d2lzZUJpbmFyeU9wKToKKyAgICAgICAg
KEpTQzo6anNCaXR3aXNlQW5kKToKKyAgICAgICAgKEpTQzo6anNCaXR3aXNlT3IpOgorICAgICAg
ICAoSlNDOjpqc0JpdHdpc2VYb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaWJibGUuaDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmguCisg
ICAgICAgIChKU0M6OnNjcmliYmxlRnJlZUNlbGxzKToKKyAgICAgICAgKEpTQzo6aXNTY3JpYmJs
ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OnNjcmliYmxlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6cHJvdG90eXBlRm9yTG9va3VwUHJpbWl0
aXZlSW1wbCk6CisKIDIwMjAtMDQtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIGNvbW1lbnRlZCBvdXQvZGVhZCBj
b2RlIHRoYXQgZGlkbid0IGZhaWxlZCB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmNWQwODM3NmRiZS4uNzBmYzk5ZmI0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04NjcsNiArODY3LDcgQEAKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJ
dGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICov
OyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyog
U291cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzMxMTFCOEIyMzk3MjU2
NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzExMUI4QTIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzk1QzcwNzIy
NTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8q
IEIzRWxpbWluYXRlRGVhZENvZGUuaCAqLzsgfTsKIAkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYw
IC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93
UGF0aHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMzNCMkE1NDcyMjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFsdWVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRGQjFCREFD
REFDMDA4MEZGNzQgLyogQjNWYWx1ZUlubGluZXMuaCAqLzsgfTsKQEAgLTM1MTksNiArMzUyMCw3
IEBACiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291
cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1
IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpYmJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0OTIyNEQ3OUVG
MDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7
IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzc0MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNP
cHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0
aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFz
c29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzOTVDNzA0MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3Bw
OyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03NTgyLDYgKzc1ODQsNyBAQAogCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0Iz
MyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oICovLAogCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQz
M0IzMyAvKiBTY29wZU9mZnNldC5jcHAgKi8sCiAJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMz
IC8qIFNjb3BlT2Zmc2V0LmggKi8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNj
cmliYmxlLmggKi8sCiAJCQkJMTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1
dGFibGUuY3BwICovLAogCQkJCTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVj
dXRhYmxlLmggKi8sCiAJCQkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNo
ZXIuaCAqLywKQEAgLTg5NTQsNiArODk1Nyw3IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpclZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2
MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVN
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyog
QWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCBjMTAwMjQwNGVmNi4uMzU3ODY4M2I1
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aApAQCAtNDY5OCw3ICs0Njk4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBJbW1lZGlhdGVz
OgogICAgICAgICAvLwotICAgICAgICAvLyBBbiBpbW1lZGFpdGUgc2hvdWxkIGJlIGFwcGVuZGVk
IHdoZXJlIGFwcHJvcHJpYXRlIGFmdGVyIGFuIG9wIGhhcyBiZWVuIGVtaXR0ZWQuCisgICAgICAg
IC8vIEFuIGltbWVkaWF0ZSBzaG91bGQgYmUgYXBwZW5kZWQgd2hlcmUgYXBwcm9wcmlhdGUgYWZ0
ZXIgYW4gb3AgaGFzIGJlZW4gZW1pdHRlZC4KICAgICAgICAgLy8gVGhlIHdyaXRlcyBhcmUgdW5j
aGVja2VkIHNpbmNlIHRoZSBvcGNvZGUgZm9ybWF0dGVycyBhYm92ZSB3aWxsIGhhdmUgZW5zdXJl
ZCBzcGFjZS4KIAogICAgICAgICB2b2lkIGltbWVkaWF0ZTgoaW50IGltbSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggZmVhNjY3NDVi
NjIuLjg1ZWM3MjgzMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJpdGhQcm9maWxlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5B
QkxFKEpJVCkKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLXZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCit2b2lkIEFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsK
LSAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWVy
aWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQorICAgIGlmICghc2hvdWxkRW1pdFNldERv
dWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0SGVh
cEJpZ0ludCgpICYmICFzaG91bGRFbWl0U2V0QmlnSW50MzIoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwpAQCAtNDgsOSArNDgsMTggQEAgdm9p
ZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWcKIAogICAgIG5vdERvdWJsZS5saW5rKCZqaXQpOwogCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RCaWdJbnQzMiA9IGppdC5i
cmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIocmVncywgdGVtcEdQUik7CisgICAgZW1p
dFNldEJpZ0ludDMyKGppdCk7CisgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgbm90
QmlnSW50MzIubGluaygmaml0KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHRlbXBHUFIpOwor
I2VuZGlmCisKICAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3Ms
IG1vZGUpKTsKLSAgICBub25OdW1lcmljLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RCaWdJbnQocmVn
cy5wYXlsb2FkR1BSKCkpKTsKLSAgICBlbWl0U2V0QmlnSW50KGppdCk7CisgICAgbm9uTnVtZXJp
Yy5hcHBlbmQoaml0LmJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOwor
ICAgIGVtaXRTZXRIZWFwQmlnSW50KGppdCk7CiAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7
CiAKICAgICBub25OdW1lcmljLmxpbmsoJmppdCk7CkBAIC04OCwxOSArOTcsMzkgQEAgdm9pZCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KLWJvb2wg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdAor
Ym9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludDMyKCkg
Y29uc3QKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBPYnNl
cnZlZFJlc3VsdHM6OkJpZ0ludDMyOworICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFz
azsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3Vs
ZEVtaXRTZXRIZWFwQmlnSW50KCkgY29uc3QKIHsKLSAgICBCaXRmaWVsZFR5cGUgbWFzayA9IE9i
c2VydmVkUmVzdWx0czo6QmlnSW50OworICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gT2JzZXJ2ZWRS
ZXN1bHRzOjpIZWFwQmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgotdm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3Zv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50KCkpCi0gICAg
ICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgT2JzZXJ2ZWRSZXN1bHRzOjpCaWdJbnQpOwor
ICAgIGlmIChzaG91bGRFbWl0U2V0SGVhcEJpZ0ludCgpKQorICAgICAgICBlbWl0VW5jb25kaXRp
b25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7CiB9CiAKKyNpZiBVU0Uo
QklHSU5UMzIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJv
ZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJzJiBqaXQpIGNv
bnN0Cit7CisgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQzMigpKQorICAgICAgICBlbWl0VW5j
b25kaXRpb25hbFNldChqaXQsIE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzIpOworfQorI2VuZGlm
CisKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIHZvaWQgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVscGVycyYgaml0LCBCaXRm
aWVsZFR5cGUgbWFzaykgY29uc3QKIHsKQEAgLTE0OSw4ICsxNzgsMTIgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmlsZTxUPiYgcHJvZmlsZSkK
ICAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJJbnQ1Mk92ZXJmbG93Iik7CiAgICAg
ICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHByb2ZpbGUu
ZGlkT2JzZXJ2ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAi
QmlnSW50Iik7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVIZWFwQmlnSW50KCkpIHsK
KyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJIZWFwQmlnSW50Iik7CisgICAgICAg
ICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb2ZpbGUuZGlk
T2JzZXJ2ZUJpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJC
aWdJbnQzMiIpOwogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4
IDZhZGQxYTI2YjBhLi43YzFmZTcxM2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDIxICs3NCwyNCBAQCBwdWJsaWM6CiAgICAg
ICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCiAgICAgICAgIEludDMyT3ZlcmZsb3cgICAg
PSAxIDw8IDMsCiAgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJp
Z0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgICAgIEhlYXBCaWdJbnQgICAgICAgPSAxIDw8
IDUsCisgICAgICAgIEJpZ0ludDMyICAgICAgICAgPSAxIDw8IDYsCiAgICAgfTsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSA2OworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgbnVtQml0c05lZWRlZCA9IDc7CiAKICAgICBPYnNlcnZlZFJlc3VsdHMo
KSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgT2JzZXJ2ZWRSZXN1bHRzKHVpbnQ4X3QgYml0cykK
ICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICB7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5v
bkludDMyKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25JbnQz
MigpIHsgcmV0dXJuIG1fYml0cyAmIChOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8
IE5vbk51bWVyaWMgfCBIZWFwQmlnSW50IHwgQmlnSW50MzIpOyB9CiAgICAgYm9vbCBkaWRPYnNl
cnZlRG91YmxlKCkgeyByZXR1cm4gbV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJv
RG91YmxlKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSB7IHJldHVy
biBtX2JpdHMgJiBOb25OZWdaZXJvRG91YmxlOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVy
b0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5lZ1plcm9Eb3VibGU7IH0KICAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgeyByZXR1cm4gbV9iaXRzICYgTm9uTnVtZXJpYzsgfQotICAg
IGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAmIEJpZ0ludDsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIHsgcmV0dXJuIG1fYml0cyAmIChIZWFwQmlnSW50IHwg
QmlnSW50MzIpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSGVhcEJpZ0ludCgpIHsgcmV0dXJuIG1f
Yml0cyAmIEhlYXBCaWdJbnQ7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQzMigpIHsgcmV0
dXJuIG1fYml0cyAmIEJpZ0ludDMyOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dygpIHsgcmV0dXJuIG1fYml0cyAmIEludDMyT3ZlcmZsb3c7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVJbnQ1Mk92ZXJmbG93KCkgeyByZXR1cm4gbV9iaXRzICYgSW50NTJPdmVyZmxvdzsgfQogCkBA
IC0xMDksMTMgKzExMiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0Rv
dWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVOZWdaZXJv
RG91YmxlKCk7IH0KICAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1
cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKTsgfQogICAgIGJvb2wg
ZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9i
c2VydmVCaWdJbnQoKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSBjb25zdCB7
IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSGVhcEJpZ0ludCgpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMo
KS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlSW50MzJPdmVy
ZmxvdygpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCk7IH0KIAogICAg
IHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1
bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91
YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOZWdaZXJvRG91YmxlKTsgfQogICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25O
dW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChPYnNlcnZl
ZFJlc3VsdHM6OkJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSGVhcEJpZ0ludCgpIHsg
c2V0Qml0KE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2Vy
dmVkQmlnSW50MzIoKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkJpZ0ludDMyKTsgfQogICAg
IHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRz
OjpJbnQzMk92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkg
eyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93KTsgfQogCkBAIC0xMjcsOCAr
MTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3VsdHM6
OkludDMyT3ZlcmZsb3cgfCBPYnNlcnZlZFJlc3VsdHM6OkludDUyT3ZlcmZsb3cgfCBPYnNlcnZl
ZFJlc3VsdHM6Ok5vbk5lZ1plcm9Eb3VibGUgfCBPYnNlcnZlZFJlc3VsdHM6Ok5lZ1plcm9Eb3Vi
bGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHZhbHVlICYm
IHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3Vs
dHM6OkJpZ0ludDsKKyAgICAgICAgaWYgKHZhbHVlLmlzQmlnSW50MzIoKSkgeworICAgICAgICAg
ICAgbV9iaXRzIHw9IE9ic2VydmVkUmVzdWx0czo6QmlnSW50MzI7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzSGVhcEJpZ0ludCgp
KSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50Owog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZl
ZFJlc3VsdHM6Ok5vbk51bWVyaWM7CkBAIC0xMzksMTkgKzE0OSwyMiBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEpJVCkKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8
IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKICAgICAvLyBk
b3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9p
ZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0
ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQo
Q0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNN
b2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwg
SW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KICAgICBi
b29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKICAgICB2b2lkIGVtaXRTZXREb3VibGUo
Q0NhbGxIZWxwZXJzJikgY29uc3Q7CiAKLSAgICAvLyBTZXRzIE5vbk51bWVyaWMKICAgICB2b2lk
IGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
RW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKIAotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9p
ZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1p
dFNldEJpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNldEhlYXBCaWdJbnQoKSBj
b25zdDsKKyAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0Owor
CisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25zdDsKKyNpZiBVU0UoQklHSU5U
MzIpCisgICAgdm9pZCBlbWl0U2V0QmlnSW50MzIoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisjZW5k
aWYKIAogICAgIHZvaWQgZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiwgQml0Zmll
bGRUeXBlKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtMTc1LDcgKzE4OCw3IEBA
IHVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OwogY2xhc3MgVW5hcnlBcml0
aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNl
cnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2Vy
dmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFy
eUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0aGUgdHlwZSBvZiB0aGUg
dW5kZXJseWluZyBiaXRmaWVsZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2VydmVkVHlw
ZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFyeUFyaXRo
UHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlp
bmcgYml0ZmllbGQuIik7CiAKICAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxl
QmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxVbmFyeUFyaXRo
UHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKIApAQCAtMjU3
LDcgKzI3MCw3IEBAIGNsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2Zp
bGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gewogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxo
c09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91
bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmlu
YXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiB0aGUgdW5kZXJseWluZyB0
eXBlLiIpOwogICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJM
aHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3Qu
Iik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2Vy
dmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3BlY2lhbEZhc3RQYXRoQml0KSA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+
Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50
ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IDBmZjJiZjYwMzkyLi43MzhiZWNhM2RjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0zMzAsNiArMzMwLDcgQEAgb3BfZ3JvdXAgOlVu
YXJ5T3AsCiAgICAgICAgIDppc191bmRlZmluZWRfb3JfbnVsbCwKICAgICAgICAgOmlzX2Jvb2xl
YW4sCiAgICAgICAgIDppc19udW1iZXIsCisgICAgICAgIDppc19iaWdfaW50LAogICAgICAgICA6
aXNfb2JqZWN0LAogICAgICAgICA6aXNfb2JqZWN0X29yX251bGwsCiAgICAgICAgIDppc19mdW5j
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDljNTRiNDNkZGMzLi5j
NjA5NjViY2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggYTVhNTA3ZWQyZTkuLmUz
MWIxMzRjMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0
cnUKICAgICBVU0VTKE9wSXNVbmRlZmluZWRPck51bGwsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElz
Qm9vbGVhbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNOdW1iZXIsIG9wZXJhbmQpCisgICAgVVNF
UyhPcElzQmlnSW50LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc09iamVjdCwgb3BlcmFuZCkKICAg
ICBVU0VTKE9wSXNPYmplY3RPck51bGwsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzQ2VsbFdpdGhU
eXBlLCBvcGVyYW5kKQpAQCAtNDI2LDkgKzQyNywxMCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCiAgICAgREVGUyhPcElz
RW1wdHksIGRzdCkKICAgICBERUZTKE9wSXNVbmRlZmluZWQsIGRzdCkKLSAgICBVU0VTKE9wSXNV
bmRlZmluZWRPck51bGwsIGRzdCkKKyAgICBERUZTKE9wSXNVbmRlZmluZWRPck51bGwsIGRzdCkK
ICAgICBERUZTKE9wSXNCb29sZWFuLCBkc3QpCiAgICAgREVGUyhPcElzTnVtYmVyLCBkc3QpCisg
ICAgREVGUyhPcElzQmlnSW50LCBkc3QpCiAgICAgREVGUyhPcElzT2JqZWN0LCBkc3QpCiAgICAg
REVGUyhPcElzT2JqZWN0T3JOdWxsLCBkc3QpCiAgICAgREVGUyhPcElzQ2VsbFdpdGhUeXBlLCBk
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IGIzOTE1MmRlNjQwLi5kNGFjYWY4OTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlICJJc29DZWxs
U2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgot
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAppbmRleCAzMmY1ODhkYmZmNi4uM2VlNjFmOTNj
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NCwxMiArNDQsMTQgQEAgZW51bSBEYXRhRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGF0YUZv
cm1hdEJvb2xlYW4gPSA1LAogICAgIERhdGFGb3JtYXRDZWxsID0gNiwKICAgICBEYXRhRm9ybWF0
U3RvcmFnZSA9IDcsCi0gICAgRGF0YUZvcm1hdEpTID0gOCwKKyAgICBEYXRhRm9ybWF0QmlnSW50
MzIgPSA4LCAvLyBGSVhNRTogY3VycmVudGx5IHVudXNlZAorICAgIERhdGFGb3JtYXRKUyA9IDE2
LAogICAgIERhdGFGb3JtYXRKU0ludDMyID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMy
LAogICAgIERhdGFGb3JtYXRKU0RvdWJsZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3Vi
bGUsCiAgICAgRGF0YUZvcm1hdEpTQ2VsbCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxs
LAogICAgIERhdGFGb3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9v
bGVhbiwKLSAgICAKKyAgICBEYXRhRm9ybWF0SlNCaWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERh
dGFGb3JtYXRCaWdJbnQzMiwKKwogICAgIC8vIE1hcmtlciBkZWxpbWluYXRpbmcgb3JkaW5hcnkg
ZGF0YSBmb3JtYXRzIGFuZCBPU1Itb25seSBkYXRhIGZvcm1hdHMuCiAgICAgRGF0YUZvcm1hdE9T
Uk1hcmtlciA9IDMyLCAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCA3
MDFjMzMwODliOS4uODMwZjZkNjc1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Niw3ICs0Niw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVl
KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAordm9pZCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQs
IEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUp
IGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICBjYXNlIE5vbmU6CkBAIC02Nywx
MiArNjcsMTIgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0
VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICB9CiAgICAgICAgIAogICAg
IGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LnVuYXJ5QXJpdGhQcm9m
aWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7
CisgICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVn
cywgdGVtcEdQUiwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIEJp
bmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5l
bWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAg
ICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIHRl
bXBHUFIsIG1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oCmluZGV4IGU4YjY1ZWFkNDZlLi4zYWJhMWEzMmEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVJbmRl
eC5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1
ZGUgIlRhZ1JlZ2lzdGVyc01vZGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgzLDcgKzg0
LDggQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBtX2tpbmQgIT0gTm9uZTsgfQogCi0gICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0Nh
bGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MpIGNvbnN0OworICAgIC8vIFRoZSB0ZW1wb3JhcnkgcmVn
aXN0ZXIgaXMgb25seSBuZWVkZWQgb24gNjQtYml0cyBidWlsZHMgKGZvciB0ZXN0aW5nIEJpZ0lu
dDMyKS4KKyAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKSBj
b25zdDsKICAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXgg
MTA1M2JhNTJiNTQuLjc3MWM3OWI4NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzksMTEgKzIzOSw2IEBAIHZvaWQg
ZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQogICAgICAgICAgICAgc3RyT3V0LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKLQotICAgICAgICBpZiAodmFsdWUgJiBTcGVjQmln
SW50KQotICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVlID09
IFNwZWNJbnQzMk9ubHkpCkBAIC0yNzgsNyArMjczLDIzIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9u
KFByaW50U3RyZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KLSAgICAKKworICAgIGlmICgo
dmFsdWUgJiBTcGVjQmlnSW50KSA9PSBTcGVjQmlnSW50KQorICAgICAgICBzdHJPdXQucHJpbnQo
IkJpZ0ludCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHZh
bHVlICYgU3BlY0JpZ0ludDMyKQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQzMiIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlm
ICh2YWx1ZSAmIFNwZWNIZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFw
QmlnSW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAg
fQorI2VuZGlmCisKICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQogICAgICAg
ICBzdHJPdXQucHJpbnQoIkRvdWJsZUltcHVyZU5hTiIpOwogICAgIApAQCAtNDMxLDcgKzQ0Miw3
IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbykKICAgICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7CiAgICAgCiAgICAgaWYg
KGNsYXNzSW5mbyA9PSBKU0JpZ0ludDo6aW5mbygpKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0lu
dDsKKyAgICAgICAgcmV0dXJuIFNwZWNIZWFwQmlnSW50OwogCiAgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgICAgIHJldHVybiBTcGVjRmluYWxPYmplY3Q7
CkBAIC00OTksOCArNTEwLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0
dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICByZXR1cm4gU3BlY1N0cmluZzsKICAg
ICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAg
ICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBCaWdJbnRUeXBlKQotICAgICAgICByZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBpZiAoc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSkKKyAgICAgICAgcmV0
dXJuIFNwZWNIZWFwQmlnSW50OwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IERlcml2ZWRBcnJheVR5cGUpCiAgICAgICAgIHJldHVybiBTcGVjRGVyaXZlZEFycmF5Owog
ICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8o
KSk7CkBAIC01MzYsNiArNTQ3LDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFs
dWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7
CiAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAgICAgfQorICAgIGlmICh2YWx1
ZS5pc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBTcGVjQmlnSW50MzI7CiAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5h
c0NlbGwoKSk7CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQpAQCAtNTk1LDggKzYwOCw4IEBA
IE9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBlPiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlIHR5
cGUpCiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIGNhc2UgU3ltYm9sVHlwZToKICAg
ICAgICAgcmV0dXJuIFNwZWNTeW1ib2w7Ci0gICAgY2FzZSBCaWdJbnRUeXBlOgotICAgICAgICBy
ZXR1cm4gU3BlY0JpZ0ludDsKKyAgICBjYXNlIEhlYXBCaWdJbnRUeXBlOgorICAgICAgICByZXR1
cm4gU3BlY0hlYXBCaWdJbnQ7CiAgICAgY2FzZSBBcnJheVR5cGU6CiAgICAgICAgIHJldHVybiBT
cGVjQXJyYXk7CiAgICAgY2FzZSBEZXJpdmVkQXJyYXlUeXBlOgpAQCAtNjMyLDYgKzY0NSwxMCBA
QCBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1
bGF0aW9ucyhTcGVjdWxhdGVkVHlwZSB0eQogCiAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQog
ICAgICAgICB0eXBlIHw9IFNwZWNTdHJpbmc7CisKKyAgICBpZiAodHlwZSAmIFNwZWNCaWdJbnQp
CisgICAgICAgIHR5cGUgfD0gU3BlY0JpZ0ludDsKKwogICAgIHJldHVybiB0eXBlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4
IDk0NjU4YjA5NmJmLi45ZTM1NzFmYjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OCwxMiArOTgsMTQgQEAgc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMXVsbCA8PAogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzOTsgLy8gSXQncyBkZWZpbml0
ZWx5IGVpdGhlciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFu
IHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwg
b3IgVW5kZWZpbmVkLgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0MDsgLy8gSXQncyBkZWZpbml0
ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDE7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEJpZ0ludC4KLXN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0RhdGFWaWV3T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTRGF0YVZpZXcuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0
ZWRUeXBlIFNwZWNIZWFwQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQx
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCaWdJbnQgdGhhdCBpcyBhbGxvY2F0ZWQgb24gdGhlIGhl
YXAKK3N0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0JpZ0ludDMyICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHNtYWxs
IEJpZ0ludCB0aGF0IGlzIGlubGluZSB0aGUgSlNWYWx1ZQorc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjQmlnSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Jp
Z0ludDMyIHwgU3BlY0hlYXBCaWdJbnQ7CitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNEYXRhVmlld09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQzOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0RhdGFWaWV3Lgogc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY1N0cmluZyB8
IFNwZWNTeW1ib2wgfCBTcGVjQnl0ZWNvZGVOdW1iZXIgfCBTcGVjTWlzYyB8IFNwZWNCaWdJbnQ7
IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1ZS4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNGaW5h
bE9iamVjdCB8IFNwZWNBcnJheSB8IFNwZWNGdW5jdGlvbiB8IFNwZWNUeXBlZEFycmF5VmlldyB8
IFNwZWNEaXJlY3RBcmd1bWVudHMgfCBTcGVjU2NvcGVkQXJndW1lbnRzIHwgU3BlY1N0cmluZ09i
amVjdCB8IFNwZWNSZWdFeHBPYmplY3QgfCBTcGVjRGF0ZU9iamVjdCB8IFNwZWNQcm9taXNlT2Jq
ZWN0IHwgU3BlY01hcE9iamVjdCB8IFNwZWNTZXRPYmplY3QgfCBTcGVjV2Vha01hcE9iamVjdCB8
IFNwZWNXZWFrU2V0T2JqZWN0IHwgU3BlY1Byb3h5T2JqZWN0IHwgU3BlY0Rlcml2ZWRBcnJheSB8
IFNwZWNPYmplY3RPdGhlciB8IFNwZWNEYXRhVmlld09iamVjdDsgLy8gQml0bWFzayB1c2VkIGZv
ciB0ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25z
dGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNDZWxsT3RoZXIg
fCBTcGVjQmlnSW50OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCi1zdGF0aWMgY29uc3Rl
eHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUg
YW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91Ymxl
SW1wdXJlTmFOLgorc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVj
U3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8IFNwZWNIZWFwQmlnSW50OyAvLyBJdCdzIGRlZmluaXRl
bHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9w
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCaWdJbnQzMiB8IFNw
ZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92
ZSwgZXhjZXB0IGZvciBTcGVjSW50NTJPbmx5IGFuZCBTcGVjRG91YmxlSW1wdXJlTmFOLgogc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAg
ICAgICAgICAgID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2Yg
dGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVO
YU4uIENvcnJlc3BvbmRzIHRvIHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2Nh
bC4KIHN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFNwZWNCeXRlY29kZVRvcCB8IFNwZWNGdWxsTnVtYmVyOyAvLyBJ
dCBjYW4gYmUgYW55dGhpbmcgdGhhdCBieXRlY29kZSBjb3VsZCBzZWUgcGx1cyBleG90aWMgZW5j
b2RpbmdzIG9mIG51bWJlcnMuCiAKQEAgLTE5NSw5ICsxOTcsMTkgQEAgaW5saW5lIGJvb2wgaXNT
eW1ib2xTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY1N5bWJvbDsKIH0KIAoraW5saW5lIGJvb2wgaXNCaWdJbnQzMlNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQmlnSW50MzI7
Cit9CisKK2lubGluZSBib29sIGlzSGVhcEJpZ0ludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSGVhcEJpZ0ludDsKK30KKwogaW5s
aW5lIGJvb2wgaXNCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gdmFsdWUgPT0gU3BlY0JpZ0ludDsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFs
dWUgJiBTcGVjQmlnSW50KSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIGJvb2wgaXNBcnJheVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4ZmVkZTYy
YjUzMC4uYzE5ZTYxYzUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzAzLDcgKzE3MDMsMTEg
QEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChPcHRpb25zOjp1c2VCaWdJbnQoKSAmJiB2YWx1ZSA9PSAiYmlnaW50IikgewogICAgICAgICAg
ICAgICAgIHJld2luZCgpOwotICAgICAgICAgICAgICAgIE9wSXNDZWxsV2l0aFR5cGU6OmVtaXQo
dGhpcywgZHN0LCBvcC5tX3ZhbHVlLCBCaWdJbnRUeXBlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgICAgICAgICAgT3BJc0JpZ0ludDo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFsdWUpOwor
I2Vsc2UKKyAgICAgICAgICAgICAgICBPcElzQ2VsbFdpdGhUeXBlOjplbWl0KHRoaXMsIGRzdCwg
b3AubV92YWx1ZSwgSGVhcEJpZ0ludFR5cGUpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gIm9iamVj
dCIpIHsKQEAgLTI5MTEsNyArMjkxNSw3IEBAIEpTVmFsdWUgQnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ4CiAgICAg
cmV0dXJuIG1fYmlnSW50TWFwLmVuc3VyZShCaWdJbnRNYXBFbnRyeShpZGVudGlmaWVyLmltcGwo
KSwgcmFkaXgsIHNpZ24pLCBbJl0gewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSgpKTsKICAgICAgICAgYXV0byBwYXJzZUludFNpZ24gPSBzaWduID8gSlNCaWdJ
bnQ6OlBhcnNlSW50U2lnbjo6U2lnbmVkIDogSlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWdu
ZWQ7Ci0gICAgICAgIEpTQmlnSW50KiBiaWdJbnRJbk1hcCA9IEpTQmlnSW50OjpwYXJzZUludChu
dWxscHRyLCB2bSgpLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwgSlNCaWdJbnQ6OkVycm9y
UGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIHBhcnNlSW50U2lnbik7CisgICAgICAgIEpTVmFs
dWUgYmlnSW50SW5NYXAgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0oKSwgaWRlbnRp
Zmllci5zdHJpbmcoKSwgcmFkaXgsIEpTQmlnSW50OjpFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNl
cHRpb25zLCBwYXJzZUludFNpZ24pOwogICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKGJpZ0ludEluTWFwKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDcxZTlhNWYzZGYzLi4zOTdkZGRjN2U1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA5Niw3ICsx
MDk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFz
aE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFw
ID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhh
c2g+OwotICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRN
YXBFbnRyeSwgSlNCaWdJbnQqPjsKKyAgICAgICAgdXNpbmcgSWRlbnRpZmllckJpZ0ludE1hcCA9
IEhhc2hNYXA8QmlnSW50TWFwRW50cnksIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3JTZXQgPSBIYXNoU2V0PFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3I+PjsKICAgICAgICAgdXNpbmcgVGVtcGxhdGVEZXNjcmlwdG9yTWFwID0gSGFzaE1hcDx1aW50
NjRfdCwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqLCBXVEY6OkludEhhc2g8dWludDY0X3Q+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCBmNjQ4MDhjNzlmNi4uMjIxYTE1NTc3OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3Iu
aCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgog
I2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCkBA
IC0yMTUsNyArMjE0LDcgQEAgaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHko
Vk0mIHZtLCBFQ01BTW9kZSBlY21hTW9kZSwgQWJzdHJhY3RWYWx1ZSYKICAgICAgICAgYm9vbCBv
dmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKICAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJl
LmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAg
ICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNT
RVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUu
dHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkgPT0gQmlnSW50VHlwZSk7CisgICAg
ICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlwZSgpID09IFN0cmluZ1R5
cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBIZWFwQmln
SW50VHlwZSk7CiAgICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlzU3RyaWN0KCkpCiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBoZXJlIHNpbmNlIGVpdGhlcjoK
QEAgLTUwMyw3ICs1MDIsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
QmlnSW50MzJVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBzZXRUeXBlRm9y
Tm9kZShub2RlLCBTcGVjQmlnSW50MzIpOworI2Vsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNIZWFwQmlnSW50KTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IEFueUJpZ0ludFVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZCgpOwpAQCAtNTMzLDcgKzU0MCwxNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICBpZiAoaGFuZGxlQ29uc3RhbnRCaW5hcnlCaXR3aXNlT3Aobm9kZSkpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVz
ZSkKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdXNlIG9mIGJpbmFyeVVzZUtpbmQgbWVhbnMgdGhh
dCB3ZSBjYW5ub3Qgc3BlY2lhbGl6ZSB0byAoZm9yIGV4YW1wbGUpIGEgSGVhcEJpZ0ludCBsZWZ0
LW9wZXJhbmQgYW5kIGEgQmlnSW50MzIgcmlnaHQtb3BlcmFuZC4KKyAgICAgICAgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQzMik7CisjZWxzZQorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICB9
IGVsc2UgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQorICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAgICBlbHNl
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlKQogICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC03MjMsMTEgKzczOSwxNCBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogCiAgICAgY2FzZSBWYWx1ZVN1YjoKICAgICBjYXNlIFZhbHVlQWRkOiB7Ci0g
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IFVudHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSk7Ci0gICAg
ICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAo
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRU
eXBlRm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jp
Z0ludCk7CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBu
b2RlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgICAgICBj
bG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBkbyB3ZSByZWFsbHkgbmVlZCBT
cGVjU3RyaW5nIGhlcmUgZm9yIFZhbHVlU3ViPyBJdCBzZWVtcyBsaWtlIHdlIG9ubHkgbmVlZCBp
dCBmb3IgVmFsdWVBZGQuCiAgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjU3Ry
aW5nIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CkBAIC04ODcsNiArOTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgVmFsdWVOZWdhdGU6IHsKKyAgICAgICAgLy8gRklYTUU6
IHdlIGNvdWxkIGRvIG11Y2ggc21hcnRlciB0aGluZ3MgZm9yIEJpZ0ludHMsIHNlZSBWYWx1ZUFk
ZC9WYWx1ZVN1Yi4KICAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpOwogICAgICAgICBicmVh
azsKQEAgLTk1OSw3ICs5NzksMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9k
ZSwgdHlwZU9mRG91YmxlSW5jT3JEZWMoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaWdJbnRVc2U6CisgICAgICAgIGNh
c2UgSGVhcEJpZ0ludFVzZToKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNI
ZWFwQmlnSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVz
ZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CkBAIC05NzUsNyArOTk5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNW
YWx1ZSBjaGlsZFkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwogICAgICAgICBp
ZiAoY2hpbGRYICYmIGNoaWxkWSAmJiBjaGlsZFguaXNOdW1iZXIoKSAmJiBjaGlsZFkuaXNOdW1i
ZXIoKSkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIGBkaWRGb2xkQ2xvYmJlcldv
cmxkYCBoZXJlIGJlY2F1c2UgdGhpcyBwYXRoIGlzIG9ubHkgcG9zc2libGUKLSAgICAgICAgICAg
IC8vIHdoZW4gbm9kZS0+dXNlS2luZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBCaWdJ
bnRVc2UsIGNoaWxkcmVuIHdpbGwgYmUKKyAgICAgICAgICAgIC8vIHdoZW4gbm9kZS0+dXNlS2lu
ZCBpcyBVbnR5cGVkVXNlLiBJbiB0aGUgY2FzZSBvZiBBbnlCaWdJbnRVc2Ugb3IgZnJpZW5kcywg
Y2hpbGRyZW4gd2lsbCBiZQogICAgICAgICAgICAgLy8gY2xlYXJlZCBieSBgQWJzdHJhY3RJbnRl
cnByZXRlcjo6ZXhlY3V0ZUVmZmVjdHNgLgogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3Js
ZCgpOwogICAgICAgICAgICAgLy8gT3VyIGJveGluZyBzY2hlbWUgaGVyZSBtYXRjaGVzIHdoYXQg
d2UgZG8gaW4gb3BlcmF0aW9uVmFsdWVQb3cuCkBAIC05ODMsNyArMTAwNyw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKQorICAgICAgICBpZiAobm9k
ZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpCisgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjSGVhcEJpZ0ludCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmJp
bmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09
IEJpZ0ludDMyVXNlKQogICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0JpZ0lu
dCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkBAIC05OTMs
NyArMTAxOSwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIH0KIAogICAgIGNhc2Ug
VmFsdWVNdWw6IHsKLSAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRV
c2UpCisgICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBjb2RlIG5vdCBzaGFyZWQgd2l0aCBW
YWx1ZVN1Yj8KKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50
VXNlKQorICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOwor
ICAgICAgICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8
IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGNsb2JiZXJXb3JsZCgpOwpAQCAtMTA1Nyw3ICsxMDg2LDkgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50RGl2T3Aobm9kZSkpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludFVz
ZSkKKyAgICAgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKQor
ICAgICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0hlYXBCaWdJbnQpOworICAgICAg
ICBlbHNlIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQW55QmlnSW50VXNlIHx8IG5vZGUt
PmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkKICAgICAgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2Ji
ZXJXb3JsZCgpOwpAQCAtMTM4MSw2ICsxNDEyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNh
c2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdl
cjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNPYmplY3RPck51bGw6CkBAIC0xNDA5
LDYgKzE0NDEsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgY2FzZSBJ
c051bWJlcjoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hp
bGQudmFsdWUoKS5pc051bWJlcigpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIElzQmlnSW50OgorICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQmlnSW50KCkpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihOdW1iZXJDb25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1w
bChjaGlsZC52YWx1ZSgpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2Myw3ICsx
NTk4LDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElzQmlnSW50OgorICAgICAg
ICAgICAgaWYgKCEoY2hpbGQubV90eXBlICYgflNwZWNCaWdJbnQpKSB7CisgICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAgICBj
b25zdGFudFdhc1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIFNwZWNCaWdJbnQpKSB7Cisg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CisgICAg
ICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogaWYgdGhlIFNwZWN1bGF0
ZWRUeXBlIGluZm9ybXMgdXMgdGhhdCB3ZSB3b24ndCBoYXZlIGEgQmlnSW50MzIgKG9yIHRoYXQg
d2Ugd29uJ3QgaGF2ZSBhIEhlYXBCaWdJbnQpLCB0aGVuIHdlIGNhbiB0cmFuc2Zvcm0gdGhpcyBu
b2RlIGludG8gYSBJc0NlbGxXaXRoVHlwZShIZWFwQmlnSW50VHlwZSkgKG9yIGEgaHlwb3RoZXRp
Y2FsIElzQmlnSW50MzIgbm9kZSkuCiAKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgICAgIGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVj
SW50MzJPbmx5KSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVh
bih0cnVlKSk7CkBAIC0xOTM3LDEzICsxOTg3LDE0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogd2h5IGlzIHRo
aXMgY2hlY2sgaGVyZSwgYW5kIG5vdCBsYXRlciAoYWZ0ZXIgdGhlIHR5cGUtYmFzZWQgcmVwbGFj
ZW1lbnQgYnkgZmFsc2UpLgorICAgICAgICAvLyBTYWFtIHNlZW1zIHRvIGFncmVlIHRoYXQgdGhl
IHR3byBjaGVja3MgY291bGQgYmUgc3dpdGNoZWQsIEknbGwgdHJ5IHRoYXQgaW4gYSBzZXBhcmF0
ZSBwYXRjaAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKSB7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIGNvbmRpdGlvbiB3aGVuIGludHJv
ZHVjaW5nIEJpZ0ludCB0byBKU0MuCi0gICAgICAgICAgICBhdXRvIGlzTm9uU3RyaW5nQ2VsbENv
bnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCk7CisgICAgICAgICAgICBh
dXRvIGlzTm9uU3RyaW5nQW5kTm9uQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFs
dWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkgJiYg
IXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAgICAg
fTsKIAotICAgICAgICAgICAgaWYgKGlzTm9uU3RyaW5nQ2VsbENvbnN0YW50KGxlZnQpIHx8IGlz
Tm9uU3RyaW5nQ2VsbENvbnN0YW50KHJpZ2h0KSkgeworICAgICAgICAgICAgaWYgKGlzTm9uU3Ry
aW5nQW5kTm9uQmlnSW50Q2VsbENvbnN0YW50KGxlZnQpIHx8IGlzTm9uU3RyaW5nQW5kTm9uQmln
SW50Q2VsbENvbnN0YW50KHJpZ2h0KSkgewogICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hv
dWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgIHNldE5vbkNlbGxU
eXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbGVhbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xOTU4LDE5ICsyMDA5LDI0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBub2RlLT5jaGlsZDIoKSkg
ewotICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAot
ICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkgfHwKLSAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8Ci0gICAgICAg
ICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwKLSAgICAgICAgICAg
ICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKLSAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSB8fAotICAgICAgICAgICAgICAgIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fAotICAgICAgICAgICAg
ICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fAotICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5n
VmFyVXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJp
bmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKSB8fAotICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpIHx8Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBJcyB0aGVyZSBhbnkgY2FzZSBub3QgaW52b2x2aW5nIE5hTiB3aGVyZSB4ID09
PSB4IGlzIG5vdCBndWFyYW50ZWVkIHRvIHJldHVybiB0cnVlPworICAgICAgICAgICAgLy8gSWYg
bm90IEkgbWlnaHQgc2xpZ2h0bHkgc2ltcGxpZnkgdGhhdCBjaGVjay4KKyAgICAgICAgICAgIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkKKyAgICAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlz
QmluYXJ5VXNlS2luZChTdHJpbmdVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChTeW1ib2xVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE9iamVjdFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTWlzY1VzZSwgVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkKKyAgICAgICAg
ICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFyVXNlLCBTdHJpbmdJ
ZGVudFVzZSkKKyAgICAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5n
VXNlLCBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlLCBTdHJpbmdVc2UpCisgICAgICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKQorICAgICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggMDZiMTQ3ODczYWEuLjM0ZGEzYjFmYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTcyMiw2ICs1NzIyLDE3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9pc19udW1iZXIpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBv
cF9pc19iaWdfaW50OiB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSXNCaWdJbnQsIHZhbHVlKSk7CisgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9pc19iaWdfaW50KTsKKyNlbHNlCisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX2lzX2NlbGxfd2l0aF90eXBlOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwogICAgICAgICAgICAgTm9k
ZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV9vcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA2MDAzMzJmMTkwZi4uNjUzMjlmNWM0
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
QEAgLTE0OSw2ICsxNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3Bf
aXNfdW5kZWZpbmVkX29yX251bGw6CiAgICAgY2FzZSBvcF9pc19ib29sZWFuOgogICAgIGNhc2Ug
b3BfaXNfbnVtYmVyOgorICAgIGNhc2Ugb3BfaXNfYmlnX2ludDoKICAgICBjYXNlIG9wX2lzX29i
amVjdDoKICAgICBjYXNlIG9wX2lzX29iamVjdF9vcl9udWxsOgogICAgIGNhc2Ugb3BfaXNfY2Vs
bF93aXRoX3R5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDM0NTk1MzU1YzA3Li41MGJjZmU2OTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzUsNiArMTc1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgog
ICAgIGNhc2UgSXNOdW1iZXI6CisgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoK
QEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICByZXR1
cm47CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmln
SW50MzJVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2UpIHsK
ICAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC02ODAsNyArNjgxLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAg
Y2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIGNhc2UgQmlnSW50VXNlOgorICAgICAgICBjYXNl
IEJpZ0ludDMyVXNlOgorICAgICAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIGNhc2Ug
QW55QmlnSW50VXNlOgogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKQEAgLTcwMiw3ICs3MDUsOCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgVmFsdWVQb3c6CiAgICAgY2FzZSBW
YWx1ZUJpdExTaGlmdDoKICAgICBjYXNlIFZhbHVlQml0UlNoaWZ0OgotICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMg
dXNlIG9mIHNpbmdsZS1hcmd1bWVudCBpc0JpbmFyeVVzZUtpbmQgd291bGQgcHJldmVudCB1cyBm
cm9tIHNwZWNpYWxpemluZyAoZm9yIGV4YW1wbGUpIGZvciBhIEhlYXBCaWdJbnQgbGVmdC1vcGVy
YW5kIGFuZCBhIEJpZ0ludDMyIHJpZ2h0LW9wZXJhbmQuCisgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAg
ICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKaW5kZXggYjNlNjM4NThkMWEuLjZhMWZkMDc0MDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApA
QCAtMTQ3LDE1ICsxNDcsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKS5ub2RlKCkp
LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgY2hpbGQyQ29uc3RhbnQgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgpKS52YWx1ZSgpOwogCi0gICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IHRoaXMgY29uZGl0aW9uIHdoZW4gaW50cm9k
dWNpbmcgQmlnSW50IHRvIEpTQy4KLSAgICAgICAgICAgICAgICAgICAgYXV0byBpc05vblN0cmlu
Z09yQmlnSW50Q2VsbENvbnN0YW50ID0gW10gKEpTVmFsdWUgdmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSAmJiAhdmFsdWUuaXNT
dHJpbmcoKSAmJiAhdmFsdWUuaXNCaWdJbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBp
c05vblN0cmluZ0FuZE5vbkJpZ0ludENlbGxDb25zdGFudCA9IFtdIChKU1ZhbHVlIHZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkg
JiYgIXZhbHVlLmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzSGVhcEJpZ0ludCgpOwogICAgICAgICAg
ICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChpc05vblN0cmluZ09yQmln
SW50Q2VsbENvbnN0YW50KGNoaWxkMUNvbnN0YW50KSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNOb25TdHJpbmdBbmROb25CaWdJbnRDZWxsQ29uc3RhbnQoY2hpbGQxQ29uc3RhbnQpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Db21wYXJlRXFQdHIobV9n
cmFwaC5mcmVlemVTdHJvbmcoY2hpbGQxQ29uc3RhbnQuYXNDZWxsKCkpLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc05vblN0cmluZ09yQmlnSW50Q2VsbENvbnN0YW50KGNoaWxk
MkNvbnN0YW50KSkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTm9uU3RyaW5n
QW5kTm9uQmlnSW50Q2VsbENvbnN0YW50KGNoaWxkMkNvbnN0YW50KSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ29tcGFyZUVxUHRyKG1fZ3JhcGguZnJlZXplU3Ry
b25nKGNoaWxkMkNvbnN0YW50LmFzQ2VsbCgpKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBmNTFlNGUyMGZiOC4uZTY0
MDlhMzBkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHR3Jh
cGguaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE0Nyw2ICsxNDYsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9y
TnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2Ug
SXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoK
ICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggZTNhYmVhN2M3MWEuLmFiN2JhOTk2YzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDIsMTQgKzIwMiwz
NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQzMik7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFw
QmlnSW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5nIGRvZXMg
bm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBieSB2bSks
IGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiB3ZSBtaWdodCBvcHRpbWl6ZSBpbmMvZGVjIHRvIGEgc3BlY2lhbGl6ZWQgZnVuY3Rp
b24gY2FsbCBpbnN0ZWFkIGluIHRoYXQgY2FzZS4KKyAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cChvcCA9PSBJbmMgPyBWYWx1ZUFkZCA6IFZhbHVlU3ViKTsKKyAgICAgICAgICAgICAgICBub2Rl
Q29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKG1faW5kZXhJbkJsb2NrLCBT
cGVjSGVhcEJpZ0ludCwgSlNDb25zdGFudCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obV9ncmFwaC5m
cmVlemUodm0oKS5oZWFwQmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQyKEVkZ2Uobm9kZUNvbnN0YW50T25lKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICAgICAgLy8gSGVhcEJpZ0ludHMgYXJlIGNlbGxzLCBzbyB0aGUgZGVmYXVsdCBvZiBO
b2RlUmVzdWx0SlMgaXMgZ29vZCBoZXJlCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAg
fSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkgewor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVT
dWIpOworICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNCaWdJbnQzMiwgSlNDb25zdGFudCwgbm9kZS0+
b3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMy
LCAxKSkpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5zZXRDaGlsZDIoRWRnZShu
b2RlQ29uc3RhbnRPbmUpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG9mIE5vZGVSZXN1
bHRKUyBpcyBnb29kIGVub3VnaCBmb3Igbm93LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBj
b25zaWRlciBoYXZpbmcgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uIGZvciBzbWFsbCBCaWdJbnRz
IGluc3RlYWQuCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXpp
bmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2luY2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZl
IGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29tcGlsZSBvdGhlcndpc2UuCisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IHdlIG1pZ2h0IG9wdGltaXplIGluYy9kZWMgdG8gYSBzcGVjaWFsaXpl
ZCBmdW5jdGlvbiBjYWxsIGluc3RlYWQgaW4gdGhhdCBjYXNlLgogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldE9wKG9wID09IEluYyA/IFZhbHVlQWRkIDogVmFsdWVTdWIpOwotICAgICAgICAgICAg
ICAgIG5vZGVDb25zdGFudE9uZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleElu
QmxvY2ssIFNwZWNCaWdJbnQsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3Jh
cGguZnJlZXplKHZtKCkuYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAg
ICAgbm9kZUNvbnN0YW50T25lID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShtX2luZGV4SW5C
bG9jaywgU3BlY0JpZ0ludDMyLCBKU0NvbnN0YW50LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZShKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDEpKSkpOwogICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuLnNldENoaWxkMihFZGdlKG5vZGVDb25zdGFudE9uZSkpOwot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAg
ICAgICAgICAvLyBCaWdJbnRzIGFyZSBjdXJyZW50bHkgY2VsbHMsIHNvIHRoZSBkZWZhdWx0IG9m
IE5vZGVSZXN1bHRKUyBpcyBnb29kIGhlcmUKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQg
b2YgTm9kZVJlc3VsdEpTIGlzIGdvb2QgaGVyZQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUy
KCkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMgPyBBcml0aEFkZCA6
IEFyaXRoU3ViKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNo
ZWNrT3ZlcmZsb3cpOwpAQCAtMjM1LDEyICsyNTUsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgRWRnZSYgY2hpbGQy
ID0gbm9kZS0+Y2hpbGQyKCk7CiAKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFu
eUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVz
ZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKKyNlbmRpZgorCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
VW50eXBlZEZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDEp
OwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQyKTsKQEAgLTI2OCw4
ICsyOTYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgogICAgICAgICBj
YXNlIFZhbHVlQml0QW5kOiB7CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
QmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0lu
dDMyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJ
bnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdl
PEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIH0KKyNl
bHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2Vu
ZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzEzLDcg
KzM1NCwxNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBpZiAob3BlcmFuZEVkZ2Uubm9kZSgp
LT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFy
RmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRV
c2U+KG9wZXJhbmRFZGdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgICAgICBp
ZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKQorICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihvcGVyYW5kRWRnZSk7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVIZWFw
QmlnSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4ob3Bl
cmFuZEVkZ2UpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxBbnlCaWdJbnRVc2U+KG9wZXJhbmRFZGdlKTsKKyNlbHNlCisgICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihvcGVyYW5kRWRnZSk7CisjZW5kaWYKICAgICAgICAgICAg
IH0gZWxzZSBpZiAob3BlcmFuZEVkZ2Uubm9kZSgpLT5zaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9y
Qml0T3BzKCkpCiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihvcGVyYW5kRWRn
ZSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ1OCw5ICs1MDksMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVCaWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQxKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJpZ0ludFVzZT4oY2hpbGQyKTsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVIZWFwQmlnSW50KGNoaWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihjaGlsZDEpOworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4oY2hpbGQyKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGNo
aWxkMS5ub2RlKCksIGNoaWxkMi5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNl
PihjaGlsZDIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVC
aWdJbnQoY2hpbGQxLm5vZGUoKSwgY2hpbGQyLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFu
eUJpZ0ludFVzZT4oY2hpbGQyKTsKKyNlbmRpZgogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxVbnR5cGVkVXNlPihjaGlsZDIpOwpAQCAtNTQ2LDggKzYwNSwyMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCiAgICAg
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZC5ub2RlKCks
IHJpZ2h0Q2hpbGQubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKGxlZnRDaGlsZC5ub2RlKCksIHJpZ2h0Q2hpbGQu
bm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IH0KKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5j
aGlsZDIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
NTg4LDEyICs2NjAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGxlZnRDaGlsZCA9
IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNo
aWxkMigpOwogCisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0lu
dChsZWZ0Q2hpbGQubm9kZSgpLCByaWdodENoaWxkLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KGxlZnRDaGlsZCk7CisgICAgICAgICAgICAgICAgZml4
RWRnZTxIZWFwQmlnSW50VXNlPihyaWdodENoaWxkKTsKKyAgICAgICAgICAgICAgICBub2RlLT5j
bGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorI2lmIFVTRShCSUdJTlQzMikKICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KGxlZnRDaGlsZCk7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8QW55QmlnSW50VXNlPihsZWZ0Q2hpbGQpOworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8QW55QmlnSW50VXNlPihyaWdodENoaWxkKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVh
ckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAg
ICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRl
VW50eXBlZEZvckFyaXRobWV0aWMobGVmdENoaWxkLm5vZGUoKSwgcmlnaHRDaGlsZC5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihsZWZ0Q2hpbGQpOwpAQCAt
NjU3LDEyICs3MzcsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVmFs
dWVQb3c6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkgeworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjaWYgVVNFKEJJR0lOVDMyKQogICAgICAgICAg
ICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11
c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisjZW5k
aWYKIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0
aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MjU0OCw2ICsyNjM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVs
bDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAg
ICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgSXNPYmplY3RPck51bGw6CiAgICAgICAg
IGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CkBA
IC0yODg5LDcgKzI5NzgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQo
KSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTI5NjIsNyArMzA2MCwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgLy8gSWYgdGhl
IHByZWRpY3Rpb24gb2YgdGhlIGNoaWxkIGlzIEJpZ0ludCwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0
IFRvTnVtZXJpYyB0byBJZGVudGl0eSwgc2luY2UgaXQgY2FuIG9ubHkgcmV0dXJuIGEgQmlnSW50
IHdoZW4gZmVkIGEgQmlnSW50LgogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PEJpZ0ludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
CisjZWxzZQorICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CisjZW5kaWYKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0NTYsMTMgKzM1NjMsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6
CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJpZ0ludFVzZToKKyAgICAg
ICAgY2FzZSBIZWFwQmlnSW50VXNlOgogICAgICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAg
ICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGlmIChhbHdh
eXNVbmJveFNpbXBsZVByaW1pdGl2ZXMoKQogICAgICAgICAgICAgICAgIHx8IGlzQ2VsbFNwZWN1
bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0
YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVl
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogd2hhdCBzaG91bGQgd2Ug
ZG8gYWJvdXQgQmlnSW50MzJVc2UgYW5kIEFueUJpZ0ludFVzZSA/CisgICAgICAgIC8vIEFsc28g
bW9yZSBicm9hZGx5LCB3aGF0IGFib3V0IGFsbCBvZiB0aGUgVXNlS2luZHMgd2hpY2ggYXJlIG5v
dCBsaXN0ZWQgaW4gdGhhdCBzd2l0Y2g/CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMzk3NiwxMiArNDA4NSwyNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSGVhcEJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUo
KSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhD
b21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIo
KS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewogICAgICAgICAgICAgZml4RWRnZTxT
dHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZml4RWRnZTxTdHJp
bmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAppbmRleCA5NDRkMjU2YWY1ZC4uYWQ4NjFhZDM2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBGcm96ZW5WYWx1ZSog
R3JhcGg6OmJvdHRvbVZhbHVlTWF0Y2hpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKQogICAgICAgICByZXR1cm4gZnJlZXplKGpzTnVtYmVyKDApKTsKIAogICAgIGlmIChz
cGVjdWxhdGlvbkNvbnRhaW5zKHByZWRpY3Rpb24sIFNwZWNCaWdJbnQpKQotICAgICAgICByZXR1
cm4gZnJlZXplKG1fdm0uYmlnSW50Q29uc3RhbnRPbmUuZ2V0KCkpOworICAgICAgICByZXR1cm4g
ZnJlZXplKG1fdm0uaGVhcEJpZ0ludENvbnN0YW50T25lLmdldCgpKTsKIAogICAgIGlmIChzcGVj
dWxhdGlvbkNvbnRhaW5zKHByZWRpY3Rpb24sIFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkKICAg
ICAgICAgcmV0dXJuIGZyZWV6ZShtX3ZtLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDQyNzk0Yzc5Y2NhLi44
OTJlNWRjYzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdOb2Rl
LmgiCiAjaW5jbHVkZSAiREZHTnVsbEFic3RyYWN0U3RhdGUuaCIKLSNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCBhYmEyMWVkMzZkMy4uOWY5ODA5NTNkMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYyMiw2ICsyNjIyLDE4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7
CiAgICAgfQorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQmln
SW50MzIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQmlnSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVIZWFw
QmlnSW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0lu
dCgpCiAgICAgewpAQCAtMjgyMiw3ICsyODM0LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpICYmIG9wMi0+c2hvdWxkU3BlY3Vs
YXRlQmlnSW50KCk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRp
YyBib29sIHNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSAmJiBvcDIt
PnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBzdGF0aWMg
Ym9vbCBzaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpICYmIG9w
Mi0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpOworICAgIH0KKwogICAgIHN0YXRpYyBib29s
IHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwgTm9kZSogb3AyKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBvcDIt
PnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuaAppbmRleCA3ZTk2YTI2ODRjZS4uYjBiYTZiYjdlOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaApAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSAgICAgICAgIDB4MDAyMDAKICNkZWZpbmUgTm9kZU1heU5lZ1plcm9JbkRGRyAgICAgICAgICAg
ICAgMHgwMDQwMAogI2RlZmluZSBOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQgICAgICAweDAw
ODAwCisvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgc2VwYXJhdGUgZmxhZ3MgZm9yIEhlYXBCaWdJ
bnQgYW5kIEJpZ0ludDMyLCBjdXJyZW50bHkgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiB3aWxsIHBl
c3NpbWl6ZSB0aGluZ3MuCiAjZGVmaW5lIE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0ICAgICAgICAg
IDB4MDEwMDAKICNkZWZpbmUgTm9kZU1heUhhdmVOb25JbnRSZXN1bHQgICAgICAgICAgKE5vZGVN
YXlIYXZlRG91YmxlUmVzdWx0IHwgTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0IHwgTm9kZU1h
eUhhdmVCaWdJbnRSZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDFjZDZlNzg1YjM0Li5kZTM1
NzYyODcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzk1
LDYgKzM5NSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJ
c1VuZGVmaW5lZE9yTnVsbCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xl
YW4sIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNOdW1iZXIsIE5vZGVSZXN1bHRC
b29sZWFuKSBcCisgICAgLyogSXNCaWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMy
LiBPdGhlcndpc2Ugd2UgZW1pdCBJc0NlbGxXaXRoVHlwZSAqL1wKKyAgICBtYWNybyhJc0JpZ0lu
dCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhOdW1iZXJJc0ludGVnZXIsIE5vZGVS
ZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNPYmplY3QsIE5vZGVSZXN1bHRCb29sZWFuKSBc
CiAgICAgbWFjcm8oSXNPYmplY3RPck51bGwsIE5vZGVSZXN1bHRCb29sZWFuKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBhODUyZGJkZDliOS4uZjYzNzJh
ZGQ0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtMzgz
LDEwICszODMsMTMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAgICAgIC8v
IFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0
aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBo
b3cgdG8gcmVzdG9yZSBpdC4KICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRW
YWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAg
ICAgICAgICAgICAgLy8gV2UgYWxzbyB1c2UgdGhlIG5vdENlbGxNYXNrUmVnaXN0ZXIgYXMgdGhl
IHNjcmF0Y2ggcmVnaXN0ZXIsIGZvciB0aGUgc2FtZSByZWFzb24uCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGZpbmQgYSBsZXNzIGdyb3NzIHdheSBvZiBkb2luZyB0aGlzLCBtYXliZSB0aHJv
dWdoIGRlbGF5aW5nIHRoZXNlIG9wZXJhdGlvbnMgdW50aWwgd2UgYWN0dWFsbHkgaGF2ZSBzb21l
IHNwYXJlIHJlZ2lzdGVycyBhcm91bmQ/CisgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciksIEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1Zh
bHVlUmVncyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOworICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuZ3ByKCkpLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCBEb05vdEhhdmVUYWdSZWdp
c3RlcnMpOworICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsK
ICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgaWYgKGV4aXQubV9qc1Zh
bHVlU291cmNlLmlzQWRkcmVzcygpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lz
dGVyIHNvIHdlIGNhbiB1c2UgaXQuCkBAIC0zOTgsNyArNDAxLDcgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0
LCBjb25zdAogICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywg
c2NyYXRjaFBheWxvYWQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5s
b2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAg
ICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7CisgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoLCBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0
b3JlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRj
aFBheWxvYWQpOwpAQCAtNDA3LDEwICs0MTAsMTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhp
dChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAog
ICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwogICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1ZhbHVl
U291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlLCBJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOworICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpLCBJbnZh
bGlkR1BSUmVnKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNmVhZjcw
ZGQ5NTQuLjg2NmFjZjhhYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04OSw3ICs4OSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGlu
ZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogI2lmIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxF
KERGR19KSVQpCkBAIC0yMjQsNTYgKzIyMyw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
cHV0V2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsCiAg
ICAgYmFzZVZhbHVlLnB1dElubGluZShnbG9iYWxPYmplY3QsIGlkZW50LCBwdXRWYWx1ZSwgc2xv
dCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludE9wZXJhdGlvbiwgdHlwZW5hbWUgTnVt
YmVyT3BlcmF0aW9uPgotc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgYmluYXJ5
T3AoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaWdJbnRPcGVyYXRpb24mJiBi
aWdJbnRPcCwgTnVtYmVyT3BlcmF0aW9uJiYgbnVtYmVyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVz
c2FnZSkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVl
IG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVy
aWMgPSBvcDEudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1l
c3NhZ2UpOwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIobnVtYmVyT3AoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4KLXN0YXRpYyBB
TFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGJpdHdpc2VCaW5hcnlPcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpZ0ludE9wZXJhdGlvbiYmIGJpZ0ludE9wLCBJbnQzMk9w
ZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKTsKLQotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBvcDEudG9CaWdJbnRP
ckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBvcDIudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHRO
dW1lcmljKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGJpZ0ludE9wKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVt
ZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkpKTsKLQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2Up
OwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoaW50MzJPcChXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJpYyksIFdU
Rjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykpKSk7Ci19Ci0KIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJsZSBpbnB1dCkKIHsKICAgICBp
bnQgYXNJbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGlucHV0KTsKQEAgLTQ3Myw3MSArNDIyLDM0IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdo
dCkgLT4gSlNCaWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtYmVyT3AgPSBb
XSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJu
IGpzTW9kKGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwg
IkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0
aW9uLiIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNSZW1haW5kZXIoZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbmMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
OwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQot
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0Jp
Z0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihvcGVyYW5kTnVtZXJp
YykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KG9wZXJhbmROdW1l
cmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlICsgMSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNJbmMoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpOwotCi0gICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IG9wMS50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ob3Bl
cmFuZE51bWVyaWMpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihv
cGVyYW5kTnVtZXJpYykpKSk7Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+
KG9wZXJhbmROdW1lcmljKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZh
bHVlIC0gMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEZWMoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBK
U1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKIAotICAgIGF1dG8gb3Bl
cmFuZE51bWVyaWMgPSBvcDEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkKLSAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmJpdHdp
c2VOb3QoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KG9wZXJhbmROdW1lcmljKSkp
KTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIofldURjo6Z2V0PGludDMy
X3Q+KG9wZXJhbmROdW1lcmljKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3
aXNlTm90KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTQ2LDE1ICs0NTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
LSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBp
bnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQgJiByaWdodDsK
LSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBl
bmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICdhbmQnIG9wZXJhdGlvbi4iX3MpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC01NjMsMTUgKzQ2Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJ
bnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7Ci0gICAgfTsKLQotICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90IGxl
ZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgewotICAgICAgICByZXR1cm4gbGVmdCB8IHJp
Z2h0OwotICAgIH07Ci0KLSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwg
dm0sIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBt
aXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9z
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQml0d2lzZU9yKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTgwLDE1ICs0NzYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0WG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNC
aWdJbnQqIHsKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlWG9yKGdsb2JhbE9iamVj
dCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBbXSAoaW50MzJf
dCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0dXJuIGxlZnQg
XiByaWdodDsKLSAgICB9OwotCi0gICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBiaWdJbnRPcCwgaW50MzJPcCwgIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlv
bi4iX3MpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCaXR3aXNlWG9yKGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUJpdExTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNTk3LDE1ICs0ODUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmln
aHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGds
b2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0KLSAgICBhdXRvIGludDMyT3AgPSBb
XSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsKLSAgICAgICAgcmV0
dXJuIGxlZnQgPDwgKHJpZ2h0ICYgMHgxZik7Ci0gICAgfTsKLQotICAgIHJldHVybiBiaXR3aXNl
QmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYmlnSW50
T3AsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbGVm
dCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTFNo
aWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUJpdFJTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpAQCAtNjE0
LDE1ICs0OTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
Qml0UlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6
c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKLSAgICB9OwotCi0g
ICAgYXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50
MzJfdCB7Ci0gICAgICAgIHJldHVybiBsZWZ0ID4+IChyaWdodCAmIDB4MWYpOwotICAgIH07Ci0K
LSAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsIGJpZ0ludE9wLCBpbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIHNpZ25lZCByaWdodCBzaGlmdCBvcGVyYXRpb24uIl9zKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikKQEAgLTY2MCwxNSArNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmMKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCi0gICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCog
ewotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJp
Z2h0KTsKLSAgICB9OwotCi0gICAgYXV0byBudW1iZXJPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91
YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OwotICAg
IH07Ci0KLSAgICByZXR1cm4gYmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZE9wMSwg
ZW5jb2RlZE9wMiwgYmlnSW50T3AsIG51bWJlck9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFu
ZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRGl2KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQpA
QCAtNjc3LDE1ICs1NDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlUG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBs
ZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7Ci0gICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwotICAgIH07Ci0K
LSAgICBhdXRvIG51bWJlck9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRv
dWJsZSB7Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsKLSAg
ICB9OwotCi0gICAgcmV0dXJuIGJpbmFyeU9wKGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsIGJpZ0ludE9wLCBudW1iZXJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBh
bmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24uIl9zKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzUG93KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAogZG91YmxlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhBYnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKQEAgLTE0ODIsNyArMTMzOCw3IEBAIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWdleHAt
PnRlc3QoZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3ViQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJIZWFw
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTQ5NCw3ICsxMzUwLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9i
YWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogb3AxKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEhl
YXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE1MDUsNyArMTM2MSw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsCiAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlTm90KGdsb2JhbE9i
amVjdCwgb3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NdWxC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEhlYXBCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTE3LDcgKzEzNzMsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6bXVsdGlwbHkoZ2xvYmFsT2JqZWN0
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsKIH0KICAgICAKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25Nb2RCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1v
ZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTI5LDcgKzEz
ODUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVybiBKU0JpZ0ludDo6cmVt
YWluZGVyKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNTQxLDcgKzEzOTcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGl2
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogICAgIHJldHVy
biBKU0JpZ0ludDo6ZGl2aWRlKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFu
ZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQorSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xNTUzLDcgKzE0MDksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUG93QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
bwogICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25CaXRBbmRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEs
IEpTQ2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEhlYXBC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCog
b3AyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNTY1LDcgKzE0MjEsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFu
ZChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0TFNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwpAQCAtMTU3Nyw3ICsxNDMzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmxlZnRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRPcGVyYW5kLCBy
aWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9w
MikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRIZWFwQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTU4OSw3ICsxNDQ1LDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFkZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG8KICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIGxlZnRP
cGVyYW5kLCByaWdodE9wZXJhbmQpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQml0UlNoaWZ0QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
b3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hp
ZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTYwMSw3ICsx
NDU3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKICAgICByZXR1cm4gSlNCaWdJbnQ6OnNp
Z25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKTsK
IH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE9yQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0xNjEzLDcgKzE0NjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KgogICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgbGVmdE9wZXJh
bmQsIHJpZ2h0T3BlcmFuZCk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpT
Q2VsbCogb3AyKQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNjMxLDcgKzE0ODcsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0
RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JDZWxscyhnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKIH0K
IAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGFyZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIp
CkBAIC0xNjc2LDEwICsxNTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
YXV0byB2YXJpYW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHZhcmlhbnQp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdURjo6Z2V0PEpTQmlnSW50Kj4odmFy
aWFudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoV1RGOjpnZXQ8ZG91
YmxlPih2YXJpYW50KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVj
b2RlKHZhbHVlKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGE4YTRjYmQyMGU2Li5kN2E4YTYz
ZDkxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
ODMsMTggKzE4MywxOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSgogc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWdFeHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0Nl
bGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1
YkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lO
VEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk11bEJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpdkJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwq
IG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvd0Jp
Z0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVS
TkFMOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogb3AxKSBXVEZfSU5URVJOQUw7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Qml0T3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdU
Rl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5B
TDsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
dWJIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTXVsSGVhcEJpZ0lu
dChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFM
OworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUG93SGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3AxLCBK
U0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkJpdEFuZEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBv
cDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXROb3RI
ZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEpIFdURl9JTlRFUk5BTDsKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQWRkSGVhcEJpZ0ludChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogb3Ax
LCBKU0NlbGwqIG9wMikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG9wMSwgSlND
ZWxsKiBvcDIpIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25C
aXRYb3JIZWFwQmlnSW50KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3Ay
KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGly
ZWN0KFZNKiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFs
dWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50
cyhWTSosIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgbWluQ2FwYWNpdHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyNDQxMDZlYjE4MC4uN2ZhNjA1OTNkYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01MzIsNyArNTMyLDE5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJ
bnQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNC
aWdJbnQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMDQsNiArMTAxNiw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2Ug
SXNCb29sZWFuOgogICAgICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICBjYXNlIElzQmlnSW50
OgogICAgICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICAgICAgY2FzZSBJc09iamVjdDoK
ICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNGFiNzU3YmJiOWUuLjhkYjBhYmEyY2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNzksNyAr
NzksOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBjYXNlIFN0
cmluZ09yT3RoZXJVc2U6CiAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICBjYXNlIEJp
Z0ludFVzZToKKyAgICAgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAgICAgIGNhc2UgSGVhcEJp
Z0ludFVzZToKKyAgICAgICAgY2FzZSBCaWdJbnQzMlVzZToKICAgICAgICAgY2FzZSBTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAg
IGNhc2UgTm90U3RyaW5nVmFyVXNlOgpAQCAtMjYzLDYgKzI2NSw3IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Ym9vbCBpZ25vCiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVh
bjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1i
ZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxs
OgpAQCAtNjc2LDEwICs2NzksMTAgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNl
IFZhbHVlRGl2OgogICAgIGNhc2UgVmFsdWVNb2Q6CiAgICAgY2FzZSBWYWx1ZVBvdzoKLSAgICAg
ICAgcmV0dXJuIG5vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpOworICAgICAgICByZXR1
cm4gbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSk7CiAKICAgICBjYXNlIFZhbHVlQml0Tm90OgotICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IEJpZ0ludFVzZTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IEJpZ0ludDMyVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNl
OwogCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IGE4ZTgzM2Y2Y2JlLi5lNjUzMWVjM2ZmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjgsNiArMzY4LDEz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnR5cGVDaGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwg
RWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0CiAgICAgc3BlY3VsYXRpb25DaGVjayhleGl0S2lu
ZCwgc291cmNlLCBlZGdlLm5vZGUoKSwganVtcFRvRmFpbCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnR5cGVDaGVjayhKU1ZhbHVlU291cmNlIHNvdXJjZSwgRWRnZSBlZGdlLCBTcGVjdWxh
dGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBqdW1w
TGlzdFRvRmFpbCwgRXhpdEtpbmQgZXhpdEtpbmQpCit7CisgICAgQVNTRVJUKG5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCkpOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVy
KGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7CisgICAgc3BlY3VsYXRpb25DaGVjayhleGl0S2lu
ZCwgc291cmNlLCBlZGdlLm5vZGUoKSwganVtcExpc3RUb0ZhaWwpOworfQorCiBSZWdpc3RlclNl
dCBTcGVjdWxhdGl2ZUpJVDo6dXNlZFJlZ2lzdGVycygpCiB7CiAgICAgUmVnaXN0ZXJTZXQgcmVz
dWx0OwpAQCAtMTcwOCw2ICsxNzE1LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZUJyYW5jaChOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAKICAg
ICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBj
b21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludDMyVXNlKSAmJiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCB8fCBj
b25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsKSkKKyAgICAgICAgICAgIGNvbXBp
bGVQZWVwSG9sZUJpZ0ludDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7Cisj
ZW5kaWYKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50NTJSZXBVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NTJC
cmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKQEAgLTM1MzUsMjQgKzM1NDYsNDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiB7
CiAgICAgRWRnZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CiAKLSAgICBpZiAoY2hpbGQxLnVz
ZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGNoaWxk
MS51c2VLaW5kKCkgPT0gQmlnSW50MzJVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kIG9wZXJhbmQodGhpcywgY2hpbGQxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAg
ICAgICAvLyBUaGUgZm9sbG93aW5nIHRyaWNrIHJlbGllcyBvbiBkZXRhaWxzIG9mIHRoZSByZXBy
ZXNlbnRhdGlvbiBvZiBCaWdJbnQzMiwgYW5kIHdpbGwgaGF2ZSB0byBiZSB1cGRhdGVkIGlmIHdl
IG1vdmUgYml0cyBhcm91bmQuCisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50
MzJUYWcgPT0gMHgxMik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJN
YXNrID09IDB4ZmZmZTAwMDAwMDAwMDAxMik7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBt
YXNrRm9yQmlnSW50MzJCaXRzID0gMHgwMDAwZmZmZmZmZmYwMDAwOworICAgICAgICBzdGF0aWNf
YXNzZXJ0KCEoSlNWYWx1ZTo6QmlnSW50MzJNYXNrICYgbWFza0ZvckJpZ0ludDMyQml0cykpOwor
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChtYXNrRm9yQmlnSW50MzJCaXRzKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgbV9qaXQueG9yNjQob3BlcmFuZC5ncHIoKSwgcmVzdWx0R1BSKTsK
KworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG1peGVkIEJpZ0ludDMy
IC8gSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAoY2hpbGQxLnVzZUtpbmQoKSA9PSBIZWFw
QmlnSW50VXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywg
Y2hpbGQxKTsKICAgICAgICAgR1BSUmVnIG9wZXJhbmRHUFIgPSBvcGVyYW5kLmdwcigpOwogCi0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChjaGlsZDEsIG9wZXJhbmRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KGNoaWxkMSwgb3BlcmFuZEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0Tm90QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXROb3RIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGNoaWxkMSk7CisgICAgQVNTRVJUKGNoaWxk
MS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBjaGlsZDEudXNlS2luZCgpID09IEFueUJpZ0lu
dFVzZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBjaGlsZDEsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGNoaWxkMSk7IC8vIFJlcXVp
cmVkIGZvciB0aGUgQW55QmlnSW50VXNlIGNhc2UKICAgICBKU1ZhbHVlUmVncyBvcGVyYW5kUmVn
cyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC0z
NTgwLDE0ICszNjE0LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaXR3aXNlTm90
KE5vZGUqIG5vZGUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3IsIEpf
SklUT3BlcmF0aW9uX0dKSiBzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbj4KLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogewogICAgIEVkZ2UmIGxl
ZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5j
aGlsZDIoKTsKIAorICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2Ug
fHwgbGVmdENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgcmlnaHRDaGlsZC51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBBbnlCaWdJbnRV
c2UpOworCiAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNL
bm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwg
cmlnaHRDaGlsZCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVn
cygpOwogCkBAIC0zNjMyLDExICszNjcwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQu
aXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9w
ZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQp
OworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsgLy8gUmVxdWly
ZWQgZm9yIEFueUJpZ0ludFVzZQogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBy
aWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRo
aXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1
bGF0ZShub2RlLCByaWdodENoaWxkKTsgLy8gUmVxdWlyZWQgZm9yIEFueUJpZ0ludFVzZQogICAg
ICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NzIs
NTIgKzM3MTIsODQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9w
KE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAg
RWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCByaWdodENoaWxkLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09
IEJpZ0ludDMyVXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKSB7Cisg
ICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Cisg
ICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3ByKCksIHJl
c3VsdEdQUik7CisKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0
QW5kOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRCaXRBbmRHZW5lcmF0b3IsIG9w
ZXJhdGlvblZhbHVlQml0QW5kPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Y2FzZSBWYWx1ZUJpdFhvcjoKLSAgICAgICAgICAgIGVtaXRVbnR5cGVkQml0T3A8SklUQml0WG9y
R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdFhvcj4obm9kZSk7Ci0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0QW5kIGRvZXMgbm90
IGludGVyZmVyZSB3aXRoIHRoZSBlbmNvZGluZyBvZiBCaWdJbnQzMgorICAgICAgICAgICAgbV9q
aXQuYW5kNjQocmlnaHQuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAgZW1pdFVudHlwZWRCaXRPcDxKSVRC
aXRPckdlbmVyYXRvciwgb3BlcmF0aW9uVmFsdWVCaXRPcj4obm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94L2JveDogYml0T3IgZG9lcyBu
b3QgaW50ZXJmZXJlIHdpdGggdGhlIGVuY29kaW5nIG9mIEJpZ0ludDMyCisgICAgICAgICAgICBt
X2ppdC5vcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAgICAvLyBCaXRYb3IgcmVtb3ZlcyB0
aGUgdGFnLCBzbyB3ZSBtdXN0IGFkZCBpdCBiYWNrIGFmdGVyIGRvaW5nIHRoZSBvcGVyYXRpb24K
KyAgICAgICAgICAgIG1faml0LnhvcjY0KHJpZ2h0LmdwcigpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgbV9qaXQub3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpLCByZXN1
bHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CisKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENo
aWxkLnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpOwotICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQu
Z3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgLy8gRklYTUU6
IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMiAvIEhlYXBCaWdJbnQKKyNlbmRpZgogCi0g
ICAgc3BlY3VsYXRlQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7Ci0gICAgc3BlY3VsYXRlQmln
SW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQoKSA9
PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEhlYXBCaWdJbnRVc2Up
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgICAgICBHUFJS
ZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChyaWdodENoaWxkLCByaWdodEdQ
Uik7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlQml0T3I6CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
c3dpdGNoIChvcCkgewogICAgIGNhc2UgVmFsdWVCaXRBbmQ6Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0QW5kQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0
VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUQml0QW5kR2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1
ZUJpdEFuZD4obm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZhbHVlQml0WG9yOgot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckJpZ0ludCwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wPEpJVEJpdFhvckdlbmVy
YXRvciwgb3BlcmF0aW9uVmFsdWVCaXRYb3I+KG5vZGUpOworICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9yQmln
SW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0
T3A8SklUQml0T3JHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVlQml0T3I+KG5vZGUpOworICAgICAg
ICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9Ci0KLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJp
dHdpc2VPcChOb2RlKiBub2RlKQpAQCAtMzc1Nyw3ICszODI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUJpdHdpc2VPcChOb2RlKiBub2RlKQogICAgIHN0cmljdEludDMyUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiB7CiAgICAgSl9KSVRP
cGVyYXRpb25fR0pKIHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uID0gbm9kZS0+b3AoKSA9PSBWYWx1
ZUJpdFJTaGlmdAogICAgICAgICA/IG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0IDogb3BlcmF0aW9u
VmFsdWVCaXRVUlNoaWZ0OwpAQCAtMzc2Nyw5ICszODM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgRWRnZSYgbGVm
dENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG5vZGUtPmNo
aWxkMigpOwogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkgfHwg
aXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hpbGQu
bm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlC
aWdJbnRVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENoaWxk
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdo
dCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBz
cGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0
Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3Mo
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsK
IApAQCAtMzg2MSwyNyArMzkzNSwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVMU2hpZnRPcChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxk
MSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChu
b2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CisgICAgLy8gRklYTUU6IHN1cHBv
cnQgQmlnSW50MzIKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEhlYXBCaWdJbnRV
c2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsK
ICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmln
aHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxk
LCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BS
KTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAg
ICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgp
ID09IFVudHlwZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0g
ICAgZW1pdFVudHlwZWRCaXRPcDxKSVRMZWZ0U2hpZnRHZW5lcmF0b3IsIG9wZXJhdGlvblZhbHVl
Qml0TFNoaWZ0Pihub2RlKTsKKyAgICBlbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3A8SklUTGVm
dFNoaWZ0R2VuZXJhdG9yLCBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdD4obm9kZSk7CiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdFJTaGlmdChOb2RlKiBub2RlKQpAQCAt
Mzg4OSwyNyArMzk2MywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRS
U2hpZnQoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKKyAgICAvLyBGSVhNRTogc3VwcG9ydCBCaWdJ
bnQzMgorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAg
R1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSBy
aWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BS
KTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAg
ICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAgICBzcGVj
dWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0UlNoaWZ0QmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChsZWZ0Q2hpbGQudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgJiYgcmlnaHRDaGlsZC51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7Ci0gICAgZW1pdFVu
dHlwZWRSaWdodFNoaWZ0Qml0T3Aobm9kZSk7CisgICAgZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0
U2hpZnRCaXRPcChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNoaWZ0
T3AoTm9kZSogbm9kZSkKQEAgLTM5MjAsNyArMzk5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTaGlmdE9wKE5vZGUqIG5vZGUpCiAKICAgICBpZiAobGVmdENoaWxkLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlIHx8IHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3AgPT0gQml0VVJTaGlmdCk7Ci0gICAgICAgIGVtaXRV
bnR5cGVkUmlnaHRTaGlmdEJpdE9wKG5vZGUpOworICAgICAgICBlbWl0VW50eXBlZE9yQmlnSW50
UmlnaHRTaGlmdEJpdE9wKG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTUw
LDE5ICs0MDI0LDY3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2Rl
KiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2Um
IHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKIAotICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVCaWdJbnQz
Mk9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBTcGVjdWxhdGVCaWdJbnQz
Mk9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisKKyAgICAgICAgLy8gRklYTUU6IGRv
IHdlIHJlYWxseSBuZWVkIHRoaXMgZXh0cmEgcmVnaXN0ZXIsIG9yIGNhbiB3ZSBtdXRhdGUgbGVm
dC9yaWdodCA/CisgICAgICAgIC8vIEZJWE1FOiBhbHNvLCBsb29rIGludG8gUmV1c2UgYW5kIG90
aGVyIHRyaWNrcyBmb3IgYSBtb3JlIGVmZmljaWVudCBnZW5lcmF0ZWQgY29kZS4KKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQ
UlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKGxlZnQuZ3By
KCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIocmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShyaWdodC5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0
LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzb21lIHdh
eSB0byBlbGltaW5hdGUgdGhlIG92ZXJmbG93IGNoZWNrCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93
LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgY2hlY2spOworCisgICAgICAgIG1faml0
LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQW55QmlnSW50VXNlKSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRo
aXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCByaWdodENoaWxkKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0
LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0Lmpz
VmFsdWVSZWdzKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICAvLyBGSVhNRTogY2FsbCBhIG1v
cmUgc3BlY2lhbGl6ZWQgZnVuY3Rpb24KKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25W
YWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwor
CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBtaXhlZCBCaWdJbnQzMi9I
ZWFwQmlnSW50CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJp
Z2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNw
ZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxl
ZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGls
ZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRCaWdJbnQs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwpAQCAtNDAwOCw0NCArNDEzMCw5MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5j
aGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBp
ZiAobm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJv
b2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7Ci0jZWxzZQotICAgICAgICBib29sIG5lZWRz
U2NyYXRjaEdQUlJlZyA9IHRydWU7Ci0gICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0g
dHJ1ZTsKLSNlbmRpZgorI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+YmluYXJ5VXNl
S2luZCgpID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFu
ZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50MzJP
cGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhNRTog
ZG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0ZSBs
ZWZ0L3JpZ2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBhbmQg
b3RoZXIgdHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAg
R1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVmdC5n
cHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9q
aXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKIAotICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2Rl
LT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBKSVRTdWJJQyogc3Vi
SUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKLSAgICAg
ICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwot
ICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwor
ICAgICAgICAvLyBGSVhNRTogYWRkIHNvbWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cg
Y2hlY2sKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hT
dWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0
R1BSKTsKIAotICAgICAgICBjb21waWxlTWF0aElDKG5vZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hH
UFJSZWcsIG5lZWRzU2NyYXRjaEZQUlJlZywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNo
aW5nRnVuY3Rpb24pOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAgbV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BS
KTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIv
SGVhcEJpZ0ludAogCi0gICAgQVNTRVJUKGxlZnRDaGlsZC51c2VLaW5kKCkgPT0gQmlnSW50VXNl
ICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSk7CisgICAgLy8gRklYTUU6IHdo
eSBkbyBjb21waWxlVmFsdWVBZGQvY29tcGlsZVZhbHVlTXVsIHVzZSBpc0tub3duTm90TnVtYmVy
IGJ1dCBub3QgVmFsdWVTdWI/CisgICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlC
aWdJbnRVc2UpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0
KHRoaXMsIHJpZ2h0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNw
ZWN1bGF0ZUFueUJpZ0ludChsZWZ0Q2hpbGQpOworICAgICAgICBzcGVjdWxhdGVBbnlCaWdJbnQo
cmlnaHRDaGlsZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVl
UmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVn
cygpOwogCi0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwotICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKLSAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblZhbHVlU3ViLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCiAKLSAgICBzcGVjdWxhdGVCaWdJbnQobGVm
dENoaWxkLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRH
UFIpOworICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
aWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
IAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViQmlnSW50LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7Ci0gICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKworICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGJvb2wg
bmVlZHNTY3JhdGNoR1BSUmVnID0gdHJ1ZTsKKyAgICBib29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9
IGZhbHNlOworI2Vsc2UKKyAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAg
Ym9vbCBuZWVkc1NjcmF0Y2hGUFJSZWcgPSB0cnVlOworI2VuZGlmCisKKyAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBKSVRTdWJJQyogc3ViSUMg
PSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKKyAgICBhdXRv
IHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgYXV0
byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKKworICAgIGNvbXBp
bGVNYXRoSUMobm9kZSwgc3ViSUMsIG5lZWRzU2NyYXRjaEdQUlJlZywgbmVlZHNTY3JhdGNoRlBS
UmVnLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwg
dHlwZW5hbWUgTm9uUmVwYXRjaGluZ0Z1bmN0aW9uPgpAQCAtNDYzMCw2ICs0Nzk4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluY09yRGVjKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogeworICAgIC8vIEZJ
WE1FOiBhZGQgYSBmYXN0IHBhdGgsIGF0IGxlYXN0IGZvciBCaWdJbnQzMiwgYnV0IHByb2JhYmx5
IGFsc28gZm9yIEhlYXBCaWdJbnQgaGVyZS4KICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CiAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCk7CkBAIC00ODEwLDI5ICs0OTc5LDYxIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgIEVkZ2UmIGxlZnRDaGlsZCA9
IG5vZGUtPmNoaWxkMSgpOwogICAgIEVkZ2UmIHJpZ2h0Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
IAotICAgIGlmIChsZWZ0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSAmJiByaWdodENoaWxk
LnVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnQzMlVzZSkgeworICAgICAgICAvLyBGSVhNRTog
dGhlIGNvZGUgYmV0d2VlbiBjb21waWxlVmFsdWVBZGQsIGNvbXBpbGVWYWx1ZVN1YiBhbmQgY29t
cGlsZVZhbHVlTXVsIGZvciBCaWdJbnQzMiBpcyBuZWFybHkgaWRlbnRpY2FsLCBzbyB0cnkgdG8g
Z2V0IHJpZCBvZiB0aGUgZHVwbGljYXRpb24uCisgICAgICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3Bl
cmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQmlnSW50
MzJPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAvLyBGSVhN
RTogZG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBleHRyYSByZWdpc3Rlciwgb3IgY2FuIHdlIG11dGF0
ZSBsZWZ0L3JpZ2h0ID8KKyAgICAgICAgLy8gRklYTUU6IGFsc28sIGxvb2sgaW50byBSZXVzZSBh
bmQgb3RoZXIgdHJpY2tzIGZvciBhIG1vcmUgZWZmaWNpZW50IGdlbmVyYXRlZCBjb2RlLgorICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmUobGVm
dC5ncHIoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQudW5ib3hCaWdJbnQzMihyZXN1bHRH
UFIpOworICAgICAgICBtX2ppdC5tb3ZlKHJpZ2h0LmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAg
bV9qaXQudW5ib3hCaWdJbnQzMih0ZW1wR1BSKTsKKworICAgICAgICAvLyBGSVhNRTogYWRkIHNv
bWUgd2F5IHRvIGVsaW1pbmF0ZSB0aGUgb3ZlcmZsb3cgY2hlY2sKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3Zl
cmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKKworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisKKyAgICAgICAg
bV9qaXQuYm94QmlnSW50MzIocmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIEZJWE1FOiBhZGQg
c3VwcG9ydCBmb3IgbWl4ZWQgQmlnSW50MzIvSGVhcEJpZ0ludAorI2VuZGlmCisKKyAgICBpZiAo
bGVmdENoaWxkLnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2lu
ZCgpID09IEhlYXBCaWdJbnRVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwog
ICAgICAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxh
dGVCaWdJbnQobGVmdENoaWxkLCBsZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJp
Z2h0Q2hpbGQsIHJpZ2h0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hp
bGQsIGxlZnRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJp
Z2h0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxCaWdJbnQsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1i
ZXIobGVmdENoaWxkLm5vZGUoKSkgfHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUo
KSkpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNL
bm93bk5vdE51bWJlcihsZWZ0Q2hpbGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0
Q2hpbGQubm9kZSgpKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSkgewor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRD
aGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IGxlZnRDaGlsZCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCByaWdodENoaWxkKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CiAKQEAgLTUwMTIsMjkg
KzUyMTMsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKGxlZnRDaGlsZC51c2VLaW5kKCkg
PT0gQmlnSW50VXNlICYmIHJpZ2h0Q2hpbGQudXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAg
IC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28g
dGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBiZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBE
aXYgZ2V0cy4KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkp
IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKICAg
ICAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmlnaHRH
UFIgPSByaWdodC5ncHIoKTsKIAotICAgICAgICBzcGVjdWxhdGVCaWdJbnQobGVmdENoaWxkLCBs
ZWZ0R1BSKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsK
KyAgICAgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOworICAgICAg
ICBzcGVjdWxhdGVIZWFwQmlnSW50KHJpZ2h0Q2hpbGQsIHJpZ2h0R1BSKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobGVmdENoaWxkLm5vZGUoKSkg
fHwgaXNLbm93bk5vdE51bWJlcihyaWdodENoaWxkLm5vZGUoKSkpIHsKLSAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkKTsKKyAgICBpZiAoaXNLbm93bk5vdE51bWJlcihsZWZ0Q2hp
bGQubm9kZSgpKSB8fCBpc0tub3duTm90TnVtYmVyKHJpZ2h0Q2hpbGQubm9kZSgpKSB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50MzJVc2UpKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbGVmdENo
aWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBy
aWdodCh0aGlzLCByaWdodENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIHJp
Z2h0Q2hpbGQpOwogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3Mo
KTsKIApAQCAtNTA0OCw2ICs1MjUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwogICAgIE9wdGlvbmFsPEpTVmFs
dWVPcGVyYW5kPiBsZWZ0OwogICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIApA
QCAtNTI5NywyOSArNTUwNCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVN
b2QoTm9kZSogbm9kZSkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAg
ICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBpZiAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkgeworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBh
dGggZm9yIEJpZ0ludDMyLiBDdXJyZW50bHkgd2UgZ28gdGhyb3VnaCB0aGUgc2xvdyBwYXRoLCBi
ZWNhdXNlIG9mIGhvdyB1Z2x5IHRoZSBjb2RlIGZvciBNb2QgZ2V0cy4KKworICAgIGlmIChub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICBHUFJSZWcgbGVmdEdQUiA9
IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwogCi0g
ICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRHUFIpOwotICAgICAgICBzcGVj
dWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAgICAgICBzcGVjdWxhdGVIZWFw
QmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQo
cmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk1vZEJpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJ
bnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0
aGlzLCBsZWZ0Q2hpbGQpOwotICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxk
KTsKKyAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFyeVVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRV
c2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0ludDMyVXNlLCBub2RlLT5iaW5hcnlV
c2VLaW5kKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0
Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgc3BlY3VsYXRlKG5vZGUsIGxl
ZnRDaGlsZCk7CisgICAgc3BlY3VsYXRlKG5vZGUsIHJpZ2h0Q2hpbGQpOwogICAgIEpTVmFsdWVS
ZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBvcDJSZWdz
ID0gb3AyLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKQEAgLTU4NjEsMzAg
KzYwNzIsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5v
ZGUpCiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmln
aHRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgaWYgKG5vZGUtPmJpbmFyeVVzZUtpbmQo
KSA9PSBCaWdJbnRVc2UpIHsKKyAgICAvLyBGSVhNRTogZG8gd2Ugd2FudCBhIGZhc3QgcGF0aCBm
b3IgQmlnSW50MzIgZm9yIFBvdz8gSSBleHBlY3QgaXQgd291bGQgb3ZlcmZsb3cgcHJldHR5IG9m
dGVuLgorICAgIGlmIChub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAg
ICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByaWdodEdQUiA9
IHJpZ2h0LmdwcigpOwogCi0gICAgICAgIHNwZWN1bGF0ZUJpZ0ludChsZWZ0Q2hpbGQsIGxlZnRH
UFIpOwotICAgICAgICBzcGVjdWxhdGVCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOworICAg
ICAgICBzcGVjdWxhdGVIZWFwQmlnSW50KGxlZnRDaGlsZCwgbGVmdEdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQocmlnaHRDaGlsZCwgcmlnaHRHUFIpOwogCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblBvd0JpZ0ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmJpbmFy
eVVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2RlLT5iaW5hcnlVc2VLaW5kKCkpOworICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVu
dHlwZWRVc2UgfHwgbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEFueUJpZ0ludFVzZSB8fCBub2Rl
LT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UsIG5vZGUtPmJpbmFyeVVzZUtpbmQoKSk7
CiAKLSAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRDaGlsZCk7Ci0gICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVm
dCh0aGlzLCBsZWZ0Q2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1
ZU9wZXJhbmQgcmlnaHQodGhpcywgcmlnaHRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbGVmdENoaWxkKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
cmlnaHRDaGlsZCk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdz
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKIApA
QCAtNjAzMiw2ICs2MjQ2LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSog
bm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIGNvbXBpbGVCaWdJbnQz
MkNvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyNlbmRpZgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQ1MlJlcFVzZSkpIHsKICAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25k
aXRpb24pOwpAQCAtNjA2MCw2ICs2MjgwLDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFy
ZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb24KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBhZGQgSGVhcEJpZ0lu
dCBjYXNlIGhlcmUuCisgICAgLy8gTm90IGhhdmluZyBpdCBtZWFucyB0aGF0IHRoZSBjb21wYXJl
IHdpbGwgbm90IGJlIGZ1c2VkIHdpdGggdGhlIGJyYW5jaCBmb3IgdGhpcyBjYXNlLgorCiAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoQm9vbGVhblVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVCb29sZWFuQ29tcGFy
ZShub2RlLCBjb25kaXRpb24pOwpAQCAtNjEzOCw3ICs2MzYxLDI0IEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpICAgCisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgIHVu
c2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAg
ICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5v
ZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAg
ICAgICAgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJh
bmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNv
bXBpbGVCaWdJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkgewogICAgICAgICB1bnNp
Z25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAg
ICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CkBAIC02MTg1LDggKzY0MjUs
OCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgY29tcGlsZUJpZ0ludEVxdWFsaXR5KG5vZGUp
OworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAg
ICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKQEAgLTYyODAsOCArNjUyMCw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU3RyaW5nVG9VbnR5
cGVkRXF1YWxpdHkobm9kZSwgbm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworCisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoQW55QmlnSW50VXNl
KSk7CiAgICAgcmV0dXJuIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEobm9kZSk7CiB9CiAKQEAgLTEw
NTU5LDE4ICsxMDc5OSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTeW1ib2wo
RWRnZSBlZGdlKQogICAgIHNwZWN1bGF0ZVN5bWJvbChlZGdlLCBvcGVyYW5kLmdwcigpKTsKIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQmlnSW50KEVkZ2UgZWRnZSwgR1BSUmVn
IGNlbGwpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVIZWFwQmlnSW50KEVkZ2UgZWRn
ZSwgR1BSUmVnIGNlbGwpCiB7Ci0gICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoY2VsbCksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY0JpZ0ludCwgbV9qaXQu
YnJhbmNoSWZOb3RCaWdJbnQoY2VsbCkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNIZWFwQmln
SW50LCBtX2ppdC5icmFuY2hJZk5vdEhlYXBCaWdJbnQoY2VsbCkpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjQmlnSW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQoZWRn
ZSwgb3BlcmFuZC5ncHIoKSk7CisgICAgc3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBvcGVyYW5k
LmdwcigpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdl
IGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MpCkBAIC0xMDc0MCw4ICsxMDk4MCwxNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIFN5bWJv
bFVzZToKICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKGVkZ2UpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UpOworI2lmIFVT
RShCSUdJTlQzMikKKyAgICBjYXNlIEJpZ0ludDMyVXNlOgorICAgICAgICBzcGVjdWxhdGVCaWdJ
bnQzMihlZGdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbnlCaWdJbnRVc2U6CisgICAg
ICAgIHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAg
ICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBzcGVj
dWxhdGVTdHJpbmdPYmplY3QoZWRnZSk7CkBAIC0xMzA4MiwxNyArMTMzMzAsMTggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTnVtZXJpYyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVS
ZWdzIGFyZ3VtZW50UmVncyA9IGFyZ3VtZW50LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSB0ZW1w
LmdwcigpOworICAgIC8vIEZJWE1FOiBhZGQgYSBmYXN0IHBhdGggZm9yIEJpZ0ludDMyIGhlcmUg
KGFuZCBmb3IgdHlwZU9mLCBhbmQgZm9yIGJvb2xpZnkgb3Igd2hhdGV2ZXIgaXQgaXMgY2FsbGVk
IGluIHRoaXMgZmlsZSkuCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChhcmd1bWVudFJlZ3MpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RCaWdJbnQoYXJndW1lbnRSZWdzLnBheWxvYWRHUFIoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGlzQmlnSW50ID0gbV9qaXQuanVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RIZWFwQmlnSW50KGFyZ3VtZW50UmVncy5wYXlsb2FkR1BSKCkpKTsKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hlYXBCaWdJbnQgPSBtX2ppdC5qdW1wKCk7CiAKICAg
ICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90TnVtYmVyKGFyZ3VtZW50UmVncywgc2NyYXRjaCkpOwogCi0gICAgaXNCaWdJbnQubGlu
aygmbV9qaXQpOworICAgIGlzSGVhcEJpZ0ludC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92
ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9OdW1lcmlj
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7
CkBAIC0xMzk4MSw5ICsxNDIzMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICBtX2N1
cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRd
W0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3Ig
QmlnSW50VXNlCisgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxp
emVkIHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyODk1CiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM5OTUsOCArMTQyNDQsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQmlnSW50RXF1YWxpdHkoTm9kZSogbm9kZSkK
ICAgICBsZWZ0LnVzZSgpOwogICAgIHJpZ2h0LnVzZSgpOwogCi0gICAgc3BlY3VsYXRlQmlnSW50
KG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKLSAgICBzcGVjdWxhdGVCaWdJbnQobm9kZS0+Y2hp
bGQyKCksIHJpZ2h0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMSgp
LCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVIZWFwQmlnSW50KG5vZGUtPmNoaWxkMigpLCByaWdo
dEdQUik7CiAKICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbENhc2UgPSBtX2ppdC5icmFu
Y2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBkMTcyZmUy
YzY3Yy4uOTZlMzRiODZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNDYsNiArMzQ2LDkgQEAgcHVibGljOgogICAgIEZQUlJlZyBm
aWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChF
ZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSk7CisjZW5kaWYK
ICAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5v
ZGUqKTsKIAogICAgIHZvaWQgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPik7CkBAIC0xMTQ4LDYgKzExNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFs
Q29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0pJVE9wZXJhdGlv
bl9HSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSosIE5vZGUq
IGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRD
b21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZv
aWQgY29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUs
IEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29t
cGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29t
cGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91
YmxlQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29u
ZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBO
b2RlKiBicmFuY2hOb2RlKTsKQEAgLTExNzIsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1
YWxpdHkoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKKyAg
ICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAgIHZv
aWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBF
ZGdlIHVudHlwZWRFZGdlKTsKIApAQCAtMTIyMiw2ICsxMjI4LDkgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0
aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUludDUyQ29tcGFyZShOb2RlKiwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworI2lmIFVTRShCSUdJTlQzMikKKyAg
ICB2b2lkIGNvbXBpbGVCaWdJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uKTsKKyNlbmRpZgogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBj
b21waWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlv
bik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24pOwpAQCAtMTI5NywxMSArMTMwNiwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21waWxlQml0d2lzZU5vdChOb2RlKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTbmlwcGV0R2VuZXJhdG9yLCBKX0pJVE9wZXJhdGlvbl9HSkogc2xvd1BhdGhGdW5jdGlvbj4K
LSAgICB2b2lkIGVtaXRVbnR5cGVkQml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRP
ckFueUJpZ0ludEJpdE9wKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVCaXR3aXNlT3AoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUqKTsKIAotICAgIHZvaWQgZW1p
dFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSopOworICAgIHZvaWQgZW1pdFVudHlwZWRPckJp
Z0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVMU2hpZnRP
cChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVNoaWZ0T3AoTm9kZSopOwpAQCAtMTU2MCw2ICsxNTY5LDcgQEAgcHVibGljOgog
ICAgIC8vIEhlbHBlcnMgZm9yIHBlcmZvcm1pbmcgdHlwZSBjaGVja3Mgb24gYW4gZWRnZSBzdG9y
ZWQgaW4gdGhlIGdpdmVuIHJlZ2lzdGVycy4KICAgICBib29sIG5lZWRzVHlwZUNoZWNrKEVkZ2Ug
ZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKSB7IHJldHVybiBtX2ludGVy
cHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7IH0KICAgICB2
b2lkIHR5cGVDaGVjayhKU1ZhbHVlU291cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bh
c3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIEV4aXRLaW5kID0g
QmFkVHlwZSk7CisgICAgdm9pZCB0eXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwgRWRnZSwgU3BlY3Vs
YXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QganVt
cExpc3RUb0ZhaWwsIEV4aXRLaW5kID0gQmFkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzcGVjdWxh
dGVDZWxsVHlwZVdpdGhvdXRUeXBlRmlsdGVyaW5nKEVkZ2UsIEdQUlJlZyBjZWxsR1BSLCBKU1R5
cGUpOwogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbFR5cGUoRWRnZSwgR1BSUmVnIGNlbGxHUFIsIFNw
ZWN1bGF0ZWRUeXBlLCBKU1R5cGUpOwpAQCAtMTU3MSw2ICsxNTgxLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1
bGF0ZURvdWJsZVJlcEFueUludChFZGdlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2lm
IFVTRShCSUdJTlQzMikKKyAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludDMyKEVkZ2UpOworICAgIHZv
aWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKICAg
ICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1i
ZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBSZWFsKEVkZ2UpOwpAQCAtMTYy
MCw4ICsxNjM0LDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdP
YmplY3QoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSwgR1BSUmVnIGNlbGwp
OwogICAgIHZvaWQgc3BlY3VsYXRlU3ltYm9sKEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlQmln
SW50KEVkZ2UsIEdQUlJlZyBjZWxsKTsKLSAgICB2b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlKTsK
KyAgICB2b2lkIHNwZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSwgR1BSUmVnIGNlbGwpOworICAgIHZv
aWQgc3BlY3VsYXRlSGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwo
RWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CkBA
IC0yNTk5LDYgKzI2MTMsNTYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
CiB9OwogCisjaWYgVVNFKEJJR0lOVDMyKQorY2xhc3MgU3BlY3VsYXRlQmlnSW50MzJPcGVyYW5k
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
cGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBP
cGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24p
CisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAs
IG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlQobV9q
aXQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJpZ0ludDMyVXNlKTsKKyAgICAgICAgaWYg
KGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKworICAg
IH5TcGVjdWxhdGVCaWdJbnQzMk9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3By
T3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3By
T3JJbnZhbGlkKTsKKyAgICB9CisKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKworICAgIEdQUlJlZyBncHIo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQmlnSW50MzIo
ZWRnZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKworICAgIHZv
aWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAg
IEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCiAj
ZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKGV4aXRLaW5kLCBzb3VyY2UsIGVk
Z2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkgZG8geyBcCiAgICAgICAgIEpTVmFs
dWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2UpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxZjdlMDU3ZGJlNy4uMmUyYTdiZGQ2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtNDE4MSw3ICs0MTgxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgICAg
ICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrQXJyYXlPckVtcHR5IG9ubHkg
dXNlZCBpbiA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNh
c2UgSXNCaWdJbnQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiSXNC
aWdJbnQgaXMgb25seSB1c2VkIHdoZW4gVVNFX0JJR0lOVDMyLCB3aGljaCBjYW4gb25seSBiZSB0
cnVlIGluIDY0IGJpdCBtb2RlIik7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDIyZWMyNmM5NzFlLi5lNWEzNGRjM2RmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTM4LDcgKzEzOCw4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRn
ZSBlZGdlKQogICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1h
dEpTQm9vbGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKKyAgICBjYXNlIERh
dGFGb3JtYXRKU0JpZ0ludDMyOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwog
ICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMzQwLDgg
KzM0MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3Ry
aWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICBub3RUYWtlbiA9IHRt
cDsKICAgICB9CiAgICAgCi0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoQW55QmlnSW50VXNlKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVl
T3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3VsYXRl
KG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEuZ3ByKCk7
CiAgICAgR1BSUmVnIGFyZzJHUFIgPSBhcmcyLmdwcigpOwogICAgIApAQCAtMzYzLDQzICszNjcs
NjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVx
KE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRl
c3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCBy
ZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5vcjY0KGFyZzFH
UFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCB0d29DZWxsc0Nhc2UgPSBtX2ppdC5icmFuY2hJZkNlbGwocmVzdWx0R1BSKTsKLSAgICAg
ICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnRPSyA9IG1faml0LmJyYW5jaElmSW50
MzIoYXJnMUdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGxlZnREb3VibGUgPSBtX2pp
dC5icmFuY2hJZk51bWJlcihhcmcxR1BSKTsKLSAgICAgICAgbGVmdE9LLmxpbmsoJm1faml0KTsK
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmlnaHRPSyA9IG1faml0LmJyYW5jaElmSW50MzIo
YXJnMkdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0RG91YmxlID0gbV9qaXQu
YnJhbmNoSWZOdW1iZXIoYXJnMkdQUik7Ci0gICAgICAgIHJpZ2h0T0subGluaygmbV9qaXQpOwot
ICAgICAgICAKLSAgICAgICAgYnJhbmNoNjQoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5vdEVxdWFs
IDogSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCB0YWtlbik7Ci0gICAgICAg
IGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7Ci0gICAgICAgIAotICAgICAgICB0d29DZWxsc0Nh
c2UubGluaygmbV9qaXQpOworICAgICAgICAvKiBBdCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3Vt
aW5nICdpbnZlcnQnIHRvIGJlIGZhbHNlKToKKyAgICAgICAgIElmIChsZWZ0IGlzIERvdWJsZSB8
fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAg
aWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICBnb3RvIHRha2VuOworICAgICAgICAgaWYg
KGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsKQorICAgICAgICAgICAgZ290byBzbG93UGF0
aDsKKyAgICAgICAgIGdvdG8gbm90VGFrZW47CisgICAgICAgICAqLworCisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOworCisgICAgICAgIC8vIFRoaXMgZnJhZ21l
bnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBh
IHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVx
dWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgIC8v
IFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcg
MTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMg
YXQgMAorICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5
IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgIC8vIExlYXZpbmcgb25seSBk
b3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgICAg
ICBtX2ppdC5tb3ZlKGFyZzJHUFIsIHNjcmF0Y2guZ3ByKCkpOworICAgICAgICBtX2ppdC5hZGQ2
NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3VsdEdQUik7Cisg
ICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRz
KSwgc2NyYXRjaC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yNjQoc2NyYXRjaC5ncHIoKSwgcmVz
dWx0R1BSLCByZXN1bHRHUFIpOworICAgICAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExvd2Vz
dE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgICAgIHNs
b3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1
YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOworCiAg
ICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52
ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAotICAgICAgICBsZWZ0RG91YmxlLmxp
bmsoJm1faml0KTsKLSAgICAgICAgcmlnaHREb3VibGUubGluaygmbV9qaXQpOwotICAgICAgICAK
LSAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAg
IAorICAgICAgICAvLyBJZiB3ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93
IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9
PT0gQmlnSW50MzIpCisgICAgICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdl
IG9ubHkgaGF2ZSB0byBnbyB0byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxs
cyAoZm9yIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQor
ICAgICAgICAvLyBJbnN0ZWFkIG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2lu
Z2xlIG9uZSwgYnkgb2JzZXJ2aW5nIHRoYXQKKyAgICAgICAgLy8gMS4gKGxlZnQgaXMgQ2VsbCAm
JiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxlZnQgfCByaWdodCkgaXMgQ2VsbCkK
KyAgICAgICAgLy8gICAgICBCb3RoIGFyZSAiQWxsIGhpZ2ggYml0cyBhcmUgMCIKKyAgICAgICAg
Ly8gMi4gU2luY2Ugd2Uga25vdyB0aGF0IG5laXRoZXIgaXMgYSBkb3VibGUsIChsZWZ0IGlzIENl
bGwgfHwgcmlnaHQgaXMgQ2VsbCkgaXMgZXF1aXZhbGVudCB0byAoKGxlZnQgJiByaWdodCkgaXMg
Q2VsbCkKKyAgICAgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0aGUgdG9wIGJp
dHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgICAgICAvLyAgICAgIElm
IGF0IGxlYXN0IG9uZSBpcyBub3QgSW50MzIsIHRoZW4gdGhlIHRvcCBiaXRzIHdpbGwgYmUgMC4K
KyAgICAgICAgLy8gICAgICBBbmQgaWYgYXQgbGVhc3Qgb25lIGlzIGEgY2VsbCwgdGhlbiB0aGUg
J090aGVyJyB0YWcgd2lsbCBhbHNvIGJlIDAsIG1ha2luZyB0aGUgdGVzdCBzdWNjZWVkCisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1
bHRHUFIpOworI2Vsc2UKKyAgICAgICAgbV9qaXQub3I2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1
bHRHUFIpOworI2VuZGlmCisgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aElmQ2VsbChyZXN1bHRHUFIpKTsKKworICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90
VGFrZW4sIEZvcmNlSnVtcCk7CisKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwog
ICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21w
aWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfQotICAgIAorCiAgICAganVt
cChub3RUYWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKIHsKKyAgICAvLyBGSVhN
RTogc29tZSBvZiB0aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlYWJsZSB3aXRoIG5vblNwZWN1bGF0
aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgIEpTVmFsdWVSZWdzIGFyZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOwogICAgIEpT
VmFsdWVSZWdzIGFyZzJSZWdzID0gYXJnMi5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBhcmcx
R1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAg
CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwpAQCAtNDI4LDMzICs0NTYsNjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0
KQogICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LQotICAgIG1faml0Lm9yNjQoYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdwcigpLCByZXN1bHRH
UFIpOworICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ2ludmVydCcgdG8g
YmUgZmFsc2UpOgorICAgIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisg
ICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAg
IGlmIChyZXN1bHQpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8
IHJpZ2h0IGlzIENlbGwpCisgICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgZG9uZToKKyAgICBy
ZXR1cm4gcmVzdWx0OworICAgICovCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1Bh
dGhDYXNlczsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHR3b0NlbGxzQ2FzZSA9IG1faml0LmJy
YW5jaElmQ2VsbChyZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbGVmdE9LID0g
bV9qaXQuYnJhbmNoSWZJbnQzMihhcmcxUmVncyk7Ci0gICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOdW1iZXIoYXJnMVJlZ3MsIEludmFsaWRHUFJSZWcpKTsKLSAgICBsZWZ0
T0subGluaygmbV9qaXQpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHJpZ2h0T0sgPSBtX2ppdC5i
cmFuY2hJZkludDMyKGFyZzJSZWdzKTsKLSAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk51bWJlcihhcmcyUmVncywgSW52YWxpZEdQUlJlZykpOwotICAgIHJpZ2h0T0subGlu
aygmbV9qaXQpOwotCi0gICAgbV9qaXQuY29tcGFyZTY0KGludmVydCA/IEpJVENvbXBpbGVyOjpO
b3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVJlZ3MuZ3ByKCksIGFyZzJSZWdzLmdw
cigpLCByZXN1bHRHUFIpOwotCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKLQotICAgIHR3b0NlbGxzQ2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgc2xvd1BhdGhDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhcmcxUmVncy5n
cHIoKSwgYXJnMlJlZ3MuZ3ByKCkpKTsKKyAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMg
KGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNo
IGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVz
ZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgorICAgIC8vIFRoZSB0cmljayBpcyB0aGF0
IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBhZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBt
YWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdoIGJpdHMgYXQgMAorICAgIC8vIElmIGl0
IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkgd2lsbCBiZSBpdHMgb25seSBoaWdo
IGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1
MC4KKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBtX2ppdC5tb3ZlKGFyZzFH
UFIsIHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsK
KyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyks
IHJlc3VsdEdQUik7CisgICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2Vz
dE9mSGlnaEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3By
KCksIHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbmV4dExv
d2VzdE9mSGlnaEJpdHMgPSBKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzIDw8IDE7CisgICAgc2xv
d1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVh
bCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tNjQobmV4dExvd2VzdE9mSGlnaEJpdHMpKSk7CisKKyAg
ICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBhcmcyR1BSLCBy
ZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hUZXN0
NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisKKyAgICAvLyBJZiB3ZSBzdXBw
b3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qgb25lIG9w
ZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCisgICAgLy8gSWYg
d2UgZG9uJ3Qgc3VwcG9ydCBCaWdJbnQzMiwgd2Ugb25seSBoYXZlIHRvIGdvIHRvIGEgc2xvdyBw
YXRoIGlmIGJvdGggb3BlcmFuZHMgYXJlIGNlbGxzIChmb3IgSGVhcEJpZ0ludCA9PT0gSGVhcEJp
Z0ludCBhbmQgU3RyaW5nID09PSBTdHJpbmcpCisgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28g
YnJhbmNoZXMsIHdlIGNhbiBkbyBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAg
Ly8gMS4gKGxlZnQgaXMgQ2VsbCAmJiByaWdodCBpcyBDZWxsKSBpcyB0aGUgc2FtZSBhcyAoKGxl
ZnQgfCByaWdodCkgaXMgQ2VsbCkKKyAgICAvLyAgICAgIEJvdGggYXJlICJBbGwgaGlnaCBiaXRz
IGFyZSAwIgorICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91Ymxl
LCAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0
ICYgcmlnaHQpIGlzIENlbGwpCisgICAgLy8gICAgICBJZiBib3RoIGFyZSBJbnQzMiwgdGhlbiB0
aGUgdG9wIGJpdHMgd2lsbCBiZSBzZXQgYW5kIHRoZSB0ZXN0IHdpbGwgZmFpbAorICAgIC8vICAg
ICAgSWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBJbnQzMiwgdGhlbiB0aGUgdG9wIGJpdHMgd2lsbCBi
ZSAwLgorICAgIC8vICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRoZW4gdGhl
ICdPdGhlcicgdGFnIHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2VlZAorI2lm
IFVTRShCSUdJTlQzMikKKyAgICBtX2ppdC5hbmQ2NChhcmcxR1BSLCBhcmcyR1BSLCByZXN1bHRH
UFIpOworI2Vsc2UKKyAgICBtX2ppdC5vcjY0KGFyZzFHUFIsIGFyZzJHUFIsIHJlc3VsdEdQUik7
CisjZW5kaWYKKyAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkNlbGwocmVz
dWx0R1BSKSk7CiAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoIWlu
dmVydCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3Vs
dEdQUik7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhD
YXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGlu
aygmbV9qaXQpOwogCisgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTY0KGludmVydCksIHJlc3Vs
dEdQUik7CisKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50
Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTAwNCw2ICsxMDU5
LDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbChF
ZGdlIGVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkYKICAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdl
OgogICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgogICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpT
QmlnSW50MzI6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2Rl
LCAiQmFkIGRhdGEgZm9ybWF0Iik7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0xMTg0LDYg
KzEyNDEsOCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKEVkZ2Ug
ZWRnZSkKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpIHsKKyAgICAvLyBGSVhNRTogc29tZSBvZiB0aGVzZSBjYXNlcyBsb29rIGxpa2Ug
dGhleSBjb3VsZCBzaGFyZSBjb2RlLgorICAgIC8vIExvb2sgYXQgZmlsbFNwZWN1bGF0ZUludDMy
SW50ZXJuYWwgZm9yIGFuIGV4YW1wbGUuCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogewogICAg
ICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIApAQCAtMTIzNSw2ICsxMjk0LDggQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdlIGVkZ2UpCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RvcmFnZToKICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNl
IERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0JpZ0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3Jh
cGgoKSwgbV9jdXJyZW50Tm9kZSwgIkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBk
ZWZhdWx0OgpAQCAtMTMxMiw2ICsxMzczLDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToK
ICAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1
MjoKKyAgICBjYXNlIERhdGFGb3JtYXRCaWdJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jp
Z0ludDMyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwg
IkJhZCBkYXRhIGZvcm1hdCIpOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTMyMCw2ICsx
MzgzLDEyNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKEVk
Z2UgZWRnZSkKICAgICB9CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVCaWdJbnQzMihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjQmlnSW50MzIpKQorICAgICAgICByZXR1cm47CisKKyAgICAoU3BlY3Vs
YXRlQmlnSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlQW55QmlnSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNCaWdJbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFs
dWVSZWdzKTsKKyAgICAvLyBJIGlubGluZWQgc3BlY3VsYXRlSGVhcEJpZ0ludCBiZWNhdXNlIGl0
IHdvdWxkIGJlIGluY29ycmVjdCB0byBjYWxsIGl0IGhlcmUgaWYgaXQgZGlkIEpTVmFsdWVPcGVy
YW5kIC8gU3BlY3VsYXRlWFhYT3BlcmFuZCwKKyAgICAvLyBhcyBpdCB3b3VsZCBjb25mdXNlIHRo
ZSBERkcgcmVnaXN0ZXIgYWxsb2NhdG9yLgorICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywg
ZWRnZSwgflNwZWNDZWxsQ2hlY2sgfCBTcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZOb3RI
ZWFwQmlnSW50KHZhbHVlUmVncy5ncHIoKSkpOworICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAo
KTsKKyAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICBERkdfVFlQRV9DSEVDSyh2YWx1ZVJl
Z3MsIGVkZ2UsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjQmlnSW50MzIsIG1faml0LmJyYW5jaElmTm90
QmlnSW50MzIodmFsdWVSZWdzLmdwcigpLCB0ZW1wR1BSKSk7CisgICAgZG9uZS5saW5rKCZtX2pp
dCk7Cit9CisKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJpZ0ludDMyKEVk
Z2UgZWRnZSkKK3sKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShl
ZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworCisgICAgbV9p
bnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNCaWdJbnQzMik7CisgICAgaWYgKHZhbHVlLmlz
Q2xlYXIoKSkgeworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkp
CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKwor
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0
ZXIoKTsKKyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIEdQUlJlZyBn
cHIgPSBhbGxvY2F0ZSgpOworCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7Cisg
ICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKKyAgICAgICAg
ICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFu
dCk7CisgICAgICAgICAgICBBU1NFUlQoanNWYWx1ZS5pc0JpZ0ludDMyKCkpOworICAgICAgICAg
ICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29k
ZShqc1ZhbHVlKSksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVh
bSwgZ3ByLCBEYXRhRm9ybWF0SlNCaWdJbnQzMik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOwor
ICAgICAgICB9CisKKyAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxG
b3JtYXQoKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2Rl
LCAoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRCaWdJbnQzMiwgc3BpbGxGb3JtYXQpOworCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKworICAgICAgICBpZiAoc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEJpZ0ludDMyKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5v
dCB5ZXQgaW1wbGVtZW50ZWQgdGhpcworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEpTQmlnSW50MzIpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICAgICAgfQorCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIGluZm8uZmls
bEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIG1fZ3Bycy51
bmxvY2soZ3ByKTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorCisgICAgY2FzZSBEYXRh
Rm9ybWF0SlM6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0eXBlICYgflNwZWNCaWdJbnQzMikgeworICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CisgICAgICAgICAg
ICBHUFJSZWcgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTnVtYmVyKGdwcikpOworICAgICAgICAgICAgZmFpbHVyZUNh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoZ3ByLCB0
ZW1wR1BSKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsIGZhaWx1cmVDYXNlcyk7CisgICAgICAgICAgICB1bmxvY2sodGVtcEdQ
Uik7CisgICAgICAgIH0KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEpTQmlnSW50MzIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAg
IGNhc2UgRGF0YUZvcm1hdEpTQmlnSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8u
Z3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBncHI7Cisg
ICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRK
U0Jvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRE
b3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICBjYXNlIERhdGFGb3JtYXRJ
bnQ1MjoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICBjYXNlIERhdGFGb3Jt
YXRCaWdJbnQzMjoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG1fY3VycmVudE5v
ZGUsICJCYWQgZGF0YSBmb3JtYXQiKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnROb2RlLCAiQ29ycnVwdCBkYXRhIGZvcm1hdCIpOwor
ICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEJJ
R0lOVDMyKQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0RXF1YWxp
dHkoRWRnZSBvYmplY3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkKQogewogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIG9wMSh0aGlzLCBvYmplY3RDaGlsZCk7CkBAIC0xNTU2LDYgKzE3MzksNjEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFuY2goTm9kZSogbm9k
ZSwgTm9kZSogYnJhbmNoTm9kZSwgSkkKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAorI2lmIFVT
RShCSUdJTlQzMikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVCaWdJbnQzMkNvbXBhcmUo
Tm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9u
KQoreworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKwor
ICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5n
cHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgaWYgKGNv
bmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwgfHwgY29uZGl0aW9uID09IE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVuYm94IHRoZSBvcGVy
YW5kcywgc2luY2UgdGhlIHRhZyBiaXRzIGFyZSBpZGVudGljYWwKKyAgICAgICAgbV9qaXQuY29t
cGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQ
UlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwg
dGVtcEdQUik7CisgICAgICAgIG1faml0LnVuYm94QmlnSW50MzIodGVtcEdQUik7CisgICAgICAg
IG1faml0Lm1vdmUob3AyR1BSLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC51bmJveEJpZ0lu
dDMyKHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24sIHRlbXBH
UFIsIHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBhZGQgYSBE
YXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1faml0Lm9yMzIoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFu
KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQmlnSW50MzJCcmFu
Y2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24gY29uZGl0aW9uKQoreworICAgIC8vIE90aGVyIGNvbmRpdGlvbnMgd291bGQgcmVx
dWlyZSB1bmJveGluZyB0aGUgQmlnSW50MzIgdG8gZ2V0IGNvcnJlY3QgcmVzdWx0cyBvbiBuZWdh
dGl2ZSBudW1iZXJzLgorICAgIEFTU0VSVChjb25kaXRpb24gPT0gTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsIHx8IGNvbmRpdGlvbiA9PSBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwpOworCisgICAgQmFz
aWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOwor
ICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RU
YWtlbi5ibG9jazsKKworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2gg
dG8gdGhlIHRha2VuIGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtl
biB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBm
YWxsIHRocm91Z2guCisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNv
bmRpdGlvbiA9IEpJVENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNC
bG9jayogdG1wID0gdGFrZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5v
dFRha2VuID0gdG1wOworICAgIH0KKworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUJpZ0ludDMyT3BlcmFuZCBvcDIo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgYnJhbmNoNjQoY29uZGl0aW9uLCBvcDEuZ3By
KCksIG9wMi5ncHIoKSwgdGFrZW4pOworICAgIGp1bXAobm90VGFrZW4pOworfQorI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0
cihOb2RlKiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTQwODIsNiArNDMyMCwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSXNCaWdJ
bnQ6IHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuZ3ByKCkpOwor
CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayks
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmFuZDY0KHZhbHVlLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlc3VsdEdQUik7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnRpbnVhdGlvbiA9IG1faml0Lmp1bXAoKTsKKworICAg
ICAgICBpc0NlbGwubGluaygmbV9qaXQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Mg
PSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxl
cjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpT
Q2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGVhcEJpZ0ludFR5cGUp
LCByZXN1bHRHUFIpOworCisgICAgICAgIGNvbnRpbnVhdGlvbi5saW5rKCZtX2ppdCk7CisgICAg
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyNlbHNlCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6IHsKICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA3NWYzYTA2YjBm
Yy4uNmEyNTRjZTdjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMTI1LDcgKzEyNSw4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoK
ICAgICAgICAgY2FzZSBWYWx1ZUJpdFhvcjogewotICAgICAgICAgICAgaWYgKG1fbm9kZS0+Ymlu
YXJ5VXNlS2luZCgpID09IEJpZ0ludFVzZSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91
bGQgbWF5YmUgc3VwcG9ydCB0aGUgY2FzZSB3aGVyZSBvbmUgb3BlcmFuZCBpcyBhbHdheXMgSGVh
cEJpZ0ludCBhbmQgdGhlIG90aGVyIGlzIGFsd2F5cyBCaWdJbnQzMj8KKyAgICAgICAgICAgIGlm
IChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRVc2UgfHwgbV9ub2RlLT5iaW5h
cnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0g
SGVhcEJpZ0ludFVzZSkKICAgICAgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzc1LDcgKzM3Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
IChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBCaWdJbnRVc2UpCisgICAgICAgICAgICBpZiAo
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gQmlnSW50MzJVc2UgfHwgbV9ub2RlLT5iaW5hcnlV
c2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBB
bnlCaWdJbnRVc2UpCiAgICAgICAgICAgICAgICAgaGFuZGxlQ29tbXV0YXRpdml0eSgpOwogCiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
CmluZGV4IDhlZjczYjZmMmU4Li5hYjYzMWM5Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1LDggKzE0NSwxNCBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgU3ltYm9sVXNl
OgogICAgICAgICBvdXQucHJpbnQoIlN5bWJvbCIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBCaWdJbnRVc2U6Ci0gICAgICAgIG91dC5wcmludCgiQmlnSW50Iik7CisgICAgY2FzZSBBbnlC
aWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiQW55QmlnSW50Iik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSGVhcEJpZ0lu
dCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgb3V0
LnByaW50KCJCaWdJbnQzMiIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdPYmpl
Y3RVc2U6CiAgICAgICAgIG91dC5wcmludCgiU3RyaW5nT2JqZWN0Iik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDljMTNjNWJjZDM1Li5mNGY3YjMzYmI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw3ICs2Niw5IEBAIGVu
dW0gVXNlS2luZCB7CiAgICAgS25vd25TdHJpbmdVc2UsCiAgICAgS25vd25QcmltaXRpdmVVc2Us
IC8vIFRoaXMgYml6YXJyZSB0eXBlIGFyaXNlcyBmb3Igb3Bfc3RyY2F0LCB3aGljaCBoYXMgYSBi
eXRlY29kZSBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIG9ubHkgc2VlIHByaW1pdGl2ZXMgKGkuZS4g
bm90IG9iamVjdHMpLgogICAgIFN5bWJvbFVzZSwKLSAgICBCaWdJbnRVc2UsCisgICAgQW55Qmln
SW50VXNlLAorICAgIEhlYXBCaWdJbnRVc2UsCisgICAgQmlnSW50MzJVc2UsCiAgICAgRGF0ZU9i
amVjdFVzZSwKICAgICBNYXBPYmplY3RVc2UsCiAgICAgU2V0T2JqZWN0VXNlLApAQCAtMTUyLDgg
KzE1NCwxMiBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVz
ZUtpbmQpCiAgICAgICAgIHJldHVybiBTcGVjSGVhcFRvcCAmIH5TcGVjT2JqZWN0OwogICAgIGNh
c2UgU3ltYm9sVXNlOgogICAgICAgICByZXR1cm4gU3BlY1N5bWJvbDsKLSAgICBjYXNlIEJpZ0lu
dFVzZToKKyAgICBjYXNlIEFueUJpZ0ludFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQ7
CisgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0hlYXBCaWdJbnQ7
CisgICAgY2FzZSBCaWdJbnQzMlVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNCaWdJbnQzMjsKICAg
ICBjYXNlIFByb21pc2VPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUHJvbWlzZU9iamVj
dDsKICAgICBjYXNlIERhdGVPYmplY3RVc2U6CkBAIC0yMTIsMjQgKzIxOCw2IEBAIGlubGluZSBi
b29sIG1heUhhdmVUeXBlQ2hlY2soVXNlS2luZCBraW5kKQogICAgIHJldHVybiAhc2hvdWxkTm90
SGF2ZVR5cGVDaGVjayhraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2lu
ZCBraW5kKQotewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgSW50MzJVc2U6Ci0gICAg
Y2FzZSBLbm93bkludDMyVXNlOgotICAgIGNhc2UgTnVtYmVyVXNlOgotICAgIGNhc2UgUmVhbE51
bWJlclVzZToKLSAgICBjYXNlIEludDUyUmVwVXNlOgotICAgIGNhc2UgRG91YmxlUmVwVXNlOgot
ICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIEFueUludFVzZToKLSAgICBjYXNl
IERvdWJsZVJlcEFueUludFVzZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogaW5saW5lIGJvb2wgaXNEb3VibGUo
VXNlS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjYxLDcgKzI0OSw3IEBA
IGlubGluZSBib29sIGlzQ2VsbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBTdHJpbmdVc2U6CiAg
ICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICBjYXNlIFN5bWJvbFVzZToKLSAgICBjYXNlIEJp
Z0ludFVzZToKKyAgICBjYXNlIEhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RV
c2U6CiAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICBjYXNlIERhdGVPYmpl
Y3RVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggZmE3NGFmY2I5OWUuLjhhZTk4MjA1MTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjAsNiArMjYwLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJc1VuZGVmaW5l
ZE9yTnVsbDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgorICAgIGNh
c2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBOdW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVj
dDoKICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgpAQCAtNDgzLDcgKzQ4NCw5IEBAIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFN0
cmluZ09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0
VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgU3ltYm9sVXNlOgotICAgICAgICAgICAgICAgIGNh
c2UgQmlnSW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgQW55QmlnSW50VXNlOgorICAgICAg
ICAgICAgICAgIGNhc2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBIZWFwQmln
SW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRGF0ZU9iamVjdFVzZToKICAgICAgICAgICAg
ICAgICBjYXNlIE1hcE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIFNldE9iamVjdFVz
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRl
eCA1YjQ5MjVjZmZiYy4uYzBmNGYyYjA2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBDb21tb25WYWx1
ZXM6OmluaXRpYWxpemVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYgcHJvYywgQjM6OkJhc2ljQmxv
Y2sqIGJsb2MKICAgICBpbnRQdHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDMpOwogICAgIGludFB0ckVpZ2h0ID0gYmxvY2stPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgOCk7CiAgICAgZG91YmxlWmVybyA9IGJs
b2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDAuKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgYmlnSW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBKU1ZhbHVlOjpCaWdJbnQzMlRhZyk7CisjZW5kaWYK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tbW9uVmFsdWVzLmgKaW5kZXggYzFkNmQ1YTU1MWQuLjMxYTM5MzI5MDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU2LDcgKzU2
LDEwIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07CiAgICAg
TFZhbHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBkb3VibGVaZXJvIHsg
bnVsbHB0ciB9OwotICAgIAorI2lmIFVTRShCSUdJTlQzMikKKyAgICBMVmFsdWUgYmlnSW50MzJa
ZXJvIHsgbnVsbHB0ciB9OworI2VuZGlmCisKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQg
eyAwIH07CiAgICAgY29uc3QgdW5zaWduZWQgcHJvZktpbmQgeyAwIH07CiAgICAgY29uc3QgTFZh
bHVlIGJyYW5jaFdlaWdodHMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTNlYmY3MWI2MWQuLjQzNTI0ZGZkZjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0x
MzU2LDYgKzEzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzTnVtYmVyOgogICAgICAg
ICAgICAgY29tcGlsZUlzTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBJc0JpZ0ludDoKKyAgICAgICAgICAgIGNvbXBpbGVJc0JpZ0ludCgpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVySXNJbnRlZ2VyOgogICAgICAgICAgICAgY29tcGls
ZU51bWJlcklzSW50ZWdlcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTM5LDExICsyMTQy
LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0gICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKyNpZiBV
U0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnQz
MlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50MzIobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQzMihtX25vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRMZWZ0ID0gdW5ib3hCaWdJ
bnQzMihsZWZ0KTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmlnaHQgPSB1bmJveEJpZ0lu
dDMyKHJpZ2h0KTsKKworICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQuc3Bl
Y3VsYXRlQWRkKHVuYm94ZWRMZWZ0LCB1bmJveGVkUmlnaHQpOworICAgICAgICAgICAgYmxlc3NT
cGVjdWxhdGlvbihyZXN1bHQsIE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3JpZ2lu
KTsKKworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gYm94QmlnSW50MzIocmVzdWx0
KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoYm94ZWRSZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVh
cEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxv
d0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQWRkQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjE2MCwxMSArMjE4
MCwyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
IAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAg
ICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50
MzJVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2Rl
LT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkTGVmdCA9IHVuYm94Qmln
SW50MzIobGVmdCk7CisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZFJpZ2h0ID0gdW5ib3hCaWdJ
bnQzMihyaWdodCk7CisKKyAgICAgICAgICAgIENoZWNrVmFsdWUqIHJlc3VsdCA9IG1fb3V0LnNw
ZWN1bGF0ZVN1Yih1bmJveGVkTGVmdCwgdW5ib3hlZFJpZ2h0KTsKKyAgICAgICAgICAgIGJsZXNz
U3BlY3VsYXRpb24ocmVzdWx0LCBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX29yaWdp
bik7CisKKyAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IGJveEJpZ0ludDMyKHJlc3Vs
dCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGJveGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0hl
YXBCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblN1YkJpZ0lu
dCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJIZWFwQmln
SW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTIxODEsMTEgKzIyMTgsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0lu
dFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hp
bGQyKCkpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEJpZ0ludDMyVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJ
bnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0Jp
Z0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMVmFsdWUgdW5ib3hlZExl
ZnQgPSB1bmJveEJpZ0ludDMyKGxlZnQpOworICAgICAgICAgICAgTFZhbHVlIHVuYm94ZWRSaWdo
dCA9IHVuYm94QmlnSW50MzIocmlnaHQpOworCisgICAgICAgICAgICBDaGVja1ZhbHVlKiByZXN1
bHQgPSBtX291dC5zcGVjdWxhdGVNdWwodW5ib3hlZExlZnQsIHVuYm94ZWRSaWdodCk7CisgICAg
ICAgICAgICBibGVzc1NwZWN1bGF0aW9uKHJlc3VsdCwgT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vcmlnaW4pOworCisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSBib3hC
aWdJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShib3hlZFJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVl
IGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTXVs
QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25NdWxIZWFwQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIy
ODksNyArMjM0MywyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhC
aW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlOwotICAgICAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBJQyB5ZXQuCisgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxk
MigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBub25SZXBhdGNoaW5nRnVuY3Rp
b24sIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SlNWYWx1ZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFs
dWUobm9kZS0+Y2hpbGQyKCkpOwogCkBAIC0yNTU4LDExICsyNjI2LDEyIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVEaXYoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkp
IHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAvLyBGSVhNRTogYWRkIGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlCisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAg
ICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25EaXZCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjM3LDE4ICsyNzA2LDIxIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb21waWxlVmFsdWVNb2QoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpID09IEJpZ0lu
dFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgYSBCaWdJbnQzMiBmYXN0IHBhdGggaGVyZQor
ICAgICAgICBpZiAobV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gSGVhcEJpZ0ludFVzZSkgewor
ICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dIZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxk
MigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Nb2RCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwg
b3BlcmF0aW9uTW9kSGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwg
cmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+YmluYXJ5VXNlS2lu
ZCgpKTsKLSAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkgPT0gVW50eXBlZFVzZSB8fCBtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSA9PSBBbnlCaWdJbnRV
c2UsIG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKTsKKyAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZShtX25vZGUsIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25WYWx1ZU1vZCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgfQpAQCAtMjgxMywxNyArMjg4NSwyMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29tcGlsZVZhbHVlUG93KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChCaWdJbnRVc2UpKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgLy8gRklYTUU6IG1heWJlIGFkZCBhIGZhc3QgcGF0aCBmb3IgQmlnSW50MzIgaGVy
ZQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uUG93QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxP
YmplY3QpLCBiYXNlLCBleHBvbmVudCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGJhc2UsIGV4cG9uZW50KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVz
dWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBi
YXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGV4cG9u
ZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEFueUJpZ0ludFVzZSkpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGV4
cG9uZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlUG93LCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICB9CkBAIC0zMjA0LDkgKzMyODAsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBp
bGVWYWx1ZUJpdE5vdCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwot
ICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7Ci0g
ICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uQml0Tm90QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBvcGVyYW5kKTsKKwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IEJpZ0ludDMyVXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgb3BlcmFuZCA9IGxvd0JpZ0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0cmlj
ayByZWxpZXMgb24gZGV0YWlscyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgQmlnSW50MzIsIGFu
ZCB3aWxsIGhhdmUgdG8gYmUgdXBkYXRlZCBpZiB3ZSBtb3ZlIGJpdHMgYXJvdW5kLgorICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydChKU1ZhbHVlOjpCaWdJbnQzMlRhZyA9PSAweDEyKTsKKyAgICAg
ICAgICAgIHN0YXRpY19hc3NlcnQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrID09IDB4ZmZmZTAwMDAw
MDAwMDAxMik7CisgICAgICAgICAgICB1aW50NjRfdCBtYXNrRm9yQmlnSW50MzJCaXRzID0gMHgw
MDAwZmZmZmZmZmYwMDAwOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhv
cihvcGVyYW5kLCBtX291dC5jb25zdEludDY0KG1hc2tGb3JCaWdJbnQzMkJpdHMpKTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorI2VuZGlmCisKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEhl
YXBCaWdJbnRVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBvcGVyYW5kID0gbG93SGVhcEJpZ0lu
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
cG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgb3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMjQsMTEgKzMzMTQsMjMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdEFuZCgpCiAgICAgewogICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
QmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChCaWdJbnQzMlVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQg
dG8gdW5ib3gsIHNpbmNlIHRoZSB0YWdnaW5nIGlzIG5vdCBhZmZlY3RlZCBieSBiaXRBbmQKKyAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5iaXRBbmQobGVmdCwgcmlnaHQpOworICAg
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJp
Z0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQo
bV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0QW5kQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI0NCwx
MSArMzM0NiwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQml0T3IoKQogICAg
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdE9yQmlnSW50LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAvLyBObyBuZWVkIHRvIHVuYm94LCBzaW5jZSB0aGUgdGFnZ2luZyBpcyBub3QgYWZmZWN0
ZWQgYnkgYml0QW5kCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IobGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyNjQs
MTEgKzMzNzgsMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUJpdFhvcigpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewotICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0WG9yQmlnSW50LCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
ICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAg
ICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0TWlzc2luZ1RhZyA9IG1fb3V0LmJpdFhvcihsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYml0T3IocmVzdWx0TWlzc2lu
Z1RhZywgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKKworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVz
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SGVhcEJpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0hlYXBCaWdJbnQobV9ub2Rl
LT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQml0WG9ySGVhcEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjg0LDExICszNDEwLDI5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRSU2hpZnQoKQogICAgIHsKICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9k
ZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50
ZXJUeXBlKCksIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbGVmdCwgcmlnaHQpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEFueUJpZ0ludFVzZSkgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogZG8gc29tZXRoaW5nIHNt
YXJ0ZXIgaGVyZQorICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBhIGJpdCB0cmlja3kgYmVjYXVz
ZSBhIHJpZ2h0LXNoaWZ0IGJ5IGEgbmVnYXRpdmUgbnVtYmVyIGlzIGEgbGVmdC1zaGlmdCBmb3Ig
QmlnSW50cy4KKyAgICAgICAgICAgIC8vIFNvIGV2ZW4gYSByaWdodCBzaGlmdCBjYW4gb3ZlcmZs
b3cuCisKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICAgICAgc3BlY3VsYXRlKG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGUobV9ub2RlLCBtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25WYWx1ZUJp
dFJTaGlmdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgcmlnaHQpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50
LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMz
MDAsMjQgKzM0NDQsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0
LmFTaHIoCiAgICAgICAgICAgICBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwKLSAgICAgICAg
ICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29uc3RJ
bnQzMigzMSkpKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5j
aGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOyAvLyBGSVhNRTogSSBkb24ndCB0aGlu
ayB0aGF0IHRoZSBCaXRBbmQgaXMgdXNlZnVsLCBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2VtYW50
aWNzIG9mIHNoaWZ0IGluIEIzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFyaXRoQml0
TFNoaWZ0KCkKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnNobCgKICAgICAgICAgICAg
IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsKKyAgICAg
ICAgICAgIG1fb3V0LmJpdEFuZChsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSwgbV9vdXQuY29u
c3RJbnQzMigzMSkpKSk7IC8vIEZJWE1FOiBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIEJpdEFuZCBp
cyB1c2VmdWwsIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBzZW1hbnRpY3Mgb2Ygc2hpZnQgaW4gQjMK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVCaXRMU2hpZnQoKQogICAgIHsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEJpZ0ludFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93Qmln
SW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5n
IGEgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiBoZXJlLgorICAgICAgICBpZiAobV9ub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0hlYXBCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0
TFNoaWZ0QmlnSW50LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsZWZ0LCByaWdodCk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlv
bkJpdExTaGlmdEhlYXBCaWdJbnQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxlZnQsIHJp
Z2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzMzNCw3ICszNDc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgICAgICBzZXRJbnQzMihtX291dC5sU2hyKAogICAgICAgICAgICAgbG93SW50MzIobV9ub2Rl
LT5jaGlsZDEoKSksCi0gICAgICAgICAgICBtX291dC5iaXRBbmQobG93SW50MzIobV9ub2RlLT5j
aGlsZDIoKSksIG1fb3V0LmNvbnN0SW50MzIoMzEpKSkpOworICAgICAgICAgICAgbV9vdXQuYml0
QW5kKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludDMyKDMxKSkpKTsg
Ly8gRklYTUU6IEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQml0QW5kIGlzIHVzZWZ1bCwgaXQgaXMg
aW5jbHVkZWQgaW4gdGhlIHNlbWFudGljcyBvZiBzaGlmdCBpbiBCMwogICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcigpCkBAIC03Mzg0LDYgKzc1MjksOSBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEo
KSkubV90eXBlICYgKFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNCaWdJbnQpKSB7CiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBub3ROdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOworI2lmIFVTRShC
SUdJTlQzMikKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyID0gbV9vdXQubmV3
QmxvY2soKTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsUGF0aCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOwpAQCAtNzM5MywxMCArNzU0MSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAvLyBub3ROdW1iZXIgY2FzZS4KICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8obm90TnVtYmVyLCBjb250aW51YXRpb24pOworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RC
aWdJbnQzMikpOworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzIpOworI2Vu
ZGlmCiAgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1f
bm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGlzQ2VsbFBhdGgpLCB1bnN1cmUoc2xvd1BhdGgpKTsK
IAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsUGF0aCk7Ci0gICAgICAgICAgICBt
X291dC5icmFuY2goaXNCaWdJbnQodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkp
LCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHNsb3dQYXRoKSk7CisgICAgICAgICAgICBt
X291dC5icmFuY2goaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQx
KCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShzbG93UGF0aCkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCk7CiAgICAgICAgICAgICAv
LyBXZSBoYXZlIHNldmVyYWwgYXR0ZW1wdHMgdG8gcmVtb3ZlIFRvTnVtZXJpYy4gQnV0IFRvTnVt
ZXJpYyBzdGlsbCBleGlzdHMuCkBAIC04NDY2LDcgKzg2MTgsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCiAgICAgICAgICAg
ICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBt
X25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJpZ0ludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEFueUJpZ0ludFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0
RXEoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODUwOSw3ICs4NjY0LDEw
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGxvd0ludDMyKG1fbm9k
ZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50MzJVc2UpKSB7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgICAgIC8vIE5vIG5lZWQgdG8gdW5ib3ggc2luY2UgdGhlIHRhZyBiaXRzIGFyZSB0aGUgc2Ft
ZSBvbiBib3RoIHNpZGVzCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXF1YWwo
bGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEFueUJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOworCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHN0
YXJ0IHdpdGggaWYgKGxlZnQgPT0gcmlnaHQpLCBiZWNhdXNlIHdlIG11c3QgaW5zZXJ0IHRoZSBy
aWdodCBjaGVja3MgKHNlZSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gYWJvdmUpCisgICAgICAg
ICAgICAvLyBUaGUgY29kZSB0aGF0IHdlIGdlbmVyYXRlIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2lu
ZyBwc2V1ZG8tY29kZToKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgaWYgKGlzQmlnSW50
MzIobGVmdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNCaWdJbnQzMihyaWdodCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ID09IHJpZ2h0OworICAgICAgICAgICAgICAgIENI
RUNLKGlzSGVhcEJpZ0ludChyaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKEpT
QmlnSW50OjplcXVhbHNUb0ludDMyKHJpZ2h0LCB1bmJveGVkKGxlZnQpKTsKKyAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KGxlZnQpKQorICAgICAgICAgICAg
IGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgIGlmIChpc0JpZ0ludDMyKHJpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bChKU0JpZ0ludDo6ZXF1YWxzVG9JbnQzMihsZWZ0LCB1bmJveGVkKHJpZ2h0KSk7CisgICAgICAg
ICAgICAgQ0hFQ0soaXNIZWFwQmlnSW50KHJpZ2h0KSk7CisgICAgICAgICAgICAgcmV0dXJuIGNh
bGwoSlNCaWdJbnQ6OmVxdWFscyhsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0JpZ0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgICAgICBMQmFzaWNCbG9jayBvbmx5TGVmdElzQmlnSW50MzIgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90QmlnSW50MzIgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVmdEVxdWFsc1JpZ2h0ID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0hlYXBCaWdJ
bnQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0Jp
Z0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0
SXNOb3RCaWdJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICAvLyBJbnNl
cnRzIGEgY2hlY2sgdGhhdCBhIHZhbHVlIGlzIGEgSGVhcEJpZ0ludCwgYXNzdW1pbmcgb25seSB0
aGF0IHdlIGtub3cgaXQgaXMgbm90IGEgQmlnSW50MzIKKyAgICAgICAgICAgIGF1dG8gY2hlY2tJ
c0hlYXBCaWdJbnQgPSBbJl0oTFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1ZSkgeworICAg
ICAgICAgICAgICAgIGlmIChtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGhpZ2hWYWx1ZSwg
U3BlY0hlYXBCaWdJbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtYXlIYXZlVHlw
ZUNoZWNrKGhpZ2hWYWx1ZS51c2VLaW5kKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVl
IGNoZWNrRmFpbGVkID0gaXNOb3RIZWFwQmlnSW50VW5rbm93bldoZXRoZXJDZWxsKGxvd1ZhbHVl
LCB+U3BlY0JpZ0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kT1NSRXhpdChCYWRU
eXBlLCBqc1ZhbHVlVmFsdWUobG93VmFsdWUpLCBoaWdoVmFsdWUubm9kZSgpLCBjaGVja0ZhaWxl
ZCwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0ludDMyKGxlZnQsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDEoKSkpLCB1bnN1cmUobGVmdElzQmlnSW50MzIpLCB1bnN1cmUobGVmdElzTm90QmlnSW50
MzIpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhsZWZ0SXNCaWdJbnQzMiwgYm90aEFyZUJpZ0ludDMyKTsKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc0JpZ0ludDMyKHJpZ2h0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQyKCkpKSwgdW5z
dXJlKGJvdGhBcmVCaWdJbnQzMiksIHVuc3VyZShvbmx5TGVmdElzQmlnSW50MzIpKTsKKworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYm90aEFyZUJpZ0ludDMyLCBvbmx5TGVmdElzQmlnSW50
MzIpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0Qm90aEFyZUJpZ0ludDMyID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG9ubHlM
ZWZ0SXNCaWdJbnQzMiwgbGVmdElzTm90QmlnSW50MzIpOworICAgICAgICAgICAgY2hlY2tJc0hl
YXBCaWdJbnQocmlnaHQsIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHVu
Ym94ZWRMZWZ0ID0gdW5ib3hCaWdJbnQzMihsZWZ0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHJlc3VsdExlZnRJc0JpZ0ludDMyID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1D
YWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyLCB3
ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCByaWdodCwgdW5ib3hlZExlZnQpKSk7CisgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGxlZnRJc05vdEJpZ0ludDMyLCBsZWZ0RXF1YWxzUmlnaHQpOworICAgICAgICAgICAgY2hl
Y2tJc0hlYXBCaWdJbnQobGVmdCwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpLCB1bnN1cmUobGVmdEVxdWFsc1JpZ2h0
KSwgdW5zdXJlKGxlZnRJc0hlYXBCaWdJbnQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obGVmdEVxdWFsc1JpZ2h0LCBsZWZ0SXNIZWFwQmlnSW50KTsKKyAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHJlc3VsdExlZnRFcXVhbHNSaWdodCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29s
ZWFuVHJ1ZSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0hlYXBCaWdJbnQsIHJpZ2h0SXNCaWdJbnQzMik7
CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNCaWdJbnQzMihyaWdodCwgcHJvdmVuVHlwZSht
X25vZGUtPmNoaWxkMigpKSksIHVuc3VyZShyaWdodElzQmlnSW50MzIpLCB1bnN1cmUocmlnaHRJ
c05vdEJpZ0ludDMyKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNCaWdJ
bnQzMiwgcmlnaHRJc05vdEJpZ0ludDMyKTsKKyAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkUmln
aHQgPSB1bmJveEJpZ0ludDMyKHJpZ2h0KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHJl
c3VsdFJpZ2h0SXNCaWdJbnQzMiA9IG1fb3V0LmFuY2hvcihtX291dC5ub3ROdWxsKHZtQ2FsbChw
b2ludGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlRXFIZWFwQmlnSW50VG9JbnQzMiwgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgbGVmdCwgdW5ib3hlZFJpZ2h0KSkpOworICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhy
aWdodElzTm90QmlnSW50MzIsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBjaGVja0lzSGVh
cEJpZ0ludChyaWdodCwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTog
W0VTTmV4dF1bQmlnSW50XSBDcmVhdGUgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBzdHJpY3QgZXF1
YWxzIGZvciBiaWcgaW50cworICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mjg5NQorICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmVzdWx0
Qm90aEhlYXBCaWdJbnQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsZWZ0LCByaWdodCkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0Qm90aEFyZUJp
Z0ludDMyLCByZXN1bHRMZWZ0SXNCaWdJbnQzMiwgcmVzdWx0TGVmdEVxdWFsc1JpZ2h0LCByZXN1
bHRSaWdodElzQmlnSW50MzIsIHJlc3VsdEJvdGhIZWFwQmlnSW50KSk7CisKKyAgICAgICAgICAg
IG1faW50ZXJwcmV0ZXIuZmlsdGVyKG1fbm9kZS0+Y2hpbGQxKCksIFNwZWNCaWdJbnQpOworICAg
ICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIobV9ub2RlLT5jaGlsZDIoKSwgU3BlY0JpZ0lu
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCisKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSkg
ewogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwpAQCAtODU5MiwxMSAr
ODg0NSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoQmlnSW50VXNlKSkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVk
IHZlcnNpb24gb2Ygc3RyaWN0IGVxdWFscyBmb3IgQmlnSW50VXNlCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IFtFU05leHRdW0JpZ0ludF0gQ3JlYXRlIHNwZWNpYWxpemVkIHZlcnNpb24gb2Ygc3RyaWN0
IGVxdWFscyBmb3IgYmlnIGludHMKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4OTUKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93
QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93
QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dI
ZWFwQmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0g
bG93SGVhcEJpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbm90VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04NjgyLDYg
Kzg5MzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAg
ICAgICAgLy8gRklYTUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyIGhlcmUsIHNl
ZSB0aGUgREZHU3BlY3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKTsKICAgICAgICAg
bm9uU3BlY3VsYXRpdmVDb21wYXJlKAogICAgICAgICAgICAgWyZdIChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7CkBAIC0xMDY0NSw3ICsxMDg5OSwzNyBAQCBwcml2YXRlOgogICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgc2V0Qm9vbGVh
bihtX291dC5waGkoSW50MzIsIHRydWVSZXN1bHQsIGZhbHNlUmVzdWx0LCBwYXRjaHBvaW50UmVz
dWx0KSk7CiAgICAgfQotICAgIAorCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZvaWQgY29tcGls
ZUlzQmlnSW50KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzTm90Q2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxD
YXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c05vdENlbGxDYXNlLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBm
aWx0ZXIgdGhlIHByb3ZlblR5cGUgdG8gaW5jbHVkZSB0aGUgZmFjdCB0aGF0IHdlIGtub3cgd2Ug
YXJlIG5vdCBkZWFsaW5nIHdpdGggYSBjZWxsCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENl
bGxSZXN1bHQgPSBtX291dC5hbmNob3IoaXNCaWdJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAg
VmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihpc0NlbGxXaXRoVHlwZSh2
YWx1ZSwgbV9ub2RlLT5xdWVyaWVkVHlwZSgpLCBtX25vZGUtPnNwZWN1bGF0ZWRUeXBlRm9yUXVl
cnkoKSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVz
dWx0LCBjZWxsUmVzdWx0KSk7CisgICAgfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKKyAg
ICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIEFMV0FZU19JTkxJTkUgdm9pZCBjb21waWxlSXNCaWdJ
bnQoKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggQmlnSW50
MzIsIHdlIHNob3VsZCBqdXN0IGVtaXQgSXNDZWxsV2l0aFR5cGUoSGVhcEJpZ0ludCkgaW5zdGVh
ZC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisjZW5kaWYK
ICAgICB2b2lkIGNvbXBpbGVJc0NlbGxXaXRoVHlwZSgpCiAgICAgewogICAgICAgICBpZiAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewpAQCAtMTQzODMsOSArMTQ2
NjcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVtaXRCaW5hcnlTbmlwcGV0KEpfSklUT3BlcmF0
aW9uX0dKSiBzbG93UGF0aEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1f
bm9kZTsKLSAgICAgICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQy
KCkpOworCisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNW
YWx1ZShub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAg
c3BlY3VsYXRlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUtPmNoaWxk
MigpKTsKIAogICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7CiAgICAgICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUo
KSk7CkBAIC0xNDQ1MSw4ICsxNDczNywxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNW
YWx1ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUo
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVu
dHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChBbnlCaWdJbnRVc2UpKTsKKyAgICAg
ICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG5vZGUtPmNo
aWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQy
KCkpOwogCiAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKICAgICAgICAgU25pcHBldE9wZXJhbmQg
cmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkucmVzdWx0VHlwZSgp
KTsKQEAgLTE1MDY0LDcgKzE1MzUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6
CiAgICAgICAgICAgICAvLyBpZiAodmFsdWUgaXMgY2VsbCkgewotICAgICAgICAgICAgLy8gICAg
IGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgICAgICAgICAgLy8g
ICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAgICAg
ICAgIC8vICAgICAgICAgcmVzdWx0ID0gISF2YWx1ZS0+bGVuZ3RoCiAgICAgICAgICAgICAvLyAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdzIGZvciBtYXNx
dWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTE1MDc0LDYgKzE1MzYzLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUpCiAgICAgICAgICAg
ICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIG51bWJlcikgewogICAgICAgICAgICAgLy8gICAgIHJl
c3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHZh
bHVlIGlzIEJpZ0ludDMyKSB7CisgICAgICAgICAgICAvLyAgICAgcmVzdWx0ID0gKHZhbHVlICE9
IEJpZ0ludDMyVGFnKQogICAgICAgICAgICAgLy8gfSBlbHNlIHsKICAgICAgICAgICAgIC8vICAg
ICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAgICAgICAgIC8vIH0KQEAgLTE1MDgxLDEz
ICsxNTM3MiwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBzdHJpbmdDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJpZ0ludENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nT3JC
aWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGhl
YXBCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5vdFN0cmluZ05vckhlYXBCaWdJbnRDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBub3RJbnQzMkNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBub3REb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgICAgICAgICBMQmFzaWNCbG9jayBiaWdJbnQzMkNhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90QmlnSW50MzJDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKKyNlbmRpZgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9y
PFZhbHVlRnJvbUJsb2NrPiByZXN1bHRzOwpAQCAtMTUxMDEsMjAgKzE1Mzk2LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZ0Nh
c2UsIHN0cmluZ0Nhc2UpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAg
ICAgIGlzQmlnSW50KHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgKFNwZWNDZWxsIC0gU3BlY1N0
cmluZykpLAotICAgICAgICAgICAgICAgIHVuc3VyZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdFN0
cmluZ09yQmlnSW50Q2FzZSkpOworICAgICAgICAgICAgICAgIGlzSGVhcEJpZ0ludCh2YWx1ZSwg
cHJvdmVuVHlwZShlZGdlKSAmIChTcGVjQ2VsbCAtIFNwZWNTdHJpbmcpKSwKKyAgICAgICAgICAg
ICAgICB1bnN1cmUoaGVhcEJpZ0ludENhc2UpLCB1bnN1cmUobm90U3RyaW5nTm9ySGVhcEJpZ0lu
dENhc2UpKTsKIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3RyaW5nQ2FzZSwgYmlnSW50
Q2FzZSk7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzdHJpbmdDYXNlLCBoZWFwQmlnSW50
Q2FzZSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQubm90
RXF1YWwodmFsdWUsIHdlYWtQb2ludGVyKGpzRW1wdHlTdHJpbmcobV9ncmFwaC5tX3ZtKSkpKSk7
CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGJpZ0ludENhc2UsIG5vdFN0cmluZ09yQmlnSW50Q2FzZSk7CisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhoZWFwQmlnSW50Q2FzZSwgbm90U3RyaW5nTm9ySGVhcEJpZ0lu
dENhc2UpOwogICAgICAgICAgICAgTFZhbHVlIG5vblplcm9CaWdJbnQgPSBtX291dC5ub3RaZXJv
MzIoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUodmFsdWUsIG1faGVh
cHMuSlNCaWdJbnRfbGVuZ3RoKSk7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5h
bmNob3Iobm9uWmVyb0JpZ0ludCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmdP
ckJpZ0ludENhc2UsIG5vdENlbGxDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dFN0cmluZ05vckhlYXBCaWdJbnRDYXNlLCBub3RDZWxsQ2FzZSk7CiAgICAgICAgICAgICBMVmFs
dWUgaXNUcnV0aHlPYmplY3Q7CiAgICAgICAgICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAgICBpc1RydXRoeU9iamVj
dCA9IG1fb3V0LmJvb2xlYW5UcnVlOwpAQCAtMTUxNTcsOCArMTU0NTIsMjIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB1bmJveERvdWJsZSh2YWx1ZSksIG1fb3V0LmNvbnN0RG91YmxlKDAp
KTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihkb3VibGVJc1RydXRo
eSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RG91YmxlQ2FzZSwgYmlnSW50
MzJDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBpc0Jp
Z0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpICYgflNwZWNDZWxsKSwKKyAgICAgICAgICAg
ICAgICB1bnN1cmUoYmlnSW50MzJDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhiaWdJbnQzMkNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7
CisgICAgICAgICAgICBMVmFsdWUgYmlnSW50MzJOb3RaZXJvID0gbV9vdXQubm90RXF1YWwodmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihiaWdJbnQzMk5vdFplcm8pKTsKKyAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90QmlnSW50MzJDYXNlLCBjb250aW51YXRpb24pOworI2Vsc2UKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7Cisj
ZW5kaWYKICAgICAgICAgICAgIExWYWx1ZSBtaXNjSXNUcnV0aHkgPSBtX291dC5lcXVhbCgKICAg
ICAgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHRydWUpKSkpOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KG1pc2NJc1RydXRoeSkpOwpAQCAtMTU3NjMsMTMgKzE2MDcyLDE1IEBAIHByaXZhdGU6CiAgICAg
ICAgIC8vICAgICAgICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsK
ICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2Ug
aWYgKGlzIGJpZ2ludCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50
KSB7CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCiAgICAgICAgIC8vICAgICB9
CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgbnVtYmVyKSB7CiAgICAgICAgIC8vICAgICByZXR1
cm4gbnVtYmVyCisgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYmlnaW50MzIpIHsKKyAgICAgICAg
Ly8gICAgIHJldHVybiBiaWdpbnQKICAgICAgICAgLy8gfSBlbHNlIGlmIChpcyBudWxsKSB7CiAg
ICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxzZSBpZiAoaXMgYm9v
bGVhbikgewpAQCAtMTU3OTcsNiArMTYxMDgsOSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNC
bG9jayBub3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IG51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3RO
dW1iZXJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAg
IExCYXNpY0Jsb2NrIG5vdEJpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisjZW5kaWYK
ICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICBMQmFzaWNCbG9jayBib29sZWFuQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
IExCYXNpY0Jsb2NrIHVuZGVmaW5lZENhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTU4NDks
NyArMTYxNjMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmlu
Z0Nhc2UsIGJpZ0ludENhc2UpOwogICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBp
c0JpZ0ludCh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiAoU3BlY0NlbGwgLSBTcGVjT2JqZWN0
IC0gU3BlY1N0cmluZykpLAorICAgICAgICAgICAgaXNIZWFwQmlnSW50KHZhbHVlLCBwcm92ZW5U
eXBlKGNoaWxkKSAmIChTcGVjQ2VsbCAtIFNwZWNPYmplY3QgLSBTcGVjU3RyaW5nKSksCiAgICAg
ICAgICAgICB1bnN1cmUoYmlnSW50Q2FzZSksIHVuc3VyZShzeW1ib2xDYXNlKSk7CiAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oYmlnSW50Q2FzZSwgc3ltYm9sQ2FzZSk7CkBAIC0xNTg2NSw4ICsx
NjE3OSwxNSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVt
YmVyQ2FzZSwgbm90TnVtYmVyQ2FzZSk7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6TnVt
YmVyKTsKLSAgICAgICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKG5vdE51bWJlckNhc2UsIG5vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5j
aChpc0JpZ0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGNoaWxkKSAmIH5TcGVjQ2VsbCksIHVuc3Vy
ZShiaWdJbnRDYXNlKSwgdW5zdXJlKG5vdEJpZ0ludDMyQ2FzZSkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdEJpZ0ludDMyQ2FzZSwgbm90TnVsbENhc2UpOworI2Vsc2UKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90TnVtYmVyQ2FzZSwgbm90TnVsbENhc2UpOworI2VuZGlmCiAgICAg
ICAgIExWYWx1ZSBpc051bGw7CiAgICAgICAgIGlmIChwcm92ZW5UeXBlKGNoaWxkKSAmIFNwZWNP
dGhlcikKICAgICAgICAgICAgIGlzTnVsbCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwpAQCAtMTY1NjQsMTUgKzE2ODg1LDMzIEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZhbHVlIGxvd0Jp
Z0ludChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09w
ZXJhbmRTcGVjdWxhdGlvbikKKyAgICBMVmFsdWUgbG93SGVhcEJpZ0ludChFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
ICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKTsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdl
LnVzZUtpbmQoKSA9PSBIZWFwQmlnSW50VXNlKTsKIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
bG93Q2VsbChlZGdlLCBtb2RlKTsKLSAgICAgICAgc3BlY3VsYXRlQmlnSW50KGVkZ2UsIHJlc3Vs
dCk7CisgICAgICAgIHNwZWN1bGF0ZUhlYXBCaWdJbnQoZWRnZSwgcmVzdWx0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZh
bHVlIGxvd0JpZ0ludDMyKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0g
QXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQo
KSA9PSBCaWdJbnQzMlVzZSk7CisKKyAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1f
anNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOworICAgICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHJlc3VsdCksIGVkZ2UsIFNwZWNCaWdJ
bnQzMiwgaXNOb3RCaWdJbnQzMihyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQo
KSkpCisgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICByZXR1cm4g
bV9vdXQuYmlnSW50MzJaZXJvOworICAgIH0KKyNlbmRpZgorCiAgICAgTFZhbHVlIGxvd05vbk51
bGxPYmplY3QoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE9i
amVjdFVzZSk7CkBAIC0xNjc1OCw3ICsxNzA5Nyw3MyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fb3V0LmFkZChtX291dC56ZXJvRXh0KHZhbHVlLCBJbnQ2NCksIG1fbnVtYmVy
VGFnKTsKICAgICB9Ci0gICAgCisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgTFZhbHVlIGlzQmln
SW50MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
KyAgICB7CisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBT
cGVjQmlnSW50MzIpKQorICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKKyAgICAgICAgcmV0dXJu
IG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgbV9vdXQuYml0QW5kKGpzVmFsdWUsIG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJNYXNrKSksCisgICAgICAgICAgICBtX291dC5jb25z
dEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAgfQorICAgIExWYWx1ZSBpc05vdEJp
Z0ludDMyKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CisgICAgeworICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwg
flNwZWNCaWdJbnQzMikpCisgICAgICAgICAgICByZXR1cm4gcHJvdmVuOworICAgICAgICByZXR1
cm4gbV9vdXQubm90RXF1YWwoCisgICAgICAgICAgICBtX291dC5iaXRBbmQoanNWYWx1ZSwgbV9v
dXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpCaWdJbnQzMk1hc2spKSwKKyAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgTFZhbHVlIHVu
Ym94QmlnSW50MzIoTFZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQu
Y2FzdFRvSW50MzIobV9vdXQubFNocihqc1ZhbHVlLCBtX291dC5jb25zdEludDY0KDE2KSkpOwor
ICAgIH0KKyAgICBMVmFsdWUgYm94QmlnSW50MzIoTFZhbHVlIGludDMyVmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9vdXQuYml0T3IoCisgICAgICAgICAgICBtX291dC5zaGwobV9vdXQu
emVyb0V4dChpbnQzMlZhbHVlLCBCMzo6SW50NjQpLCBtX291dC5jb25zdEludDY0KDE2KSksCisg
ICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OkJpZ0ludDMyVGFnKSk7CisgICAg
fQorICAgIExWYWx1ZSBpc05vdEFueUJpZ0ludChMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQorICAgIHsKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4g
PSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBw
cm92ZW47CisKKyAgICAgICAgLy8gaWYgKGlzQmlnSW50MzIpCisgICAgICAgIC8vICAgcmV0dXJu
IGZhbHNlCisgICAgICAgIC8vIGlmICghaXNDZWxsKQorICAgICAgICAvLyAgIHJldHVybiB0cnVl
OworICAgICAgICAvLyByZXR1cm4gIWlzSGVhcEJpZ0ludAorICAgICAgICBMQmFzaWNCbG9jayBp
c0JpZ0ludDMyQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlz
Tm90QmlnSW50MzJDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
aXNOb3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlz
Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0JpZ0lu
dDMyKGpzVmFsdWUsIHR5cGUpLCB1bnN1cmUoaXNCaWdJbnQzMkNhc2UpLCB1bnN1cmUoaXNOb3RC
aWdJbnQzMkNhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGlzQmlnSW50MzJDYXNlLCBpc05vdEJpZ0ludDMyQ2FzZSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHJldHVybkZhbHNlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhpc05vdEJpZ0ludDMyQ2FzZSwgaXNOb3RDZWxsQ2FzZSk7CisgICAgICAgIC8vIEZJWE1F
OiB3ZSBzaG91bGQgZmlsdGVyIHRoZSB0eXBlIHBhc3NlZCB0byBpc0NlbGwgdG8gYWNjb3VudCBm
b3IgdGhlIHByZXZpb3VzIHRlc3QgdGhhdCB0b2xkIHVzIHdlIGFyZSBkZWZpbml0ZWx5IG5vdCBh
IEJpZ0ludDMyLgorICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGpzVmFsdWUsIHR5cGUpLCB1
bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShpc05vdENlbGxDYXNlKSk7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oaXNOb3RDZWxsQ2FzZSwgaXNDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHJldHVyblRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
aXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgcmV0dXJu
SXNOb3RIZWFwQmlnSW50ID0gbV9vdXQuYW5jaG9yKGlzTm90SGVhcEJpZ0ludChqc1ZhbHVlKSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJ
bnQzMiwgcmV0dXJuRmFsc2UsIHJldHVyblRydWUsIHJldHVybklzTm90SGVhcEJpZ0ludCk7Cisg
ICAgfQorI2VuZGlmIC8vIFVTRShCSUdJTlQzMikKKwogICAgIExWYWx1ZSBpc0NlbGxPck1pc2Mo
TFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7
CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjQ2Vs
bENoZWNrIHwgU3BlY01pc2MpKQpAQCAtMTcwNzAsOCArMTc0NzUsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdl
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJpZ0ludFVzZToKLSAgICAgICAg
ICAgIHNwZWN1bGF0ZUJpZ0ludChlZGdlKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGNh
c2UgQmlnSW50MzJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVCaWdJbnQzMihlZGdlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFueUJpZ0ludFVzZToKKyAgICAgICAgICAg
IHNwZWN1bGF0ZUFueUJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8v
IFVTRShCSUdJTlQzMikKKyAgICAgICAgY2FzZSBIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU5vdFN0cmluZ1Zhcihl
ZGdlKTsKQEAgLTE3MjU3LDE4ICsxNzY3MCwzOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAg
IExWYWx1ZSBpc05vdEJpZ0ludChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNw
ZWNGdWxsVG9wKQorICAgIExWYWx1ZSBpc05vdEhlYXBCaWdJbnRVbmtub3duV2hldGhlckNlbGwo
TFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgewor
ICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNIZWFw
QmlnSW50KSkKKyAgICAgICAgICAgIHJldHVybiBwcm92ZW47CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZGVmYXVsdFRvRmFsc2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgdHlwZSksIHVuc3VyZShpc0NlbGxDYXNlKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgcmV0dXJuRm9yQ2VsbCA9IG1fb3V0LmFuY2hvcihpc0hlYXBCaWdJbnQodmFsdWUs
IHR5cGUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQucGhpKEludDMyLCBkZWZhdWx0VG9GYWxzZSwgcmV0dXJuRm9yQ2VsbCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgTFZhbHVlIGlzTm90SGVhcEJpZ0lu
dChMVmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsK
LSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2Vs
bCwgflNwZWNCaWdJbnQpKQorICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFs
dWUodHlwZSAmIFNwZWNDZWxsLCB+U3BlY0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJu
IHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgbV9v
dXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50MzIodm0oKS5iaWdJbnRTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAK
LSAgICBMVmFsdWUgaXNCaWdJbnQoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBT
cGVjRnVsbFRvcCkKKyAgICBMVmFsdWUgaXNIZWFwQmlnSW50KExWYWx1ZSBjZWxsLCBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewotICAgICAgICBpZiAoTFZhbHVlIHBy
b3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSAmIFNwZWNDZWxsLCBTcGVjQmlnSW50KSkKKyAgICAg
ICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3Bl
Y0hlYXBCaWdJbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJu
IG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwKQEAgLTE3NzI2LDE1ICsxODE1OSwyOCBAQCBwcml2YXRlOgogICAg
ICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwgbG93Q2VsbChlZGdlKSk7CiAgICAgfQogCi0gICAg
dm9pZCBzcGVjdWxhdGVCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB2b2lkIHNw
ZWN1bGF0ZUhlYXBCaWdJbnQoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAg
IEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0hlYXBCaWdJbnQs
IGlzTm90SGVhcEJpZ0ludChjZWxsKSk7CisgICAgfQorICAgIHZvaWQgc3BlY3VsYXRlSGVhcEJp
Z0ludChFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFs
dWUoY2VsbCksIGVkZ2UsIFNwZWNCaWdJbnQsIGlzTm90QmlnSW50KGNlbGwpKTsKKyAgICAgICAg
c3BlY3VsYXRlSGVhcEJpZ0ludChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAKLSAgICB2
b2lkIHNwZWN1bGF0ZUJpZ0ludChFZGdlIGVkZ2UpCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHZv
aWQgc3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgc3BlY3VsYXRl
QmlnSW50KGVkZ2UsIGxvd0NlbGwoZWRnZSkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIEZUTF9UWVBF
X0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNCaWdJbnQzMiwgaXNOb3RCaWdJ
bnQzMih2YWx1ZSkpOworICAgIH0KKworICAgIHZvaWQgc3BlY3VsYXRlQW55QmlnSW50KEVkZ2Ug
ZWRnZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZh
bHVlKHZhbHVlKSwgZWRnZSwgU3BlY0JpZ0ludCwgaXNOb3RBbnlCaWdJbnQodmFsdWUpKTsKICAg
ICB9CisjZW5kaWYKIAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2Us
IExWYWx1ZSBjZWxsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCBkMzcyMjc3ZmMwNi4uM2M5MTM3ZWY3MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAg
LTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVk
IGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhpdAogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZSkKLSAgICAgICAgICAg
IGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlUHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBK
U1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgZXhpdC5tX2Rlc2NyaXB0
b3ItPm1fdmFsdWVQcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQUklu
Zm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIH0KIAogICAgIC8vIE1hdGVyaWFsaXpl
IGFsbCBvYmplY3RzLiBEb24ndCBtYXRlcmlhbGl6ZSBhbiBvYmplY3QgdW50aWwgYWxsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmlu
ZGV4IGFiM2U5YzYyOWFkLi4yNTg5ZTJjZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgICAgIHZvaWQqIHdyYXBwZWRBZGRyZXNzID0g
MDsKICAgICAgICAgdW5zaWduZWQgbGFiZWxJbmRleCA9IDA7Ci0gICAgICAgIGlmICghbm9kZS5j
ZWxsLT5pc1N0cmluZygpICYmICFub2RlLmNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICAgICAgaWYg
KCFub2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsK
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUo
dm0pOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUgfHwgIXN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCkpCiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5v
ZGVGbGFnczo6SW50ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAppbmRleCA5OWZhNDBlYmI0NC4uZjI3ZWVmNGI0MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNs
dWRlICJTY3JpYmJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcAppbmRleCA2Y2JhZWMxNjQ0My4uMDMyNDY5ZmU2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlNj
cmliYmxlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggODEzMzJkMjEwOTEuLjYxZjJlNzY1ZjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTE4Nyw4ICsxODcsOCBAQCB2b2lkIElu
c3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBoZWFwT2JqZWN0SWQsCiAgICAgfQogCiAgICAgLy8gQmlnSW50IHByZXZpZXcuCi0gICAgaWYg
KGNlbGwtPmlzQmlnSW50KCkpIHsKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRy
eUdldFN0cmluZyh2bSwgYXNCaWdJbnQoY2VsbCksIDEwKTsKKyAgICBpZiAoY2VsbC0+aXNIZWFw
QmlnSW50KCkpIHsKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gSlNCaWdJbnQ6OnRyeUdldFN0cmlu
Zyh2bSwgYXNIZWFwQmlnSW50KGNlbGwpLCAxMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IGM0ZDljNzI3ZTA3Li5hZDRiMjE1YzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
dW5zaWduZWQgc2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGFyZ3VtZW50cywgdWludDMyX3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdU
eXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICBjYXNlIEJpZ0ludFR5cGU6CisgICAgY2Fz
ZSBIZWFwQmlnSW50VHlwZToKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmpl
Y3QsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGUzMDllY2ZjNTUx
Li5jODlmNjg1ZmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcApAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiB7
CiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmU6
CiAgICAgLy8gaWYgKHZhbHVlIGlzIGNlbGwpIHsKLSAgICAvLyAgICAgaWYgKHZhbHVlIGlzIHN0
cmluZyBvciB2YWx1ZSBpcyBCaWdJbnQpCisgICAgLy8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcg
b3IgdmFsdWUgaXMgSGVhcEJpZ0ludCkKICAgICAvLyAgICAgICAgIHJlc3VsdCA9ICEhdmFsdWUt
Pmxlbmd0aAogICAgIC8vICAgICBlbHNlIHsKICAgICAvLyAgICAgICAgIGRvIGV2aWwgdGhpbmdz
IGZvciBtYXNxdWVyYWRlcy1hcy11bmRlZmluZWQKQEAgLTY5OCw2ICs2OTgsOCBAQCB2b2lkIEFz
c2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYgdm0sIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZQogICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94SW50MzIodmFsdWUp
CiAgICAgLy8gfSBlbHNlIGlmICh2YWx1ZSBpcyBudW1iZXIpIHsKICAgICAvLyAgICAgcmVzdWx0
ID0gISF1bmJveERvdWJsZSh2YWx1ZSkKKyAgICAvLyB9IGVsc2UgaWYgKHZhbHVlIGlzIEJpZ0lu
dDMyKSB7CisgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hCaWdJbnQzMih2YWx1ZSkKICAgICAv
LyB9IGVsc2UgewogICAgIC8vICAgICByZXN1bHQgPSB2YWx1ZSA9PSBqc1RydWUKICAgICAvLyB9
CkBAIC03MDYsNyArNzA4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFs
dWVUb0Jvb2xlYW4oVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmUKIAogICAgIGF1dG8g
bm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZSk7CiAgICAgYXV0byBpc1N0cmluZyA9IGJy
YW5jaElmU3RyaW5nKHZhbHVlLnBheWxvYWRHUFIoKSk7Ci0gICAgYXV0byBpc0JpZ0ludCA9IGJy
YW5jaElmQmlnSW50KHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgYXV0byBpc0hlYXBCaWdJbnQg
PSBicmFuY2hJZkhlYXBCaWdJbnQodmFsdWUucGF5bG9hZEdQUigpKTsKIAogICAgIGlmIChzaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKHNjcmF0Y2hJ
ZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTcyOSw3ICs3MzEsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRv
Qm9vbGVhbihWTSYgdm0sIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZQogICAgIGNvbXBhcmVQdHIo
aW52ZXJ0ID8gRXF1YWwgOiBOb3RFcXVhbCwgdmFsdWUucGF5bG9hZEdQUigpLCByZXN1bHQsIHJl
c3VsdCk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhp
cyk7CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgbG9hZDMyKEFkZHJlc3ModmFs
dWUucGF5bG9hZEdQUigpLCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSksIHJlc3VsdCk7CiAg
ICAgY29tcGFyZTMyKGludmVydCA/IEVxdWFsIDogTm90RXF1YWwsIHJlc3VsdCwgVHJ1c3RlZElt
bTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CkBAIC03NTIsNiArNzU0
LDE1IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKFZN
JiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlCiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsK
IAogICAgIG5vdERvdWJsZS5saW5rKHRoaXMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBhdXRv
IGlzTm90QmlnSW50MzIgPSBicmFuY2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIodmFsdWUu
Z3ByKCksIHJlc3VsdCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0KTsKKyAgICB1cnNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICBjb21wYXJlMzIoaW52ZXJ0ID8g
RXF1YWwgOiBOb3RFcXVhbCwgcmVzdWx0LCBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAg
ZG9uZS5hcHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjb21wYXJlNjQo
aW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZVRydWUpLCByZXN1bHQpOwogI2Vsc2UKQEAgLTc2Nyw3ICs3NzgsNyBAQCBBc3Nl
bWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZWYWx1ZShWTSYg
dm0sIEpTVmFsdWVSZWdzIHZhbAogewogICAgIC8vIEltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBj
b250cm9sIGZsb3cgc3RydWN0dXJlOgogICAgIC8vIGlmICh2YWx1ZSBpcyBjZWxsKSB7Ci0gICAg
Ly8gICAgIGlmICh2YWx1ZSBpcyBzdHJpbmcgb3IgdmFsdWUgaXMgQmlnSW50KQorICAgIC8vICAg
ICBpZiAodmFsdWUgaXMgc3RyaW5nIG9yIHZhbHVlIGlzIEhlYXBCaWdJbnQpCiAgICAgLy8gICAg
ICAgICByZXN1bHQgPSAhIXZhbHVlLT5sZW5ndGgKICAgICAvLyAgICAgZWxzZSB7CiAgICAgLy8g
ICAgICAgICBkbyBldmlsIHRoaW5ncyBmb3IgbWFzcXVlcmFkZXMtYXMtdW5kZWZpbmVkCkBAIC03
NzcsNiArNzg4LDggQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6
OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwKICAgICAvLyAgICAgcmVzdWx0
ID0gISF1bmJveEludDMyKHZhbHVlKQogICAgIC8vIH0gZWxzZSBpZiAodmFsdWUgaXMgbnVtYmVy
KSB7CiAgICAgLy8gICAgIHJlc3VsdCA9ICEhdW5ib3hEb3VibGUodmFsdWUpCisgICAgLy8gfSBl
bHNlIGlmICh2YWx1ZSBpcyBCaWdJbnQzMikgeworICAgIC8vICAgICByZXN1bHQgPSAhIXVuYm94
QmlnSW50MzIodmFsdWUpCiAgICAgLy8gfSBlbHNlIHsKICAgICAvLyAgICAgcmVzdWx0ID0gdmFs
dWUgPT0ganNUcnVlCiAgICAgLy8gfQpAQCAtNzg2LDcgKzc5OSw3IEBAIEFzc2VtYmx5SGVscGVy
czo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1
ZVJlZ3MgdmFsCiAKICAgICBhdXRvIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWUpOwog
ICAgIGF1dG8gaXNTdHJpbmcgPSBicmFuY2hJZlN0cmluZyh2YWx1ZS5wYXlsb2FkR1BSKCkpOwot
ICAgIGF1dG8gaXNCaWdJbnQgPSBicmFuY2hJZkJpZ0ludCh2YWx1ZS5wYXlsb2FkR1BSKCkpOwor
ICAgIGF1dG8gaXNIZWFwQmlnSW50ID0gYnJhbmNoSWZIZWFwQmlnSW50KHZhbHVlLnBheWxvYWRH
UFIoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAg
ICAgICAgIEFTU0VSVChzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
IT0gSW52YWxpZEdQUlJlZyk7CkBAIC04MTcsNyArODMwLDcgQEAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVn
cyB2YWwKICAgICB0cnV0aHkuYXBwZW5kKGJyYW5jaFB0cihpbnZlcnQgPyBFcXVhbCA6IE5vdEVx
dWFsLCB2YWx1ZS5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIoanNFbXB0eVN0cmluZyh2bSkp
KSk7CiAgICAgZG9uZS5hcHBlbmQoanVtcCgpKTsKIAotICAgIGlzQmlnSW50LmxpbmsodGhpcyk7
CisgICAgaXNIZWFwQmlnSW50LmxpbmsodGhpcyk7CiAgICAgdHJ1dGh5LmFwcGVuZChicmFuY2hU
ZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIEFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigp
LCBKU0JpZ0ludDo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBkb25lLmFwcGVuZChqdW1wKCkp
OwogCkBAIC04NDIsNiArODU1LDE1IEBAIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1i
bHlIZWxwZXJzOjpicmFuY2hJZlZhbHVlKFZNJiB2bSwgSlNWYWx1ZVJlZ3MgdmFsCiAgICAgfQog
CiAgICAgbm90RG91YmxlLmxpbmsodGhpcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGF1dG8g
aXNOb3RCaWdJbnQzMiA9IGJyYW5jaElmTm90QmlnSW50MzJLbm93bk5vdE51bWJlcih2YWx1ZS5n
cHIoKSwgc2NyYXRjaCk7CisgICAgbW92ZSh2YWx1ZS5ncHIoKSwgc2NyYXRjaCk7CisgICAgdXJz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNjcmF0Y2gpOworICAgIHRydXRoeS5hcHBlbmQoYnJh
bmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCBzY3JhdGNoKSk7CisgICAgZG9uZS5h
cHBlbmQoanVtcCgpKTsKKworICAgIGlzTm90QmlnSW50MzIubGluayh0aGlzKTsKKyNlbmRpZiAv
LyBVU0UoQklHSU5UMzIpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB0cnV0aHkuYXBwZW5kKGJy
YW5jaDY0KGludmVydCA/IE5vdEVxdWFsIDogRXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggM2Q3ZWY3Yzc3MjcuLmVk
MDczZTc2ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05MjksNyArOTI5LDQ2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaElm
Tm90Qm9vbGVhbihyZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKICNlbmRpZgogICAgIH0KLSAgICAK
KworI2lmIFVTRShCSUdJTlQzMikKKyAgICBKdW1wIGJyYW5jaElmQmlnSW50MzIoR1BSUmVnIGdw
ciwgR1BSUmVnIHRlbXBHUFIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3Rl
cnMpCisgICAgeworICAgICAgICBKdW1wIG51bWJlciA9IGJyYW5jaElmTnVtYmVyKGdwciwgbW9k
ZSk7CisgICAgICAgIEp1bXAgYmlnSW50MzIgPSBicmFuY2hJZkJpZ0ludDMyS25vd25Ob3ROdW1i
ZXIoZ3ByLCB0ZW1wR1BSKTsKKyAgICAgICAgbnVtYmVyLmxpbmsodGhpcyk7CisgICAgICAgIHJl
dHVybiBiaWdJbnQzMjsKKyAgICB9CisgICAgSnVtcExpc3QgYnJhbmNoSWZOb3RCaWdJbnQzMihH
UFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycykKKyAgICB7CisgICAgICAgIEp1bXBMaXN0IHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChicmFuY2hJZk51bWJlcihncHIsIG1vZGUpKTsKKyAgICAgICAgSnVtcCBiaWdJ
bnQzMiA9IGJyYW5jaElmQmlnSW50MzJLbm93bk5vdE51bWJlcihncHIsIHRlbXBHUFIpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKGp1bXAoKSk7CisgICAgICAgIGJpZ0ludDMyLmxpbmsodGhpcyk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZkJpZ0lu
dDMyS25vd25Ob3ROdW1iZXIoR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpCisgICAgeworICAg
ICAgICBBU1NFUlQodGVtcEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbW92ZShncHIs
IHRlbXBHUFIpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJU
YWcpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6QmlnSW50MzJUYWcpKTsKKyAgICB9CisgICAgSnVtcCBicmFu
Y2hJZk5vdEJpZ0ludDMyS25vd25Ob3ROdW1iZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRl
bXBHUFIpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RCaWdJbnQzMktub3duTm90
TnVtYmVyKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOworICAgIH0KKyAgICBKdW1wIGJyYW5jaElmTm90
QmlnSW50MzJLbm93bk5vdE51bWJlcihHUFJSZWcgZ3ByLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7
CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtb3Zl
KGdwciwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJ
bnQzMlRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHRl
bXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZykpOworICAgIH0KKyNlbmRp
ZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRoZXNlIHRvIG1ha2Ug
aXQgY2xlYXIgdGhhdCB0aGV5IHJlcXVpcmUgdGhlaXIgaW5wdXQgdG8gYmUgYSBjZWxsLgogICAg
IEp1bXAgYnJhbmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCiAgICAgewogICAgICAgICByZXR1
cm4gYnJhbmNoOCgKQEAgLTk1MSwxMyArOTkwLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KLSAgICAKKworICAg
IC8vIEZJWE1FOiByZW5hbWUgdGhlc2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgcmVxdWly
ZSB0aGVpciBpbnB1dCB0byBiZSBhIGNlbGwuCiAgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJS
ZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9
CiAgICAgSnVtcCBicmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJh
bmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZlN5
bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJv
bFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyBy
ZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9Ci0gICAgSnVtcCBi
cmFuY2hJZkJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxH
UFIsIEJpZ0ludFR5cGUpOyB9Ci0gICAgSnVtcCBicmFuY2hJZk5vdEJpZ0ludChHUFJSZWcgY2Vs
bEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEJpZ0ludFR5cGUpOyB9Cisg
ICAgSnVtcCBicmFuY2hJZkhlYXBCaWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmVHlwZShjZWxsR1BSLCBIZWFwQmlnSW50VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90
SGVhcEJpZ0ludChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxH
UFIsIEhlYXBCaWdJbnRUeXBlKTsgfQogICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsg
fQogICAgIEp1bXAgYnJhbmNoSWZOb3RGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4g
YnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIEpTRnVuY3Rpb25UeXBlKTsgfQogICAgIApAQCAtMTM1
Niw2ICsxMzk2LDE5IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0aGlz
KTsKICAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICB2b2lkIHVuYm94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIHVyc2hp
ZnQ2NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMigxNikpLCBncHIpOworICAgIH0KKworICAg
IHZvaWQgYm94QmlnSW50MzIoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGxzaGlmdDY0KHRy
dXN0ZWRJbW0zMkZvclNoaWZ0KEltbTMyKDE2KSksIGdwcik7CisgICAgICAgIG9yNjQoVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkJpZ0ludDMyVGFnKSwgZ3ByKTsKKyAgICB9CiAjZW5kaWYKIAogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xNzE1LDcgKzE3NjgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IC8vICAgICAgICAgfQogICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBzdHJpbmcpIHsKICAg
ICAgICAgLy8gICAgICAgICByZXR1cm4gc3RyaW5nCi0gICAgICAgIC8vICAgICB9IGVsc2UgaWYg
KGlzIGJpZ2ludCkgeworICAgICAgICAvLyAgICAgfSBlbHNlIGlmIChpcyBoZWFwYmlnaW50KSB7
CiAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIGJpZ2ludAogICAgICAgICAvLyAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gICAgICAgICByZXR1cm4gc3ltYm9sCkBAIC0xNzI2LDYgKzE3NzksOCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgIC8vIH0gZWxz
ZSBpZiAoaXMgYm9vbGVhbikgewogICAgICAgICAvLyAgICAgcmV0dXJuIGJvb2xlYW4KKyAgICAg
ICAgLy8gfSBlbHNlIGlmIChpcyBiaWdpbnQzMikgeworICAgICAgICAvLyAgICAgcmV0dXJuIGJp
Z2ludAogICAgICAgICAvLyB9IGVsc2UgewogICAgICAgICAvLyAgICAgcmV0dXJuIHVuZGVmaW5l
ZAogICAgICAgICAvLyB9CkBAIC0xNzU3LDEwICsxODEyLDEwIEBAIHB1YmxpYzoKIAogICAgICAg
ICBub3RTdHJpbmcubGluayh0aGlzKTsKIAotICAgICAgICBKdW1wIG5vdEJpZ0ludCA9IGJyYW5j
aElmTm90QmlnSW50KGNlbGxHUFIpOworICAgICAgICBKdW1wIG5vdEhlYXBCaWdJbnQgPSBicmFu
Y2hJZk5vdEhlYXBCaWdJbnQoY2VsbEdQUik7CiAgICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6
QmlnSW50LCBmYWxzZSk7CiAKLSAgICAgICAgbm90QmlnSW50LmxpbmsodGhpcyk7CisgICAgICAg
IG5vdEhlYXBCaWdJbnQubGluayh0aGlzKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpT
eW1ib2wsIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIG5vdENlbGwubGluayh0aGlzKTsKQEAg
LTE3NzYsNiArMTgzMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXAgbm90Qm9vbGVhbiA9IGJy
YW5jaElmTm90Qm9vbGVhbihyZWdzLCB0ZW1wR1BSKTsKICAgICAgICAgZnVuY3RvcihUeXBlb2ZU
eXBlOjpCb29sZWFuLCBmYWxzZSk7CiAgICAgICAgIG5vdEJvb2xlYW4ubGluayh0aGlzKTsKKwor
I2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgSnVtcCBub3RCaWdJbnQzMiA9IGJyYW5jaElmTm90
QmlnSW50MzJLbm93bk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsKKyAgICAgICAgZnVuY3RvcihU
eXBlb2ZUeXBlOjpCaWdJbnQsIGZhbHNlKTsKKyAgICAgICAgbm90QmlnSW50MzIubGluayh0aGlz
KTsKKyNlbmRpZgogICAgICAgICAKICAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpVbmRlZmlu
ZWQsIHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4YjNhMjM4
YTRkYS4uOTRiMGU1NjYxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM3MCw2
ICszNzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERF
RklORV9PUChvcF9pc191bmRlZmluZWRfb3JfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX2lz
X2Jvb2xlYW4pCiAgICAgICAgIERFRklORV9PUChvcF9pc19udW1iZXIpCisgICAgICAgIERFRklO
RV9PUChvcF9pc19iaWdfaW50KQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfb2JqZWN0KQogICAg
ICAgICBERUZJTkVfT1Aob3BfaXNfY2VsbF93aXRoX3R5cGUpCiAgICAgICAgIERFRklORV9PUChv
cF9qZXFfbnVsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDc1ODdiMDFkNmQzLi4zNGYz
ZDUwZjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MzEsNiArNTMxLDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX2Jvb2xlYW4oY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2lzX251bWJlcihjb25zdCBJ
bnN0cnVjdGlvbiopOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgdm9pZCBlbWl0X29wX2lz
X2JpZ19pbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyNlbHNlCisgICAgICAgIE5PX1JFVFVSTiB2
b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0cnVjdGlvbiopOworI2VuZGlmCiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pc19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzc4NjczZTE4YWMuLjY3
YjAwYjBhMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKQEAgLTQ3Niw2ICs0NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEo
bV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1f
Y29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25U
b01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CisgICAgLy8gRklYTUU6
IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRob3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBz
aW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJbnQKICAgICBlbWl0TWF0aElDRmFzdDxPcE5l
Z2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQ
cm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogfQogCkBAIC00ODQsNiArNDg1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAg
ICAgSklUTmVnSUMqIG5lZ0lDID0gYml0d2lzZV9jYXN0PEpJVE5lZ0lDKj4obV9pbnN0cnVjdGlv
blRvTWF0aElDLmdldChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKKyAgICAvLyBGSVhNRTogaXQgd291
bGQgYmUgYmV0dGVyIHRvIGNhbGwgdGhvc2Ugb3BlcmF0aW9uVmFsdWVOZWdhdGUsIHNpbmNlIHRo
ZSBvcGVyYW5kIGNhbiBiZSBhIEJpZ0ludAogICAgIGVtaXRNYXRoSUNTbG93PE9wTmVnYXRlPihu
ZWdJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0
aW1pemUsIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRl
T3B0aW1pemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApp
bmRleCBmYzk0Y2EzNzI0OS4uY2ViNjAwZTdmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMjgzLDYgKzI4MywzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7CiB9CiAKKyNpZiBVU0UoQklHSU5UMzIpCit2b2lkIEpJVDo6ZW1pdF9v
cF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0JpZ0ludD4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOworCisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJl
Z1QwKTsKKworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkJpZ0ludDMyTWFzayksIHJl
Z1QxKTsKKyAgICBhbmQ2NChyZWdUMSwgcmVnVDApOworICAgIGNvbXBhcmU2NChFcXVhbCwgcmVn
VDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCaWdJbnQzMlRhZyksIHJlZ1QwKTsKKyAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOworICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKKworICAgIGlzQ2VsbC5saW5rKHRoaXMpOworICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhl
YXBCaWdJbnRUeXBlKSwgcmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
IHsgcmVnVDAgfSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QpOworfQorI2Vsc2UgLy8gaWYgIVVTRShCSUdJTlQzMikKK05PX1JFVFVSTiB2
b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICAv
LyBJZiB3ZSBvbmx5IGhhdmUgSGVhcEJpZ0ludHMsIHRoZW4gd2UgZW1pdCBpc0NlbGxXaXRoVHlw
ZSBpbnN0ZWFkIG9mIGlzQmlnSW50LgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisjZW5kaWYKKwogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcElzQ2VsbFdpdGhUeXBlPigpOwpAQCAtNTcwLDEyICs2
MDEsNTMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmkKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Jj
MiA9IGJ5dGVjb2RlLm1fcmhzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoc3JjMSwg
cmVnVDAsIHNyYzIsIHJlZ1QxKTsKLSAgICAKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICAvKiBB
dCBhIGhpZ2ggbGV2ZWwgd2UgZG8gKGFzc3VtaW5nICd0eXBlJyB0byBiZSBTdHJpY3RFcSk6Cisg
ICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkKKyAgICAgICAgZ290byBz
bG93UGF0aDsKKyAgICByZXN1bHQgPSAobGVmdCA9PSByaWdodCk7CisgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgZ290byBkb25lOworICAgIGlmIChsZWZ0IGlzIENlbGwgfHwgcmlnaHQgaXMgQ2Vs
bCkKKyAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICBkb25lOgorICAgIHJldHVybiByZXN1bHQ7
CisgICAgKi8KKworICAgIC8vIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAobGVmdCBpcyBEb3Vi
bGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2ggaW5zdGVhZCBvZiB0
aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNlZCBicmFuY2hJZklu
dDMyL2JyYW5jaElmTnVtYmVyCisgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVl
IGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZs
b3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgLy8gSWYgaXQgaXMgbm90IGEgbnVt
YmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5IGhpZ2ggYml0IHNldAorICAg
IC8vIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVxdWFsIDE8PDUwLgorICAgIG1vdmUo
cmVnVDAsIHJlZ1QyKTsKKyAgICBtb3ZlKHJlZ1QxLCByZWdUMyk7CisgICAgbW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlZ1Q1KTsKKyAgICBhZGQ2NChyZWdU
NSwgcmVnVDIpOworICAgIGFkZDY0KHJlZ1Q1LCByZWdUMyk7CisgICAgbHNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDEpLCByZWdUNSk7CisgICAgb3I2NChyZWdUMiwgcmVnVDMpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgcmVnVDMsIHJlZ1Q1KSk7CisKKyAgICBjb21wYXJl
NjQoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDUpOworICAgIEp1bXAgZG9uZSA9IGJyYW5jaFRl
c3Q2NChOb25aZXJvLCByZWdUNSk7CisKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgLy8g
SnVtcCBzbG93IGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5k
IEJpZ0ludHMpLgorICAgIGFuZDY0KHJlZ1QxLCByZWdUMik7CisgICAgLy8gRklYTUU6IHdlIGNv
dWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMy
LCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cgcGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJlZ1QyKSk7CisKKyAgICBkb25lLmxpbmsodGhp
cyk7CisgICAgaWYgKHR5cGUgPT0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlOjpOU3RyaWN0RXEpCisg
ICAgICAgIHhvcjY0KFRydXN0ZWRJbW02NCgxKSwgcmVnVDUpOworICAgIGJveEJvb2xlYW4ocmVn
VDUsIEpTVmFsdWVSZWdzIHsgcmVnVDUgfSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIHJlZ1Q1KTsKKyNlbHNlIC8vIGlmICFVU0UoQklHSU5UMzIpCiAgICAgLy8gSnVtcCBzbG93
IGlmIGJvdGggYXJlIGNlbGxzICh0byBjb3ZlciBzdHJpbmdzKS4KICAgICBtb3ZlKHJlZ1QwLCBy
ZWdUMik7CiAgICAgb3I2NChyZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Q2VsbChyZWdUMikpOwotICAgIAorCiAgICAgLy8gSnVtcCBzbG93IGlmIGVpdGhlciBpcyBhIGRv
dWJsZS4gRmlyc3QgdGVzdCBpZiBpdCdzIGFuIGludGVnZXIsIHdoaWNoIGlzIGZpbmUsIGFuZCB0
aGVuIHRlc3QKICAgICAvLyBpZiBpdCdzIGEgZG91YmxlLgogICAgIEp1bXAgbGVmdE9LID0gYnJh
bmNoSWZJbnQzMihyZWdUMCk7CkBAIC01OTIsNiArNjY0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVP
cFN0cmkKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX3N0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC02MTQsNiArNjg3LDQ1IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVycyhzcmMxLCByZWdUMCwgc3JjMiwgcmVnVDEpOwogCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoYXNzdW1pbmcgJ3R5cGUnIHRv
IGJlIFN0cmljdEVxKToKKyAgICBJZiAobGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91Ymxl
KQorICAgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAg
Z290byB0YWtlbjsKKyAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAg
ICAgZ290byBzbG93UGF0aDsKKyAgICBnb3RvIG5vdFRha2VuOworICAgICovCisKKyAgICAvLyBU
aGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJs
ZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhlIDQgdGhhdCB3b3VsZCBiZSBu
YWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQzMi9icmFuY2hJZk51bWJlcgor
ICAgIC8vIFRoZSB0cmljayBpcyB0aGF0IGlmIGEgSlNWYWx1ZSBpcyBhbiBJbnQzMiwgdGhlbiBh
ZGRpbmcgMTw8NDkgdG8gaXQgd2lsbCBtYWtlIGl0IG92ZXJmbG93LCBsZWF2aW5nIGFsbCBoaWdo
IGJpdHMgYXQgMAorICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8
NDkgd2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKKyAgICAvLyBMZWF2aW5nIG9ubHkgZG91
YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAg
bW92ZShyZWdUMSwgcmVnVDMpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2Vz
dE9mSGlnaEJpdHMpLCByZWdUNSk7CisgICAgYWRkNjQocmVnVDUsIHJlZ1QyKTsKKyAgICBhZGQ2
NChyZWdUNSwgcmVnVDMpOworICAgIGxzaGlmdDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDUpOwor
ICAgIG9yNjQocmVnVDIsIHJlZ1QzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g2NChBYm92ZU9y
RXF1YWwsIHJlZ1QzLCByZWdUNSkpOworCisgICAgSnVtcCBhcmVFcXVhbCA9IGJyYW5jaDY0KEVx
dWFsLCByZWdUMCwgcmVnVDEpOworICAgIGlmICh0eXBlID09IENvbXBpbGVPcFN0cmljdEVxVHlw
ZTo6U3RyaWN0RXEpCisgICAgICAgIGFkZEp1bXAoYXJlRXF1YWwsIHRhcmdldCk7CisKKyAgICBt
b3ZlKHJlZ1QwLCByZWdUMik7CisgICAgLy8gSnVtcCBzbG93IGlmIGF0IGxlYXN0IG9uZSBpcyBh
IGNlbGwgKHRvIGNvdmVyIHN0cmluZ3MgYW5kIEJpZ0ludHMpLgorICAgIGFuZDY0KHJlZ1QxLCBy
ZWdUMik7CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBtb3JlIHByZWNpc2U6
IHVubGVzcyB0aGVyZSBpcyBhIEJpZ0ludDMyLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlIHNsb3cg
cGF0aCBpZiBib3RoIGFyZSBzdHJpbmdzCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZDZWxsKHJl
Z1QyKSk7CisKKyAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RFcVR5cGU6Ok5TdHJpY3RF
cSkgeworICAgICAgICBhZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKKyAgICAgICAgYXJlRXF1YWwu
bGluayh0aGlzKTsKKyAgICB9CisjZWxzZSAvLyBpZiAhVVNFKEJJR0lOVDMyKQogICAgIC8vIEp1
bXAgc2xvdyBpZiBib3RoIGFyZSBjZWxscyAodG8gY292ZXIgc3RyaW5ncykuCiAgICAgbW92ZShy
ZWdUMCwgcmVnVDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1QyKTsKQEAgLTYyNywxMSArNzM5LDEx
IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcUp1bXAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wCiAgICAgSnVtcCByaWdodE9LID0gYnJhbmNoSWZJ
bnQzMihyZWdUMSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOdW1iZXIocmVnVDEpKTsKICAg
ICByaWdodE9LLmxpbmsodGhpcyk7Ci0KICAgICBpZiAodHlwZSA9PSBDb21waWxlT3BTdHJpY3RF
cVR5cGU6OlN0cmljdEVxKQogICAgICAgICBhZGRKdW1wKGJyYW5jaDY0KEVxdWFsLCByZWdUMSwg
cmVnVDApLCB0YXJnZXQpOwogICAgIGVsc2UKICAgICAgICAgYWRkSnVtcChicmFuY2g2NChOb3RF
cXVhbCwgcmVnVDEsIHJlZ1QwKSwgdGFyZ2V0KTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9qc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTY4Niw3ICs3OTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihz
cmNWUmVnLCByZWdUMCk7CiAKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChy
ZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RCaWdJbnQocmVnVDApKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk5vdEhlYXBCaWdJbnQocmVnVDApKTsKICAgICBKdW1wIGlzQmln
SW50ID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMWMzMDc3NjlkYWEuLjQ4
NDAzMDBiMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCkBAIC0yODgsNiArMjg4LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUJvb2wo
ZHN0LCByZWdUMCk7CiB9CiAKK05PX1JFVFVSTiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19iaWdfaW50
KGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBXZSBlbWl0IGlzX2NlbGxfd2l0aF90eXBl
IGluc3RlYWQsIHNpbmNlIEJpZ0ludDMyIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IHBsYXRm
b3Jtcy4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SXNDZWxsV2l0aFR5cGU+KCk7CkBAIC04NjYsNyArODcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fbnVtZXJpYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNo
SWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdEJpZ0ludChyZWdU
MCkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90SGVhcEJpZ0ludChyZWdUMCkpOwogICAg
IEp1bXAgaXNCaWdJbnQgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGE1ZTJhMjQ3
Y2YxLi4yYzg1YzUyNjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0xMzI1LDYgKzEzMjUsMTkgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY28K
ICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZ2xvYmFsT2JqZWN0LCBzcmMxLCBzcmMy
KTsKIH0KIAorI2lmIFVTRShCSUdJTlQzMikKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVFcUhlYXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsbCogaGVhcEJpZ0ludCwgaW50MzJfdCBzbWFsbEludCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChoZWFwQmlnSW50LT5pc0hlYXBCaWdJ
bnQoKSk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPihoZWFwQmlnSW50KS0+
ZXF1YWxzVG9JbnQzMihzbWFsbEludCk7Cit9CisjZW5kaWYKKwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIGNvbnN0IEpTVmFs
dWUqIHZhbHVlcywgaW50IHNpemUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpAQCAtMjg0OCw2ICsyODYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICByZXR1
cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJp
dGhQcm9maWxlKTsKIH0KIAorLy8gRklYTUU6IGl0IHdvdWxkIGJlIGJldHRlciB0byBjYWxsIHRo
b3NlIG9wZXJhdGlvblZhbHVlTmVnYXRlLCBzaW5jZSB0aGUgb3BlcmFuZCBjYW4gYmUgYSBCaWdJ
bnQKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2MCw4ICsyODc0LDE2
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJh
bmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1WYWx1
ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1
bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChwcmltVmFsdWUpKSk7CisjaWYgVVNFKEJJR0lOVDMyKQor
ICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGludDMyX3QgdmFsdWUg
PSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRf
TUlOKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6
OkpTQmlnSW50MzIsIC12YWx1ZSkpOworICAgICAgICBwcmltVmFsdWUgPSBKU0JpZ0ludDo6Y3Jl
YXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmIChwcmltVmFsdWUuaXNI
ZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnVu
YXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSkpOwogCiAgICAgZG91YmxlIG51
bWJlciA9IHByaW1WYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg2OSw2ICsyODkxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0
ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQg
Y2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7
CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0yODgzLDEwICsyOTA2LDIwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJp
bWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAg
ICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBhc0JpZ0ludChw
cmltVmFsdWUpKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0lu
dDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS5iaWdJbnQzMkFzSW50
MzIoKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IElOVF9NSU4pIHsKKyAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpOworICAgICAgICAg
ICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpbVZhbHVl
ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5kaWYKKyAgICBp
ZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgcHJpbVZhbHVlLmFzSGVhcEJpZ0ludCgpKTsKICAg
ICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHJlc3VsdCk7Ci0KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KIApAQCAtMjg5Nyw2ICsyOTMwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKKy8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBv
cGVyYXRpb25WYWx1ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3BlcmFuZCwgSklUTmVnSUMqIG5lZ0lDKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTI5MTcsOSArMjk1MSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAog
ICAgIAogICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIAotICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gSlNCaWdJbnQ6OnVuYXJ5TWludXModm0sIGFzQmlnSW50KHByaW1WYWx1ZSkp
OworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigpKSB7
CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7Cisg
ICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHByaW1WYWx1ZSA9IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCB2YWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHByaW1W
YWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJ
bnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAgIGFy
aXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdChyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMjkzMSw2ICsyOTc2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
Ky8vIEZJWE1FOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2FsbCB0aG9zZSBvcGVyYXRpb25WYWx1
ZU5lZ2F0ZSwgc2luY2UgdGhlIG9wZXJhbmQgY2FuIGJlIGEgQmlnSW50CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lD
KiBuZWdJQykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yOTUwLDkg
KzI5OTYsMTggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5l
Z2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgcHJpbVZh
bHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIAotICAgIGlmIChwcmltVmFs
dWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6
dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZhbHVlKSkpOworCisjaWYgVVNFKEJJR0lOVDMy
KQorICAgIC8vIEZJWE1FOiB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIHByb2ZpbGUgdGhlIGFyZ3Vt
ZW50IGJ1dCBub3QgdGhlIHJlc3VsdD8KKyAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBpbnQzMl90IHZhbHVlID0gcHJpbVZhbHVlLmJpZ0ludDMyQXNJbnQzMigpOwor
ICAgICAgICBpZiAodmFsdWUgIT0gSU5UX01JTikKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCAtdmFsdWUpKTsKKyAgICAgICAg
cHJpbVZhbHVlID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHZhbHVlKTsKKyAgICB9CisjZW5k
aWYKKyAgICBpZiAocHJpbVZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojp1bmFyeU1pbnVzKHZtLCBwcmltVmFsdWUuYXNIZWFwQmln
SW50KCkpKTsKIAogICAgIGRvdWJsZSBudW1iZXIgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOWZjYzQx
ZGVjNDUuLjllYTNjYmQ5MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMjA3LDYgKzIwNyw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVFcShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkCiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
U3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIFdU
Rl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBC
aWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBoZWFwQmlnSW50LCBpbnQzMl90
IHNtYWxsSW50KSBXVEZfSU5URVJOQUw7CiAjZWxzZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBsZWZ0LCBKU0Nl
bGwqIHJpZ2h0KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAppbmRleCA1MjQzNWE2NjEyMC4u
MmEyYmI5OWY5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAKICNkZWZpbmUgT0ZGTElO
RV9BU01fSlNWQUxVRTY0IDAKICNlbmRpZgogCisjaWYgVVNFKEJJR0lOVDMyKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9CSUdJTlQzMiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdJTlQz
MiAwCisjZW5kaWYKKwogI2lmIENQVShBRERSRVNTNjQpCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FE
RFJFU1M2NCAxCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGY5YTM0ZGFiMzZkLi4wNmUxNTVlZDY4MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMTk2LDYgKzE5NiwxMSBAQCBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBWYWx1ZU51
bGwgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6VmFsdWVOdWxsCiAgICAgY29uc3QgVGFnTnVt
YmVyICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6Ok51bWJlclRhZwogICAgIGNvbnN0IE5vdENl
bGxNYXNrICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpOb3RDZWxsTWFzaworICAgIGlmIEJJR0lO
VDMyCisgICAgICAgIGNvbnN0IFRhZ0JpZ0ludDMyID0gY29uc3RleHByIEpTVmFsdWU6OkJpZ0lu
dDMyVGFnCisgICAgICAgIGNvbnN0IE1hc2tCaWdJbnQzMiA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpC
aWdJbnQzMk1hc2sKKyAgICBlbmQKKyAgICBjb25zdCBMb3dlc3RPZkhpZ2hCaXRzID0gY29uc3Rl
eHByIEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMKIGVsc2UKICAgICBjb25zdCBJbnQzMlRhZyA9
IGNvbnN0ZXhwciBKU1ZhbHVlOjpJbnQzMlRhZwogICAgIGNvbnN0IEJvb2xlYW5UYWcgPSBjb25z
dGV4cHIgSlNWYWx1ZTo6Qm9vbGVhblRhZwpAQCAtNTIxLDYgKzUyNiw3IEBAIGNvbnN0IEpTRnVu
Y3Rpb25UeXBlID0gY29uc3RleHByIEpTRnVuY3Rpb25UeXBlCiBjb25zdCBBcnJheVR5cGUgPSBj
b25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHByIERl
cml2ZWRBcnJheVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9i
amVjdFR5cGUKK2NvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRUeXBl
CiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBwYXJ0
aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNoIHN0
YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRl
eCA3NGM0ODBkZjIxMi4uOTcyNjY5OTY2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMzA3LDYg
KzEzMDcsMTIgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfbnVtYmVyLCBPcElzTnVtYmVyLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogZW5kKQogCiAKKyMgT24gMzItYml0
IHBsYXRmb3JtcyBCSUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkLCBzbyB3ZSBnZW5lcmF0ZSBvcF9p
c19jZWxsX3dpdGhfdHlwZSBpbnN0ZWFkIG9mIG9wX2lzX2JpZ19pbnQKK2xsaW50T3Aob3BfaXNf
YmlnX2ludCwgT3BJc0JpZ0ludCwgbWFjcm8odW51c2VkLCB1bnVzZWQsIHVudXNlZCkKKyAgICBu
b3RTdXBwb3J0ZWQoKQorZW5kKQorCisKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2NlbGxfd2l0
aF90eXBlLCBPcElzQ2VsbFdpdGhUeXBlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQwLCB0MykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODYxMzZlODU3YzkuLjFiMTkyMWE2N2Yz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTg0NCwyNCArODQ0LDQ4IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVm
aW5lZF9vcl9udWxsLCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0CiBlbmQp
CiAKIAotbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGVxdWFsaXR5
T3BlcmF0aW9uKQorbWFjcm8gc3RyaWN0RXFPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGNy
ZWF0ZUJvb2xlYW4pCiAgICAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfJW9wY29kZU5hbWUlLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdl
dChtX3JocywgdDApCiAgICAgICAgIGdldChtX2xocywgdDIpCiAgICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQxKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHNpemUsIHQyLCB0MCkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAgICAg
ICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMgICAg
IGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgcmVzdWx0ID0gKGxlZnQgPT0gcmlnaHQpOworICAg
ICAgICAjIGlmIChyZXN1bHQpCisgICAgICAgICMgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgIyBp
ZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xv
d1BhdGg7CisgICAgICAgICMgZG9uZToKKyAgICAgICAgIyByZXR1cm4gcmVzdWx0OworCisgICAg
ICAgICMgVGhpcyBmcmFnbWVudCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBp
cyBEb3VibGUpLCB3aXRoIGEgc2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291
bGQgYmUgbmFpdmVseSByZXF1aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZO
dW1iZXIKKyAgICAgICAgIyBUaGUgdHJpY2sgaXMgdGhhdCBpZiBhIEpTVmFsdWUgaXMgYW4gSW50
MzIsIHRoZW4gYWRkaW5nIDE8PDQ5IHRvIGl0IHdpbGwgbWFrZSBpdCBvdmVyZmxvdywgbGVhdmlu
ZyBhbGwgaGlnaCBiaXRzIGF0IDAKKyAgICAgICAgIyBJZiBpdCBpcyBub3QgYSBudW1iZXIgYXQg
YWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGlnaCBiaXQgc2V0CisgICAgICAgICMg
TGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3IgZXF1YWwgMTw8NTAuCisgICAgICAgIG1vdmUg
dDAsIHQyCisgICAgICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0
cywgdDUKKyAgICAgICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAg
b3JxIHQyLCB0MworICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwg
LnNsb3cKKworICAgICAgICBjcWVxIHQwLCB0MSwgdDUKKyAgICAgICAgYnRxbnogdDUsIHQ1LCAu
ZG9uZSAjaXMgdGhlcmUgYSBiZXR0ZXIgd2F5IG9mIGNoZWNraW5nIHQ1ICE9IDAgPworCiAgICAg
ICAgIG1vdmUgdDAsIHQyCi0gICAgICAgIG9ycSB0MSwgdDIKKyAgICAgICAgIyBUaGlzIGFuZHEg
Y291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBpdCBtYWtlcyBpdCBw
b3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9uLUNlbGwpCisgICAg
ICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdwotICAg
ICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0cW56IHQwLCBudW1i
ZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIG51bWJlclRhZywg
LnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cKLSAgICAucmlnaHRP
SzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKLSAgICAgICAgb3JxIFZh
bHVlRmFsc2UsIHQwCi0gICAgICAgIHJldHVybih0MCkKKworICAgIC5kb25lOgorICAgICAgICBj
cmVhdGVCb29sZWFuKHQ1KQorICAgICAgICByZXR1cm4odDUpCiAKICAgICAuc2xvdzoKICAgICAg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQpAQCAtODcxLDMzICs4OTUs
NTMgQEAgZW5kCiAKIAogc3RyaWN0RXFPcChzdHJpY3RlcSwgT3BTdHJpY3RlcSwKLSAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY3FlcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCkKKyAg
ICBtYWNybyAob3BlcmFuZCkgeG9ycSBWYWx1ZUZhbHNlLCBvcGVyYW5kIGVuZCkKIAogCiBzdHJp
Y3RFcU9wKG5zdHJpY3RlcSwgT3BOc3RyaWN0ZXEsCi0gICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBy
ZXN1bHQpIGNxbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kKQorICAgIG1hY3JvIChvcGVyYW5k
KSB4b3JxIFZhbHVlVHJ1ZSwgb3BlcmFuZCBlbmQpCiAKIAotbWFjcm8gc3RyaWN0RXF1YWxpdHlK
dW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBlcXVhbGl0eU9wZXJhdGlvbikKK21hY3Jv
IHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwganVtcElmRXF1
YWwsIGp1bXBJZk5vdEVxdWFsKQogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAg
IGdldChtX2xocywgdDIpCiAgICAgICAgIGdldChtX3JocywgdDMpCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDIsIHQwKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQzLCB0MSkKKworICAgICAgICAjIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbworICAg
ICAgICAjIElmIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpCisgICAgICAgICMg
ICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAg
ICMgICAgIGdvdG8ganVtcFRhcmdldDsKKyAgICAgICAgIyBpZiAobGVmdCBpcyBDZWxsIHx8IHJp
Z2h0IGlzIENlbGwpCisgICAgICAgICMgICAgIGdvdG8gc2xvd1BhdGg7CisgICAgICAgICMgZ290
byBvdGhlckp1bXBUYXJnZXQKKworICAgICAgICAjIFRoaXMgZnJhZ21lbnQgaW1wbGVtZW50cyAo
bGVmdCBpcyBEb3VibGUgfHwgcmlnaHQgaXMgRG91YmxlKSwgd2l0aCBhIHNpbmdsZSBicmFuY2gg
aW5zdGVhZCBvZiB0aGUgNCB0aGF0IHdvdWxkIGJlIG5haXZlbHkgcmVxdWlyZWQgaWYgd2UgdXNl
ZCBicmFuY2hJZkludDMyL2JyYW5jaElmTnVtYmVyCisgICAgICAgICMgVGhlIHRyaWNrIGlzIHRo
YXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxs
IG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgICMg
SWYgaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgdGhlbiAxPDw0OSB3aWxsIGJlIGl0cyBvbmx5
IGhpZ2ggYml0IHNldAorICAgICAgICAjIExlYXZpbmcgb25seSBkb3VibGVzIGFib3ZlIG9yIGVx
dWFsIDE8PDUwLgogICAgICAgICBtb3ZlIHQwLCB0MgotICAgICAgICBvcnEgdDEsIHQyCisgICAg
ICAgIG1vdmUgdDEsIHQzCisgICAgICAgIG1vdmUgTG93ZXN0T2ZIaWdoQml0cywgdDUKKyAgICAg
ICAgYWRkcSB0NSwgdDIKKyAgICAgICAgYWRkcSB0NSwgdDMKKyAgICAgICAgb3JxIHQyLCB0Mwor
ICAgICAgICBsc2hpZnRxIDEsIHQ1CisgICAgICAgIGJxYWVxIHQzLCB0NSwgLnNsb3cKKworICAg
ICAgICBicWVxIHQwLCB0MSwgLmVxdWFsCisKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAg
IyBUaGlzIGFuZHEgY291bGQgYmUgYW4gJ29yJyBpZiBub3QgZm9yIEJpZ0ludDMyIChzaW5jZSBp
dCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBDZWxsIHRvIGJlIHN0cmljdEVxdWFsIHRvIGEgbm9u
LUNlbGwpCisgICAgICAgIGFuZHEgdDEsIHQyCiAgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNr
LCAuc2xvdwotICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCi0gICAgICAgIGJ0
cW56IHQwLCBudW1iZXJUYWcsIC5zbG93Ci0gICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEs
IG51bWJlclRhZywgLnJpZ2h0T0sKLSAgICAgICAgYnRxbnogdDEsIG51bWJlclRhZywgLnNsb3cK
LSAgICAucmlnaHRPSzoKLSAgICAgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCAuanVtcFRh
cmdldCkKLSAgICAgICAgZGlzcGF0Y2goKQogCi0gICAgLmp1bXBUYXJnZXQ6Ci0gICAgICAgIGp1
bXAobV90YXJnZXRMYWJlbCkKKyAgICAgICAganVtcElmTm90RXF1YWwoanVtcCwgbV90YXJnZXRM
YWJlbCwgZGlzcGF0Y2gpCisKKyAgICAuZXF1YWw6CisgICAgICAgIGp1bXBJZkVxdWFsKGp1bXAs
IG1fdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKQogCiAgICAgLnNsb3c6CiAgICAgICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoXyVvcGNvZGVOYW1lJSkKQEAgLTkwNywyNiArOTUxLDI4IEBA
IGVuZAogCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpzdHJpY3RlcSwgT3BKc3RyaWN0ZXEsCi0g
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJxZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQpCi0KKyAgICBtYWNybyAoanVtcCwgdGFyZ2V0TGFiZWwsIGRpc3BhdGNoKSBqdW1wKHRhcmdl
dExhYmVsKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlz
cGF0Y2goKSBlbmQpCiAKIHN0cmljdEVxdWFsaXR5SnVtcE9wKGpuc3RyaWN0ZXEsIE9wSm5zdHJp
Y3RlcSwKLSAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYnFuZXEgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQpCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkgZGlz
cGF0Y2goKSBlbmQsCisgICAgbWFjcm8gKGp1bXAsIHRhcmdldExhYmVsLCBkaXNwYXRjaCkganVt
cCh0YXJnZXRMYWJlbCkgZW5kKQogCiBtYWNybyBwcmVPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIGludGVnZXJPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2Rl
TmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCiAgICAgICAgIG1hY3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAg
ICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUg
KyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgICAgICAgICAgb3JoIHR5cGUsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmls
ZTo6bV9iaXRzW3QyXQogICAgICAgICBlbmQKIAogICAgICAgICBnZXQobV9zcmNEc3QsIHQwKQot
ICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQzCi0gICAgICAgIG1ldGFkYXRhKHQxLCB0MikK
LSAgICAgICAgIyBNZXRhZGF0YSBpbiB0MSwgc3JjRHN0IGluIHQzCi0gICAgICAgIGJxYiB0Mywg
bnVtYmVyVGFnLCAuc2xvdwotICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKHQzLCAuc2xvdykKLSAg
ICAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MCwgOF0K
KyAgICAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgICAgICBtZXRhZGF0YSh0MiwgdDMp
CisgICAgICAgICMgc3JjRHN0IGluIHQxLCBtZXRhZGF0YSBpbiB0MgorICAgICAgICAjIEZJWE1F
OiB0aGUgbmV4dCBsaW5lIGp1bXBzIHRvIHRoZSBzbG93IHBhdGggZm9yIEJpZ0ludDMyLiBXZSBj
b3VsZCBpbnN0ZWFkIGhhdmUgYSBkZWRpY2F0ZWQgcGF0aCBpbiBoZXJlIGZvciB0aGVtLgorICAg
ICAgICBicWIgdDEsIG51bWJlclRhZywgLnNsb3cKKyAgICAgICAgaW50ZWdlck9wZXJhdGlvbih0
MSwgLnNsb3cpCisgICAgICAgIG9ycSBudW1iZXJUYWcsIHQxCisgICAgICAgIHN0b3JlcSB0MSwg
W2NmciwgdDAsIDhdCiAgICAgICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQp
CiAgICAgICAgIGRpc3BhdGNoKCkKIApAQCAtOTM0LDYgKzk4MCw3IEBAIG1hY3JvIHByZU9wKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbikKICAgICAgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfJW9wY29kZU5hbWUlKQogICAgICAgICBkaXNwYXRjaCgpCiAgICAg
ZW5kKQorCiBlbmQKIAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJl
ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKQEAgLTEyNzksNiArMTMyNiwy
NiBAQCBsbGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgcmV0dXJuKHQxKQogZW5kKQogCitpZiBC
SUdJTlQzMgorICAgIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX2JpZ19pbnQsIE9wSXNCaWdJbnQs
IG1hY3JvKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICAgICAgZ2V0KG1fb3BlcmFu
ZCwgdDEpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQorICAg
ICAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5ub3RDZWxsQ2FzZQorICAgICAgICBjYmVxIEpT
Q2VsbDo6bV90eXBlW3QwXSwgSGVhcEJpZ0ludFR5cGUsIHQxCisgICAgICAgIG9ycSBWYWx1ZUZh
bHNlLCB0MQorICAgICAgICByZXR1cm4odDEpCisgICAgLm5vdENlbGxDYXNlOgorICAgICAgICBh
bmRxIE1hc2tCaWdJbnQzMiwgdDAKKyAgICAgICAgY3FlcSB0MCwgVGFnQmlnSW50MzIsIHQwCisg
ICAgICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgICAgICByZXR1cm4odDApCisgICAgZW5kKQor
ZWxzZQorIyBpZiBCSUdJTlQzMiBpcyBub3Qgc3VwcG9ydGVkIHdlIGdlbmVyYXRlIG9wX2lzX2Nl
bGxfd2l0aF90eXBlIGluc3RlYWQgb2Ygb3BfaXNfYmlnX2ludAorICAgIGxsaW50T3Aob3BfaXNf
YmlnX2ludCwgT3BJc0JpZ0ludCwgbWFjcm8odW51c2VkLCB1bnVzZWQsIHVudXNlZCkKKyAgICAg
ICAgbm90U3VwcG9ydGVkKCkKKyAgICBlbmQpCitlbmQKIAogbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
aXNfY2VsbF93aXRoX3R5cGUsIE9wSXNDZWxsV2l0aFR5cGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0dShzaXplLCBPcElzQ2VsbFdpdGhUeXBlLCBtX3R5cGUs
IHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRl
eCA4NGZlMzk5Y2Q4Yy4uNGI5NDQ1MDVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC04Myw2ICs4MywxMCBAQCBjb25zdCBJZGVudGlmaWVy
JiBJZGVudGlmaWVyQXJlbmE6Om1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYgdm0sIGNv
bnN0IElkZQogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7
CiAKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNWYWx1
ZSBiaWdJbnQgPSBKU0JpZ0ludDo6cGFyc2VJbnQobnVsbHB0ciwgdm0sIGlkZW50aWZpZXIuc3Ry
aW5nKCksIHJhZGl4LCBKU0JpZ0ludDo6RXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywg
SlNCaWdJbnQ6OlBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CisKICAgICAvLyBGSVhNRTogV2UgYXJlIGFsbG9jYXRpbmcgYSBKU0JpZ0ludCBq
dXN0IHRvIGJlIGFibGUgdG8gdXNlCiAgICAgLy8gSlNCaWdJbnQ6OnRyeUdldFN0cmluZyB3aGVu
IHJhZGl4IGlzIG5vdCAxMC4KICAgICAvLyBUaGlzIGNyZWF0ZXMgc29tZSBHQyBwcmVzc3VyZSwg
YnV0IHNpbmNlIHRoZXNlIGlkZW50aWZpZXJzCkBAIC05MCwxMSArOTQsMTUgQEAgY29uc3QgSWRl
bnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0m
IHZtLCBjb25zdCBJZGUKICAgICAvLyBpdCB3b250IGJlIG11Y2ggcHJvYmxlbWF0aWMsIGdpdmVu
IHN1Y2ggY2FzZXMgYXJlIHZlcnkgcmFyZS4KICAgICAvLyBUaGVyZSBpcyBhIGxvdCBvZiBvcHRp
bWl6YXRpb25zIHdlIGNhbiBhcHBseSBoZXJlIHdoZW4gbmVjZXNzYXJ5LgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MjcKLQotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBKU0JpZ0ludCogYmlnSW50ID0gSlNC
aWdJbnQ6OnBhcnNlSW50KG51bGxwdHIsIHZtLCBpZGVudGlmaWVyLnN0cmluZygpLCByYWRpeCwg
SlNCaWdJbnQ6OkVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIEpTQmlnSW50OjpQYXJz
ZUludFNpZ246OlVuc2lnbmVkKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAg
IG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIEpTQmlnSW50
Ojp0cnlHZXRTdHJpbmcodm0sIGJpZ0ludCwgMTApKSk7CisgICAgSlNCaWdJbnQqIGhlYXBCaWdJ
bnQ7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAg
ICAgICBoZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGJpZ0ludC5iaWdJbnQz
MkFzSW50MzIoKSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGhlYXBCaWdJbnQgPSBiaWdJ
bnQuYXNIZWFwQmlnSW50KCk7CisKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCBKU0JpZ0ludDo6dHJ5R2V0U3RyaW5nKHZtLCBoZWFwQmlnSW50LCAx
MCkpKTsKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBlOTgwMzNh
MmJhNi4uMmJiYjZjMzRkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJMb29rdXAu
aCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9iamVjdFByb3Rv
dHlwZS5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNzdkOGNhZjIzNjguLjhlZDE0YWE4ZTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xp
bWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsMTgg
Kzc1LDYgQEAgdm9pZCBCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBC
aWdJbnRQcm90b3R5cGUqIGJpZ0ludFByb3RvdHlwZSkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3Rh
dGljIGJvb2wgaXNTYWZlSW50ZWdlcihKU1ZhbHVlIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1
bWVudC5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFhcmd1bWVu
dC5pc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgbnVtYmVy
ID0gYXJndW1lbnQuYXNEb3VibGUoKTsKLSAgICByZXR1cm4gdHJ1bmMobnVtYmVyKSA9PSBudW1i
ZXIgJiYgc3RkOjphYnMobnVtYmVyKSA8PSBtYXhTYWZlSW50ZWdlcigpOwotfQotCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBhcmd1bWVudCkKIHsKICAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CkBA
IC05NCwyMCArODIsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiAgICAgCiAgICAgaWYgKGFy
Z3VtZW50LmlzQmlnSW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJndW1l
bnQpOwotICAgIAorCisgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6
SlNCaWdJbnQzMiwgYXJndW1lbnQuYXNCb29sZWFuKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFzQm9v
bGVhbigpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkg
eworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgYXJndW1lbnQsIFsm
XSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTQmlnSW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1l
bnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVh
bigpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7Ci0gICAgCi0g
ICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIo
KSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50
IG9wZXJhdGlvbiJfcyk7Ci0gICAgCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwot
ICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9TdHJpbmdWaWV3KGdsb2JhbE9i
amVjdCwgYXJndW1lbnQsIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OnBhcnNlSW50KGdsb2JhbE9iamVjdCwgdmlldykpOwot
ICAgIH0pKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAg
LTExOSwyMCArMTExLDIyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBw
cmltaXRpdmUgPSB2YWx1ZS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKHByaW1pdGl2
ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIGlmICghaXNTYWZlSW50ZWdlcihwcmltaXRpdmUpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzYWZlIGludGVnZXIiX3MpKTsKLSAgICAg
ICAgCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZS5pc0lu
dDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVh
dGVGcm9tKHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisgICAgaWYgKHByaW1pdGl2ZS5pc0lu
dDMyKCkpIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCBwcmltaXRpdmUuYXNJbnQzMigpKSk7CisjZW5kaWYKKyAgICB9CiAKLSAgICAgICAgaWYg
KHByaW1pdGl2ZS5pc1VJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzVUludDMyKCkpKTsKKyAgICBp
ZiAocHJpbWl0aXZlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHByaW1p
dGl2ZS5hc0RvdWJsZSgpOworICAgICAgICBpZiAodHJ1bmMobnVtYmVyKSAhPSBudW1iZXIgfHwg
c3RkOjphYnMobnVtYmVyKSA+IG1heFNhZmVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiTm90IGEgc2FmZSBpbnRlZ2VyIl9zKSk7CiAKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMih2bSwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4ocHJpbWl0aXZlLmFzRG91YmxlKCkpKSk7CiAgICAgfQotICAgIAorCiAgICAgRW5jb2RlZEpT
VmFsdWUgcmVzdWx0ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmltaXRpdmUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNw
cAppbmRleCBlZTAwNDVkYWM5Ni4uZTYxOTgyYjkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShCaWdJbnRPYmplY3QpOwogY29uc3QgQ2xhc3NJ
bmZvIEJpZ0ludE9iamVjdDo6c19pbmZvID0geyAiQmlnSW50IiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCaWdJbnRPYmplY3QpIH07CiAKIAot
QmlnSW50T2JqZWN0KiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBiaWdJbnQpCitCaWdJbnRPYmplY3QqIEJpZ0ludE9i
amVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBiaWdJbnQpCiB7CiAgICAgQmlnSW50T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxCaWdJbnRPYmplY3Q+KHZtLmhlYXApKSBCaWdJbnRPYmplY3Qodm0sIGdsb2Jh
bE9iamVjdC0+YmlnSW50T2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0sIGJpZ0ludCk7CkBAIC00OSw3ICs0OSw3IEBAIEJpZ0ludE9iamVjdDo6QmlnSW50
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgQmlnSW50
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQmlnSW50KiBiaWdJbnQpCit2b2lkIEJp
Z0ludE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGJpZ0ludCkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50T2JqZWN0LmgKaW5k
ZXggODQ3NjcxMGYyMzIuLmRlYTgxZDIyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRPYmplY3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC00MSwxMSArNDAsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
dm0uYmlnSW50T2JqZWN0U3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlnSW50
T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7CisgICAgc3Rh
dGljIEJpZ0ludE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBKU0JpZ0ludCogaW50ZXJuYWxWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIGFzQmlnSW50KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1
ZSgpKTsgfQorICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEpTV3Jh
cHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7
CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNCaWdJbnQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmlnSW50T2JqZWN0KFZN
JiwgU3RydWN0dXJlKik7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoQmlnSW50T2JqZWN0KSA9
PSBzaXplb2YoSlNXcmFwcGVyT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAppbmRleCAzZWZkNDFkN2RjMy4uOWExNGY2NmE4
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90
eXBlLmNwcApAQCAtODEsMTIgKzgxLDI0IEBAIHZvaWQgQmlnSW50UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKIAogc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIC8vIEZJWE1FOiBoZWFwLWFsbG9jYXRpbmcgYWxsIGJp
ZyBpbnRzIGlzIGlubmVmaWNpZW50LCBidXQgcmUtaW1wbGVtZW50aW5nIHRvU3RyaW5nIGZvciBz
bWFsbCBCaWdJbnRzIGlzIGVub3VnaCB3b3JrIHRoYXQgSSdtIGRlZmVycmluZyBpdCB0byBhIGxh
dGVyIHBhdGNoLgorICAgIGlmICh0aGlzVmFsdWUuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHRoaXNWYWx1ZS5iaWdJbnQzMkFzSW50MzIoKSk7
CisjZW5kaWYKKwogICAgIGlmICh0aGlzVmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKEpT
QmlnSW50KiBiaWdJbnQgPSBqc0R5bmFtaWNDYXN0PEpTQmlnSW50Kj4odm0sIHRoaXNWYWx1ZS5h
c0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm4gYmlnSW50OwotICAgICAgICAKLSAgICAgICAg
aWYgKEJpZ0ludE9iamVjdCogYmlnSW50T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxCaWdJbnRPYmpl
Y3QqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRP
YmplY3QtPmludGVybmFsVmFsdWUoKTsKKworICAgICAgICBpZiAoQmlnSW50T2JqZWN0KiBiaWdJ
bnRPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEJpZ0ludE9iamVjdCo+KHZtLCB0aGlzVmFsdWUuYXND
ZWxsKCkpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGJpZ0ludCA9IGJpZ0ludE9iamVjdC0+aW50
ZXJuYWxWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgICAgIGlmIChiaWdJbnQu
aXNCaWdJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJv
bSh2bSwgYmlnSW50LmJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0
dXJuIGJpZ0ludC5hc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTE2LDYgKzEyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYmlnSW50UHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIHJlc3VsdFN0
cmluZykpOwogfQogCisvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBzaG91bGQgaW50cm9kdWNlIHRo
ZSByaWdodCBzZXBhcmF0b3JzIGZvciB0aG91c2FuZHMgYW5kIHNpbWlsYXIgdGhpbmdzLgogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBmYjQzZTVjNmFkOS4uYjhmNTBk
NmZjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMu
aCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNDczLDEzICs0NzIsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5jKQogICAg
IEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEluYz4oKTsKICAgICBKU1Zh
bHVlIGFyZ3VtZW50ID0gR0VUX0MoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBW
YXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9OdW1l
cmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0luYyhnbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3VsdFZhcmlh
bnQpKQotICAgICAgICByZXN1bHQgPSBKU0JpZ0ludDo6aW5jKGdsb2JhbE9iamVjdCwgV1RGOjpn
ZXQ8SlNCaWdJbnQqPihyZXN1bHRWYXJpYW50KSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQg
PSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KHJlc3VsdFZhcmlhbnQpICsgMSk7CiAgICAgUkVU
VVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgcmVzdWx0LCB7IH0p
OwogfQogCkBAIC00ODgsMTMgKzQ4Miw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWMp
CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVjPigpOwogICAg
IEpTVmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwot
ICAgIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IHJlc3VsdFZhcmlhbnQgPSBhcmd1bWVudC50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzRGVjKGdsb2Jh
bE9iamVjdCwgYXJndW1lbnQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEpTVmFsdWUg
cmVzdWx0OwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmVzdWx0
VmFyaWFudCkpCi0gICAgICAgIHJlc3VsdCA9IEpTQmlnSW50OjpkZWMoZ2xvYmFsT2JqZWN0LCBX
VEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZhcmlhbnQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IGpzTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0VmFyaWFudCkgLSAxKTsKICAg
ICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCByZXN1bHQs
IHsgfSk7CiB9CiAKQEAgLTUxMSw3ICs1MDAsMTUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQ
cm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEK
ICAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxl
OwogICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwotICAgIGlmIChyZXN1bHQuaXNOdW1iZXIo
KSkgeworCisgICAgaWYgKHJlc3VsdC5pc0hlYXBCaWdJbnQoKSkKKyAgICAgICAgcHJvZmlsZS5z
ZXRPYnNlcnZlZEhlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgZWxzZSBpZiAo
cmVzdWx0LmlzQmlnSW50MzIoKSkKKyAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEJpZ0ludDMy
KCk7CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigp
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpZiAob3Bl
cmFuZC5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDMy
T3ZlcmZsb3coKTsKQEAgLTUzMSwxMCArNTI4LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQ
cm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmEK
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocmVzdWx0LmlzQmlnSW50
KCkpCi0gICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWROb25OdW1lcmljKCk7CisgICAgfQogfQogI2Vsc2UKIHN0
YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0
YWRhdGEmLCBKU1ZhbHVlLCBKU1ZhbHVlKSB7IH0KQEAgLTU0OSw4ICs1NDMsMjEgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJh
bmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwogICAgIENIRUNLX0VY
Q0VQVElPTigpOwogCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpT
QmlnSW50KiByZXN1bHQgPSBKU0JpZ0ludDo6dW5hcnlNaW51cyh2bSwgYXNCaWdJbnQocHJpbVZh
bHVlKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChwcmltVmFsdWUuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGludDMyX3QgdmFsdWUgPSBwcmltVmFsdWUuYmlnSW50MzJBc0ludDMyKCk7
CisgICAgICAgIGlmICh2YWx1ZSAhPSBJTlRfTUlOKSB7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgLXZhbHVlKTsKKyAgICAgICAgICAgIFJF
VFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVBcml0
aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AobWV0YWRhdGEsIHJlc3VsdCwgb3BlcmFuZCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcmltVmFsdWUgPSBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgdmFsdWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKHBy
aW1WYWx1ZS5pc0hlYXBCaWdJbnQoKSkgeworICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OnVuYXJ5TWludXModm0sIHByaW1WYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CiAgICAgICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElORyhyZXN1bHQsIHsKICAgICAgICAgICAgIHVwZGF0ZUFyaXRo
UHJvZmlsZUZvclVuYXJ5QXJpdGhPcChtZXRhZGF0YSwgcmVzdWx0LCBvcGVyYW5kKTsKICAgICAg
ICAgfSk7CkBAIC01ODgsOCArNTk1LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludCgpKQot
ICAgICAgICBwcm9maWxlLnNldE9ic2VydmVkQmlnSW50KCk7CisgICAgfSBlbHNlIGlmIChyZXN1
bHQuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRIZWFwQmlnSW50
KCk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGVsc2UgaWYgKHJlc3VsdC5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHByb2ZpbGUuc2V0T2JzZXJ2ZWRCaWdJbnQzMigpOworI2VuZGlmCiAgICAgZWxz
ZSAKICAgICAgICAgcHJvZmlsZS5zZXRPYnNlcnZlZE5vbk51bWVyaWMoKTsKIH0KQEAgLTYxMSwx
MyArNjIyLDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX251bWVyaWMpCiAgICAgQkVH
SU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVG9OdW1lcmljPigpOwogICAgIEpT
VmFsdWUgYXJndW1lbnQgPSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKLSAg
ICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByZXN1bHRWYXJpYW50ID0gYXJndW1lbnQudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBhcmd1bWVudC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBKU1ZhbHVl
IHJlc3VsdDsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KHJlc3Vs
dFZhcmlhbnQpKQotICAgICAgICByZXN1bHQgPSBXVEY6OmdldDxKU0JpZ0ludCo+KHJlc3VsdFZh
cmlhbnQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoV1RGOjpnZXQ8ZG91
YmxlPihyZXN1bHRWYXJpYW50KSk7CiAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9CiAK
QEAgLTY1Myw3ICs2NTksNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogfQogCiAv
LyBUaGUgZm9sbG93aW5nIGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBuZWVkIHRv
IGJlIHN1cmUgdG8gcnVuCi0vLyB0b051bWJlcigpIG9uIHRoZWlyIG9wZXJhbmRzIGluIG9yZGVy
LiAgKEEgY2FsbCB0byB0b051bWJlcigpIGlzIGlkZW1wb3RlbnQKKy8vIHRvTnVtZXJpYy90b0Jp
Z0ludE9ySW50MzIoKSBvbiB0aGVpciBvcGVyYW5kcyBpbiBvcmRlci4gIChBIGNhbGwgdG8gdGhl
c2UgaXMgaWRlbXBvdGVudAogLy8gaWYgYW4gZXhjZXB0aW9uIGlzIGFscmVhZHkgc2V0IG9uIHRo
ZSBDYWxsRnJhbWUuKQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKQpAQCAtNjc1LDI0
ICs2ODEsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKQogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BTdWI+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9y
aHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3ViKGdsb2JhbE9iamVjdCwgbGVm
dCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmlj
ID0gcmlnaHQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0KLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmlj
KSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewot
ICAgICAgICAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzdWIoZ2xvYmFsT2JqZWN0
LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihy
aWdodE51bWVyaWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAg
ICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HKHJlc3VsdCwgewotICAgICAgICAgICAgICAgIHVwZGF0
ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHBj
LCByZXN1bHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzdWJ0cmFjdGlvbi4iKSk7Ci0gICAgfQotCi0gICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKSAt
IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKSk7CiAgICAgUkVUVVJOX1dJVEhfUFJPRklM
SU5HKHJlc3VsdCwgewogICAgICAgICB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9w
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBwYywgcmVzdWx0LCBsZWZ0LCByaWdodCk7CiAgICAg
fSk7CkBAIC03MDQsMjYgKzY5NCw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERpdj4oKTsKICAgICBKU1ZhbHVlIGxlZnQgPSBH
RVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgcmlnaHQgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBsZWZ0
LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNEaXYoZ2xv
YmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0
byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVD
S19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihyaWdo
dE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNCaWdJbnQ6OmRp
dmlkZShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6
OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAgICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7Ci0gICAgICAgICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkcocmVzdWx0LCB7Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGRpdmlzaW9uLiIpKTsK
LSAgICB9Ci0KLSAgICBkb3VibGUgYSA9IFdURjo6Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwot
ICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoYSAvIGIpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElORyhy
ZXN1bHQsIHsKICAgICAgICAgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgcGMsIHJlc3VsdCwgbGVmdCwgcmlnaHQpOwogICAgIH0pOwpA
QCAtNzM1LDI0ICs3MDcsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BNb2Q+KCk7CiAgICAgSlNWYWx1ZSBsZWZ0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJpZ2h0ID0gR0VUX0MoYnl0
ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKLSAgICBhdXRvIGxlZnROdW1lcmljID0gbGVmdC50b051
bWVyaWMoZ2xvYmFsT2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJp
Z2h0TnVtZXJpYyA9IHJpZ2h0LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNSZW1haW5kZXIoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgCi0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNC
aWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+
KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQgPSBKU0JpZ0lu
dDo6cmVtYWluZGVyKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJp
YyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiByZW1haW5kZXIgb3BlcmF0aW9uLiIpKTsKLSAg
ICB9Ci0gICAgCi0gICAgZG91YmxlIGEgPSBXVEY6OmdldDxkb3VibGU+KGxlZnROdW1lcmljKTsK
LSAgICBkb3VibGUgYiA9IFdURjo6Z2V0PGRvdWJsZT4ocmlnaHROdW1lcmljKTsKLSAgICBSRVRV
Uk4oanNOdW1iZXIoanNNb2QoYSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3BvdykKQEAgLTc2MSwyNSArNzE4LDkgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3BvdykKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wUG93Pigp
OwogICAgIEpTVmFsdWUgbGVmdCA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAg
ICAgSlNWYWx1ZSByaWdodCA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7Ci0gICAg
YXV0byBsZWZ0TnVtZXJpYyA9IGxlZnQudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSByaWdodC50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzUG93KGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8
SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmlj
KSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTihy
ZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVu
dGlhdGlvbiBvcGVyYXRpb24uIikpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUgYSA9IFdURjo6
Z2V0PGRvdWJsZT4obGVmdE51bWVyaWMpOwotICAgIGRvdWJsZSBiID0gV1RGOjpnZXQ8ZG91Ymxl
PihyaWdodE51bWVyaWMpOwotCi0gICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1hdGhQb3co
YSwgYikpKTsKKyAgICBSRVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2xzaGlmdCkKQEAgLTc4OCwyMiArNzI5LDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9sc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcExzaGlmdD4oKTsKICAgICBK
U1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBXVEY6Omdl
dDxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVy
aWMpKTsKLSAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBl
IGluIGxlZnQgc2hpZnQgb3BlcmF0aW9uLiIpKTsKLSAgICB9Ci0KLSAgICBSRVRVUk5fUFJPRklM
RUQoanNOdW1iZXIoV1RGOjpnZXQ8aW50MzJfdD4obGVmdE51bWVyaWMpIDw8IChXVEY6OmdldDxp
bnQzMl90PihyaWdodE51bWVyaWMpICYgMzEpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0xT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3JzaGlmdCkKQEAgLTgxMiwyMiArNzQxLDEwIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9yc2hpZnQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFJzaGlmdD4oKTsKICAgICBK
U1ZhbHVlIGxlZnQgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFs
dWUgcmlnaHQgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwotICAgIGF1dG8gbGVm
dE51bWVyaWMgPSBsZWZ0LnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwotICAgIENIRUNL
X0VYQ0VQVElPTigpOwotICAgIGF1dG8gcmlnaHROdW1lcmljID0gcmlnaHQudG9CaWdJbnRPcklu
dDMyKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0KLSAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxKU0JpZ0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgSlNC
aWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwg
V1RGOjpnZXQ8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmln
aHROdW1lcmljKSk7Ci0gICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAg
IFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgICAgICB9CiAKLSAgICAgICAgVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3Ro
ZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQgc2hpZnQgb3BlcmF0aW9uLiJfcykpOwotICAgIH0KLQot
ICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90PihsZWZ0TnVtZXJp
YykgPj4gKFdURjo6Z2V0PGludDMyX3Q+KHJpZ2h0TnVtZXJpYykgJiAzMSkpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzUlNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOworICAgIENI
RUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwogfQogCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCkKQEAgLTg1Myw3OSArNzcwLDQ3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wQml0bm90PigpOwotICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSBH
RVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKSB7Ci0gICAgICAgIEpTQmlnSW50
KiByZXN1bHQgPSBKU0JpZ0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpT
QmlnSW50Kj4ob3BlcmFuZE51bWVyaWMpKTsKLSAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOwotICAgIH0KKyAgICBhdXRvIG9wZXJhbmQg
PSBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9G
SUxFRChqc051bWJlcih+V1RGOjpnZXQ8aW50MzJfdD4ob3BlcmFuZE51bWVyaWMpKSk7CisgICAg
YXV0byByZXN1bHQgPSBqc0JpdHdpc2VOb3QoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kKTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKIH0KIAogU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdGFuZCkKIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRhbmQ+KCk7Ci0gICAgYXV0byBsZWZ0TnVtZXJpYyA9IEdF
VF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVj
dCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVyaWMgPSBHRVRf
QyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3Qp
OwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZl
PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJ
bnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVzdWx0ID0gSlNC
aWdJbnQ6OmJpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0ludCo+KGxlZnRO
dW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAgICAgICAgICAg
IENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ2FuZCcg
b3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9s
aHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpz
VmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQzMl90
PihsZWZ0TnVtZXJpYykgJiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VBbmQoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CiB9
CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKIHsKICAgICBCRUdJTigpOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXRvcj4oKTsKLSAgICBhdXRvIGxlZnROdW1lcmlj
ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKS50b0JpZ0ludE9ySW50MzIoZ2xvYmFs
T2JqZWN0KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9
IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGdsb2JhbE9i
amVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgfHwgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihsZWZ0TnVtZXJpYykgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxK
U0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpIHsKLSAgICAgICAgICAgIEpTQmlnSW50KiByZXN1bHQg
PSBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2JhbE9iamVjdCwgV1RGOjpnZXQ8SlNCaWdJbnQqPihs
ZWZ0TnVtZXJpYyksIFdURjo6Z2V0PEpTQmlnSW50Kj4ocmlnaHROdW1lcmljKSk7Ci0gICAgICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOwotICAgICAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpz
VmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUo
KTsKIAotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxp
ZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24u
IikpOwotICAgIH0KLQotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6OmdldDxpbnQz
Ml90PihsZWZ0TnVtZXJpYykgfCBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMpKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VPcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
IH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcikKIHsKICAgICBCRUdJTigpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BCaXR4b3I+KCk7Ci0gICAgYXV0byBsZWZ0TnVt
ZXJpYyA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCkudG9CaWdJbnRPckludDMyKGds
b2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byByaWdodE51bWVy
aWMgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpLnRvQmlnSW50T3JJbnQzMihnbG9i
YWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBXVEY6OmdldDxKU0JpZ0lu
dCo+KGxlZnROdW1lcmljKSwgV1RGOjpnZXQ8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKTsKLSAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGJpdHdp
c2UgJ3hvcicgb3BlcmF0aW9uLiIpKTsKLSAgICB9CisgICAgYXV0byBsZWZ0ID0gR0VUX0MoYnl0
ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKKyAgICBhdXRvIHJpZ2h0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIFJFVFVSTl9QUk9GSUxFRChqc051bWJlcihXVEY6Omdl
dDxpbnQzMl90PihsZWZ0TnVtZXJpYykgXiBXVEY6OmdldDxpbnQzMl90PihyaWdodE51bWVyaWMp
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0JpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0
LCByaWdodCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCmluZGV4IGRjZGZjZmEyYmNiLi5lOWI1NDY1NzAyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5jcHAKQEAgLTg3LDEyICs4NywyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCogZwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBudW1iZXJG
b3JtYXQgPSBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogCi0gICAgYXV0byB2YXJpYW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGJpZ0ludE9yTnVtYmVyID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN3aXRjaE9uKHZhcmlhbnQsIFsmXShhdXRvJiYgdmFsdWUp
IHsKLSAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFs
dWUpOwotICAgIH0pKSk7CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmIChiaWdJbnRPck51
bWJlci5pc051bWJlcigpKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGJpZ0ludE9yTnVtYmVy
LmFzTnVtYmVyKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0
LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIH0KKworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBpZiAoYmlnSW50T3JOdW1iZXIuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIEpTQmln
SW50KiB2YWx1ZSA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBiaWdJbnRPck51bWJlci5iaWdJ
bnQzMkFzSW50MzIoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9y
bWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAg
QVNTRVJUKGJpZ0ludE9yTnVtYmVyLmlzSGVhcEJpZ0ludCgpKTsKKyAgICBKU0JpZ0ludCogdmFs
dWUgPSBiaWdJbnRPck51bWJlci5hc0hlYXBCaWdJbnQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgdmFsdWUpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0
dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDlj
MzQ1NDQyZjU0Li4xYzIzOWNiZmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
Q2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEpTQmlnSW50Ojppbml0aWFsaXpl
KEluaXRpYWxpemF0aW9uVHlwZSBpbml0VHlwZSkKIAogU3RydWN0dXJlKiBKU0JpZ0ludDo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQmlnSW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEhlYXBCaWdJbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiB9CiAKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlWmVybyhWTSYgdm0pCkBAIC0xNDIs
OCArMTQyLDEwIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShWTSYgdm0sIGludDY0
X3QgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8o
dm0pOwotICAgIAotICAgIGlmIChzaXplb2YoRGlnaXQpID09IDgpIHsKKworICAgIC8vIFRoaXMg
cGF0aCBpcyBub3QganVzdCBhbiBvcHRpbWl6YXRpb246IGJlY2F1c2Ugd2UgZG8gbm90IGNhbGwg
cmlnaHRUcmltIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiwKKyAgICAvLyBpdCB3b3VsZCBi
ZSBhIGJ1ZyB0byBjcmVhdGUgYSBCaWdJbnQgd2l0aCBsZW5ndGg9MiBpbiB0aGlzIGNhc2UuCisg
ICAgaWYgKHNpemVvZihEaWdpdCkgPT0gOCB8fCAodmFsdWUgPD0gSU5UX01BWCAmJiB2YWx1ZSA+
PSBJTlRfTUlOKSkgewogICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aFVuY2hlY2tlZCh2bSwgMSk7CiAgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAg
IGJpZ0ludC0+c2V0RGlnaXQoMCwgc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2
NF90PigtKHZhbHVlICsgMSkpICsgMSkpOwpAQCAtMTg4LDM0ICsxOTAsMjEgQEAgSlNWYWx1ZSBK
U0JpZ0ludDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEpTQmlnSW50Kj4odGhpcyk7CiB9CiAK
LU9wdGlvbmFsPHVpbnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkK
LXsKLSAgICBpZiAoaXNaZXJvKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChs
ZW5ndGgoKSA9PSAxICYmICFzaWduKCkpIHsKLSAgICAgICAgRGlnaXQgckRpZ2l0ID0gZGlnaXQo
MCk7Ci0gICAgICAgIGlmIChyRGlnaXQgPD0gOSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50OF90PihyRGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1KU0Jp
Z0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cmluZ1ZpZXcgcywgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKK0pTVmFsdWUgSlNCaWdJbnQ6
OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgcywgRXJy
b3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQoKSkKICAgICAgICAg
cmV0dXJuIHBhcnNlSW50KGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgp
LCBwYXJzZXJNb2RlKTsKICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCBzLmNoYXJh
Y3RlcnMxNigpLCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpTQmln
SW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmlu
Z1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJ
bnRTaWduIHNpZ24pCitKU1ZhbHVlIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQ
YXJzZU1vZGUgcGFyc2VyTW9kZSwgUGFyc2VJbnRTaWduIHNpZ24pCiB7CiAgICAgaWYgKHMuaXM4
Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBzLmNoYXJh
Y3RlcnM4KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBzaWduLCBQYXJzZUlu
dE1vZGU6OkRpc2FsbG93RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBwYXJzZUludChnbG9iYWxP
YmplY3QsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgcGFyc2Vy
TW9kZSwgc2lnbiwgUGFyc2VJbnRNb2RlOjpEaXNhbGxvd0VtcHR5U3RyaW5nKTsKIH0KIAotSlNC
aWdJbnQqIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmdWaWV3IHMpCitKU1ZhbHVlIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHMpCiB7CiAgICAgcmV0dXJuIHBh
cnNlSW50KGdsb2JhbE9iamVjdCwgcywgRXJyb3JQYXJzZU1vZGU6Oklnbm9yZUV4Y2VwdGlvbnMp
OwogfQpAQCAtNDU0LDE2ICs0NDMsMjMgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpyZW1haW5kZXIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW4KIAogSlNC
aWdJbnQqIEpTQmlnSW50OjppbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJ
bnQqIHgpCiB7Ci0gICAgLy8gRklYTUU6IHdlIGNhbiBwcm9iYWJseSBkbyBzb21ldGhpbmcgYSBm
YWlyIGJpdCBtb3JlIGVmZmljaWVudCBoZXJlCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIHJldHVybiBhZGQoZ2xvYmFsT2JqZWN0LCB4LCB2bS5iaWdJbnRDb25zdGFudE9u
ZS5nZXQoKSk7CisgICAgaWYgKCF4LT5zaWduKCkpCisgICAgICAgIHJldHVybiBhYnNvbHV0ZUFk
ZE9uZShnbG9iYWxPYmplY3QsIHgsIFNpZ25PcHRpb246OlVuc2lnbmVkKTsKKyAgICBKU0JpZ0lu
dCogcmVzdWx0ID0gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4LCB4LT5sZW5ndGgoKSk7
CisgICAgcmVzdWx0LT5zZXRTaWduKHRydWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEpT
QmlnSW50KiBKU0JpZ0ludDo6ZGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiB4KQogewotICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgZG8gc29tZXRoaW5nIGEg
ZmFpciBiaXQgbW9yZSBlZmZpY2llbnQgaGVyZQotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKLSAgICByZXR1cm4gc3ViKGdsb2JhbE9iamVjdCwgeCwgdm0uYmlnSW50Q29uc3RhbnRP
bmUuZ2V0KCkpOworICAgIGlmICh4LT5pc1plcm8oKSkgeworICAgICAgICBKU0JpZ0ludCogcmVz
dWx0ID0gY3JlYXRlRnJvbShnbG9iYWxPYmplY3QtPnZtKCksIDEpOworICAgICAgICByZXN1bHQt
PnNldFNpZ24odHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmICgh
eC0+c2lnbigpKQorICAgICAgICByZXR1cm4gYWJzb2x1dGVTdWJPbmUoZ2xvYmFsT2JqZWN0LCB4
LCB4LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGFic29sdXRlQWRkT25lKGdsb2JhbE9iamVjdCwg
eCwgU2lnbk9wdGlvbjo6U2lnbmVkKTsKIH0KIAogSlNCaWdJbnQqIEpTQmlnSW50OjphZGQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KQpAQCAt
NTMyLDcgKzUyOCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Yml0d2lzZUFuZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogeCwgSlNCaWdJCiAgICAgaWYgKHgtPnNpZ24o
KSkKICAgICAgICAgc3RkOjpzd2FwKHgsIHkpOwogICAgIAotICAgIC8vIHggJiAoLXkpID09IHgg
JiB+KHktMSkgPT0geCAmIH4oeS0xKQorICAgIC8vIHggJiAoLXkpID09IHggJiB+KHktMSkKICAg
ICBKU0JpZ0ludCogeTEgPSBhYnNvbHV0ZVN1Yk9uZShnbG9iYWxPYmplY3QsIHksIHktPmxlbmd0
aCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICByZXR1
cm4gYWJzb2x1dGVBbmROb3Qodm0sIHgsIHkxKTsKQEAgLTE2NDQsNyArMTY0MCw3IEBAIFN0cmlu
ZyBKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTCiBTdHJpbmcgSlNCaWdJbnQ6OnRvU3RyaW5nR2VuZXJpYyhWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB4LCB1bnNpZ25lZCBy
YWRpeCkKIHsKICAgICAvLyBGSVhNRTogW0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50
byBKU0JpZ0ludDo6dG9TdHJpbmcKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwNjcKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwNjcxCiAgICAgVmVjdG9yPExDaGFyPiByZXN1bHRTdHJpbmc7CiAKICAgICBB
U1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0xODAyLDcgKzE3OTgsNyBAQCBi
b29sIEpTQmlnSW50OjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlJiBudW1iZXIsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
LUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlIGVycm9y
UGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VN
b2RlIGVycm9yUGFyc2VNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
IApAQCAtMTgxMCw3ICsxODA2LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDaGFyVHlwZSogIGRhdGEsIHVuc2kKICAgICB3aGls
ZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsK
IAotICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycworICAgIC8vIENoZWNr
IFJhZGl4IGZyb20gZmlyc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkgJiYgZGF0YVtwXSA9PSAn
MCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0s
ICdiJykpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2bSwgZGF0
YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbjo6VW5zaWdu
ZWQsIFBhcnNlSW50TW9kZTo6RGlzYWxsb3dFbXB0eVN0cmluZyk7CkBAIC0xODI0LDI0ICsxODIw
LDE4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2hhclR5cGUqICBkYXRhLCB1bnNpCiAKICAgICBQYXJzZUludFNpZ24gc2lnbiA9
IFBhcnNlSW50U2lnbjo6VW5zaWduZWQ7CiAgICAgaWYgKHAgPCBsZW5ndGgpIHsKLSAgICAgICAg
aWYgKGRhdGFbcF0gPT0gJysnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlIGlmIChk
YXRhW3BdID09ICctJykgeworICAgICAgICBpZiAoZGF0YVtwXSA9PSAnLScpIHsKICAgICAgICAg
ICAgIHNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZDsKICAgICAgICAgICAgICsrcDsKLSAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRhdGFbcF0gPT0gJysnKQorICAgICAgICAgICAgKytw
OwogICAgIH0KIAotICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChnbG9iYWxPYmplY3Qs
IHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBlcnJvclBhcnNlTW9kZSwgc2lnbik7Ci0KLSAgICBp
ZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzWmVybygpKQotICAgICAgICByZXN1bHQtPnNldFNpZ24o
c2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBwYXJzZUludChnbG9iYWxPYmplY3QsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwLCBl
cnJvclBhcnNlTW9kZSwgc2lnbik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
LUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBh
cnNlSW50U2lnbiBzaWduLCBQYXJzZUludE1vZGUgcGFyc2VNb2RlKQorSlNWYWx1ZSBKU0JpZ0lu
dDo6cGFyc2VJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBDaGFyVHlw
ZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBy
YWRpeCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUsIFBhcnNlSW50U2lnbiBzaWduLCBQ
YXJzZUludE1vZGUgcGFyc2VNb2RlKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAg
dW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7CkBAIC0xODUyLDcgKzE4NDIsNyBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwg
Q2hhclR5cGUqIGRhdAogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYg
KGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpCiAgICAg
ICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJy
b3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0K
IAogICAgIC8vIFNraXBwaW5nIGxlYWRpbmcgemVyb3MKQEAgLTE4NjYsNDQgKzE4NTYsODQgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBWTSYgdm0sIENoYXJUeXBlKiBkYXQKIAogICAgIGxlbmd0aCA9IGVuZEluZGV4ICsgMTsKIAot
ICAgIGlmIChwID09IGxlbmd0aCkKKyAgICBpZiAocCA9PSBsZW5ndGgpIHsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIDApOwor
I2Vsc2UKICAgICAgICAgcmV0dXJuIGNyZWF0ZVplcm8odm0pOwotCi0gICAgdW5zaWduZWQgbGlt
aXQwID0gJzAnICsgKHJhZGl4IDwgMTAgPyByYWRpeCA6IDEwKTsKLSAgICB1bnNpZ25lZCBsaW1p
dGEgPSAnYScgKyAocmFkaXggLSAxMCk7Ci0gICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHJh
ZGl4IC0gMTApOwotCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9i
amVjdCwgdm0sIHJhZGl4LCBsZW5ndGggLSBwKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKLSAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9u
J3QgaGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRo
cm93IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmVzdWx0LT5pbml0aWFsaXplKEluaXRpYWxpemF0aW9u
VHlwZTo6V2l0aFplcm8pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gcDsgaSA8IGxlbmd0aDsg
aSsrLCBwKyspIHsKLSAgICAgICAgdWludDMyX3QgZGlnaXQ7Ci0gICAgICAgIGlmIChkYXRhW2ld
ID49ICcwJyAmJiBkYXRhW2ldIDwgbGltaXQwKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ld
IC0gJzAnOwotICAgICAgICBlbHNlIGlmIChkYXRhW2ldID49ICdhJyAmJiBkYXRhW2ldIDwgbGlt
aXRhKQotICAgICAgICAgICAgZGlnaXQgPSBkYXRhW2ldIC0gJ2EnICsgMTA7Ci0gICAgICAgIGVs
c2UgaWYgKGRhdGFbaV0gPj0gJ0EnICYmIGRhdGFbaV0gPCBsaW1pdEEpCi0gICAgICAgICAgICBk
aWdpdCA9IGRhdGFbaV0gLSAnQScgKyAxMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgcmVzdWx0LT5pbnBsYWNlTXVsdGlwbHlBZGQoc3RhdGljX2Nhc3Q8RGln
aXQ+KHJhZGl4KSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7CisjZW5kaWYKICAgICB9CiAK
LSAgICByZXN1bHQtPnNldFNpZ24oc2lnbiA9PSBQYXJzZUludFNpZ246OlNpZ25lZCA/IHRydWUg
OiBmYWxzZSk7Ci0gICAgaWYgKHAgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5y
aWdodFRyaW0odm0pOworICAgIC8vIFRoZSBpZGVhIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgbnVt
YmVyIHN1Y2ggdGhhdCByYWRpeCAqKiBsZW5ndGhMaW1pdEZvckJpZ0ludDMyIDw9IElOVDMyX01B
WAorICAgIHVuc2lnbmVkIGxlbmd0aExpbWl0Rm9yQmlnSW50MzI7CisgICAgc3dpdGNoIChyYWRp
eCkgeworICAgIGNhc2UgMjoKKyAgICAgICAgbGVuZ3RoTGltaXRGb3JCaWdJbnQzMiA9IDMwOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6CisgICAgICAgIGxlbmd0aExpbWl0Rm9yQmlnSW50
MzIgPSAxMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxMDoKKyAgICAgICAgbGVuZ3RoTGlt
aXRGb3JCaWdJbnQzMiA9IDk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTY6CisgICAgICAg
IGxlbmd0aExpbWl0Rm9yQmlnSW50MzIgPSA3OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBsZW5ndGhMaW1pdEZvckJpZ0ludDMyID0gMTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgSlNCaWdJbnQqIGhlYXBSZXN1bHQgPSBudWxscHRyOwogCi0gICAgQVNTRVJU
KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2Rl
OjpUaHJvd0V4Y2VwdGlvbnMpCi0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3Ry
aW5nIHRvIEJpZ0ludCIpKTsKKyAgICB1bnNpZ25lZCBsaW1pdDAgPSAnMCcgKyAocmFkaXggPCAx
MCA/IHJhZGl4IDogMTApOworICAgIHVuc2lnbmVkIGxpbWl0YSA9ICdhJyArIChzdGF0aWNfY2Fz
dDxpbnQzMl90PihyYWRpeCkgLSAxMCk7CisgICAgdW5zaWduZWQgbGltaXRBID0gJ0EnICsgKHN0
YXRpY19jYXN0PGludDMyX3Q+KHJhZGl4KSAtIDEwKTsKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVu
Z3RoID0gbGVuZ3RoIC0gcDsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCkgeworICAgICAgICBpbnQz
Ml90IGRpZ2l0ID0gMDsKKyAgICAgICAgQ2hlY2tlZDxpbnQzMl90LCBDcmFzaE9uT3ZlcmZsb3c+
IG11bHRpcGxpZXIgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
TGltaXRGb3JCaWdJbnQzMiAmJiBwIDwgbGVuZ3RoIDsgKytpLCArK3ApIHsKKyAgICAgICAgICAg
IGRpZ2l0ICo9IHJhZGl4OworICAgICAgICAgICAgbXVsdGlwbGllciAqPSByYWRpeDsKKyAgICAg
ICAgICAgIGlmIChkYXRhW3BdID49ICcwJyAmJiBkYXRhW3BdIDwgbGltaXQwKQorICAgICAgICAg
ICAgICAgIGRpZ2l0ICs9IGRhdGFbcF0gLSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChkYXRh
W3BdID49ICdhJyAmJiBkYXRhW3BdIDwgbGltaXRhKQorICAgICAgICAgICAgICAgIGRpZ2l0ICs9
IGRhdGFbcF0gLSAnYScgKyAxMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbcF0gPj0gJ0En
ICYmIGRhdGFbcF0gPCBsaW1pdEEpCisgICAgICAgICAgICAgICAgZGlnaXQgKz0gZGF0YVtwXSAt
ICdBJyArIDEwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9y
UGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxP
YmplY3QsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQoZGlnaXQgPCBtdWx0aXBsaWVyLnVuc2FmZUdldCgp
KTsKKworICAgICAgICBpZiAoIWhlYXBSZXN1bHQpIHsKKyAgICAgICAgICAgIGlmIChwID09IGxl
bmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09IFBhcnNlSW50U2lnbjo6U2lnbmVk
KQorICAgICAgICAgICAgICAgICAgICBkaWdpdCAqPSAtMTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgZGlnaXQp
OworI2Vsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRnJvbSh2bSwgc3RhdGljX2Nh
c3Q8aW50NjRfdD4oZGlnaXQpKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAg
aGVhcFJlc3VsdCA9IGFsbG9jYXRlRm9yKGdsb2JhbE9iamVjdCwgdm0sIHJhZGl4LCBpbml0aWFs
TGVuZ3RoKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisgICAgICAgICAgICAvLyByZXN1bHQgY2FuIHN0aWxsIGJlIG51bGwgaWYgd2UgZG9uJ3Qg
aGF2ZSBhY2Nlc3MgdG8gZ2xvYmFsIG9iamVjdCwgYXMgYWxsb2NhdGVGb3IgY2Fubm90IHRocm93
IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICBpZiAoIWhlYXBSZXN1bHQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIGhlYXBSZXN1
bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CisgICAgICAgIH0K
KyAgICAgICAgaGVhcFJlc3VsdC0+aW5wbGFjZU11bHRpcGx5QWRkKHN0YXRpY19jYXN0PERpZ2l0
PihtdWx0aXBsaWVyLnVuc2FmZUdldCgpKSwgc3RhdGljX2Nhc3Q8RGlnaXQ+KGRpZ2l0KSk7Cisg
ICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaGVhcFJlc3VsdC0+c2V0U2lnbihzaWdu
ID09IFBhcnNlSW50U2lnbjo6U2lnbmVkKTsKKyAgICByZXR1cm4gaGVhcFJlc3VsdC0+cmlnaHRU
cmltKHZtKTsKIH0KIAogaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXQodW5z
aWduZWQgbikKQEAgLTE5MjcsMTggKzE5NTcsMjAgQEAgYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9O
dW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKIHsKICAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1iZXIo
KSk7CiAgICAgCi0gICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICBpbnQgdmFs
dWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7Ci0KLSAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgo
KSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQo
MCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZh
bHVlKSkpKTsKLSAgICB9CisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIGVxdWFsc1RvSW50MzIobnVtVmFsdWUuYXNJbnQzMigpKTsKICAgICAKICAgICBkb3VibGUg
dmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOwogICAgIHJldHVybiBjb21wYXJlVG9Eb3VibGUo
dGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCitib29sIEpTQmln
SW50OjplcXVhbHNUb0ludDMyKGludDMyX3QgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkg
PT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0KDAp
ID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1
ZSkpKSk7Cit9CisKIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21wYXJl
VG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQogewogICAgIC8vIFRoaXMgYWxnb3JpdGht
IGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA4YTRlNjA5OWY0Ny4uOGUyYzE0OGU2Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWls
LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgyLDYgKzgyLDE3IEBA
IHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
OyB9CiAKKyAgICBzdGF0aWMgSlNWYWx1ZSBtYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoVk0mIHZt
LCBpbnQ2NF90IHZhbHVlKQorICAgIHsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgIGlmICh2
YWx1ZSA8PSBJTlRfTUFYICYmIHZhbHVlID49IElOVF9NSU4pCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkp
OworI2VuZGlmCisKKyAgICAgICAgYXV0byBwdHIgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
dmFsdWUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShzdGF0aWNfY2FzdDxKU0NlbGwqPihwdHIp
KTsKKyAgICB9CisKICAgICBlbnVtIGNsYXNzIEVycm9yUGFyc2VNb2RlIHsKICAgICAgICAgVGhy
b3dFeGNlcHRpb25zLAogICAgICAgICBJZ25vcmVFeGNlcHRpb25zCkBAIC05MCwxMyArMTAxLDEy
IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERpc2FsbG93RW1wdHlT
dHJpbmcsIEFsbG93RW1wdHlTdHJpbmcgfTsKICAgICBlbnVtIGNsYXNzIFBhcnNlSW50U2lnbiB7
IFVuc2lnbmVkLCBTaWduZWQgfTsKIAotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoSlNH
bG9iYWxPYmplY3QqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VN
b2RlID0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0aW9ucywgUGFyc2VJbnRTaWduID0gUGFy
c2VJbnRTaWduOjpVbnNpZ25lZCk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChKU0ds
b2JhbE9iamVjdCosIFN0cmluZ1ZpZXcsIEVycm9yUGFyc2VNb2RlID0gRXJyb3JQYXJzZU1vZGU6
OlRocm93RXhjZXB0aW9ucyk7Ci0gICAgc3RhdGljIEpTQmlnSW50KiBzdHJpbmdUb0JpZ0ludChK
U0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBh
cnNlTW9kZSA9IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9
IFBhcnNlSW50U2lnbjo6VW5zaWduZWQpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpT
R2xvYmFsT2JqZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9k
ZTo6VGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBzdHJpbmdUb0JpZ0ludChK
U0dsb2JhbE9iamVjdCosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RhdGljIFN0cmluZyB0cnlHZXRT
dHJpbmcoVk0mLCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsKIAotICAgIE9wdGlvbmFsPHVp
bnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKICAgICBTdHJpbmcgdG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCByYWRpeCk7CiAgICAgCiAgICAgZW51bSBjbGFzcyBD
b21wYXJpc29uTW9kZSB7CkBAIC0xMTMsNiArMTIzLDcgQEAgcHVibGljOgogICAgIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmlnSW50Kik7
CiAgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGVxdWFsc1RvSW50MzIoaW50MzJfdCk7CiAgICAgc3RhdGljIENvbXBhcmlzb25SZXN1
bHQgY29tcGFyZShKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOwogCiAgICAgYm9vbCBnZXRQcmlt
aXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVz
dWx0KSBjb25zdDsKQEAgLTIyMiwxMCArMjMzLDEwIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJ
bnQoSlNHbG9iYWxPYmplY3QqLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJy
b3JQYXJzZU1vZGUpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2JqZWN0
KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBh
cnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUs
IFBhcnNlSW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJz
ZUludE1vZGU6OkFsbG93RW1wdHlTdHJpbmcpOworICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50
KEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIFBhcnNl
SW50U2lnbiA9IFBhcnNlSW50U2lnbjo6U2lnbmVkLCBQYXJzZUludE1vZGUgPSBQYXJzZUludE1v
ZGU6OkFsbG93RW1wdHlTdHJpbmcpOwogCiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZv
cihKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5zaWduZWQgcmFkaXgsIHVuc2lnbmVkIGNoYXJjb3Vu
dCk7CiAKQEAgLTI1OCw5ICsyNjksOSBAQCBwcml2YXRlOgogICAgIENhZ2VkVW5pcXVlUHRyPEdp
Z2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7CiB9OwogCi1pbmxpbmUgSlNCaWdJbnQq
IGFzQmlnSW50KEpTVmFsdWUgdmFsdWUpCitpbmxpbmUgSlNCaWdJbnQqIGFzSGVhcEJpZ0ludChK
U1ZhbHVlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZS5hc0NlbGwoKS0+aXNCaWdJbnQoKSk7
CisgICAgQVNTRVJUKHZhbHVlLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSk7CiAgICAgcmV0dXJu
IGpzQ2FzdDxKU0JpZ0ludCo+KHZhbHVlLmFzQ2VsbCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1ZGI3Y2QzZmQxOS4uOGY3ZWJm
YjE1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogCisjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkN1
c3RvbUdldHRlclNldHRlci5oIgpAQCAtNjgsOSArNjksMTggQEAgZG91YmxlIEpTVmFsdWU6OnRv
TGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAKIGRvdWJsZSBKU1Zh
bHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghaXNJbnQzMigpICYmICFpc0Rv
dWJsZSgpKTsKICAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBhc0NlbGwoKS0+dG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBh
c0NlbGwoKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAg
IGlmIChpc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxs
b3dlZC4iX3MpOworICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyNlbmRpZgogICAgIGlmIChp
c1RydWUoKSkKICAgICAgICAgcmV0dXJuIDEuMDsKICAgICByZXR1cm4gaXNVbmRlZmluZWQoKSA/
IFBOYU4gOiAwOyAvLyBudWxsIGFuZCBmYWxzZSBib3RoIGNvbnZlcnQgdG8gMC4KQEAgLTEwMSw2
ICsxMTEsMTAgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJl
cihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2Uo
KSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihn
bG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0Jp
Z0ludDMyKCkpCisgICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAqdGhpcyk7CisjZW5kaWYKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgp
KTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKQEAgLTExOCw2ICsxMzIsMTMgQEAgSlNW
YWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihnbG9i
YWxPYmplY3QsIGFzVmFsdWUoKSk7CiAgICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2UoKSkKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihnbG9iYWxP
YmplY3QsIGFzVmFsdWUoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMy
KCkpIHsKKyAgICAgICAgSlNDZWxsKiBoZWFwQmlnSW50ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4o
SlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBiaWdJbnQzMkFzSW50MzIo
KSkpOworICAgICAgICByZXR1cm4gaGVhcEJpZ0ludC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICB9CisjZW5kaWYKKwogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7CiB9CkBAIC0xMzAsNyArMTUxLDcgQEAg
SlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3Ry
aW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUo
KTsKLSAgICAgICAgaWYgKGlzQmlnSW50KCkpCisgICAgICAgIGlmIChpc0hlYXBCaWdJbnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJpZ0ludFByb3RvdHlwZSgpOwogICAg
ICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5
bWJvbFByb3RvdHlwZSgpOwpAQCAtMTQwLDYgKzE2MSwxMCBAQCBKU09iamVjdCogSlNWYWx1ZTo6
c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b3R5cGUoKTsKICAgICBpZiAo
aXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmJvb2xlYW5Qcm90b3R5
cGUoKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CisjZW5kaWYKIAogICAgIEFT
U0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsK
QEAgLTI4Niw2ICszMTEsOCBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0
cnVjdHVyZSgKICAgICAgICAgICAgIG91dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVyKGFz
Q2VsbCgpKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3Vi
Q2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0cnVj
dHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250ZXh0
KSk7CisgICAgICAgIGVsc2UgaWYgKGlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgb3V0LnBy
aW50KCJCaWdJbnRbaGVhcC1hbGxvY2F0ZWRdOiBhZGRyPSIsIFJhd1BvaW50ZXIoYXNDZWxsKCkp
KTsKICAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09m
KEpTT2JqZWN0OjppbmZvKCkpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIk9iamVjdDogIiwg
UmF3UG9pbnRlcihhc0NlbGwoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50KCIgd2l0aCBidXR0
ZXJmbHkgIiwgUmF3UG9pbnRlcihhc09iamVjdChhc0NlbGwoKSktPmJ1dHRlcmZseSgpKSk7CkBA
IC0zMDUsNiArMzMyLDEwIEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3Ry
dWN0dXJlKAogICAgICAgICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVm
aW5lZCgpKQogICAgICAgICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQz
MikKKyAgICBlbHNlIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0lu
dFtpbmxpbmVdOiAlZCIsIGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAg
ICAgICAgb3V0LnByaW50KCJJTlZBTElEIik7CiB9CkBAIC0zNDcsNiArMzc4LDEwIEBAIHZvaWQg
SlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAg
ICBvdXQucHJpbnQoIk51bGwiKTsKICAgICBlbHNlIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAg
ICBvdXQucHJpbnQoIlVuZGVmaW5lZCIpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlm
IChpc0JpZ0ludDMyKCkpCisgICAgICAgIG91dC5wcmludGYoIkJpZ0ludFtpbmxpbmVdOiAlZCIs
IGJpZ0ludDMyQXNJbnQzMigpKTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50
KCJJTlZBTElEIik7CiB9CkBAIC0zODQsMTggKzQxOSwyNyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6
dG9TdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJldHVy
bkVtcAogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoKTsKICAgICBp
ZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmlu
ZWRTdHJpbmcoKTsKLSAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJp
bmciX3MpOwotICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAoaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGF1dG8gaW50ZWdlciA9IGJpZ0ludDMy
QXNJbnQzMigpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVnZXIpIDw9
IDkpCisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhpbnRlZ2VyICsgJzAnKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGludGVnZXIpKTsKICAgICB9Ci0gICAgaWYgKGlzQmln
SW50KCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGFzQmlnSW50KCp0aGlzKTsKLSAg
ICAgICAgaWYgKGF1dG8gZGlnaXQgPSBiaWdJbnQtPnNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmco
KSkKLSAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKCpkaWdpdCArICcwJyk7Ci0gICAgICAgIEpTU3RyaW5nKiByZXR1cm5TdHJpbmcgPSBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGJpZ0ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCkpOwor
I2VuZGlmCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJ
bnQgPSBhc0hlYXBCaWdJbnQoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByYXRoZXIg
aGF2ZSB0d28gY2FzZXMgaGVyZTogb25lLWNoYXJhY3RlciBzdHJpbmcgdnMganNOb25Ucml2aWFs
U3RyaW5nIGZvciBldmVyeXRoaW5nIGVsc2UuCisgICAgICAgIGF1dG8gc3RyaW5nID0gYmlnSW50
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZXJyb3JWYWx1ZSgpKTsKKyAgICAgICAgSlNTdHJpbmcqIHJldHVyblN0cmluZyA9
IEpTU3RyaW5nOjpjcmVhdGUodm0sIHN0cmluZy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlcnJvclZhbHVlKCkpOwog
ICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwogICAgIH0KKyAgICBpZiAoaXNTeW1ib2woKSkg
eworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNv
bnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciX3MpOworICAgICAgICByZXR1cm4gZXJyb3JWYWx1
ZSgpOworICAgIH0KIAogICAgIEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGFzQ2VsbCgpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlclN0cmluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZDMwMmIxODY1M2Uu
LmNkYjFhNjMzMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC0xNzcsNiArMTc3LDkgQEAgcHVibGljOgogICAgIGVudW0gSlNUcnVlVGFnIHsgSlNU
cnVlIH07CiAgICAgZW51bSBKU0ZhbHNlVGFnIHsgSlNGYWxzZSB9OwogICAgIGVudW0gSlNDZWxs
VGFnIHsgSlNDZWxsVHlwZSB9OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbnVtIEpTQmlnSW50
MzJUYWcgeyBKU0JpZ0ludDMyIH07CisjZW5kaWYKICAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFn
IHsgRW5jb2RlQXNEb3VibGUgfTsKIAogICAgIEpTVmFsdWUoKTsKQEAgLTE4Niw2ICsxODksOSBA
QCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCog
cHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgSlNWYWx1ZShKU0JpZ0ludDMyVGFnLCBpbnQzMl90KTsKKyNlbmRpZgogCiAgICAgLy8g
TnVtYmVycwogICAgIEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CkBAIC0yMTks
NiArMjI1LDkgQEAgcHVibGljOgogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJv
b2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CisjaWYg
VVNFKEJJR0lOVDMyKQorICAgIGludDMyX3QgYmlnSW50MzJBc0ludDMyKCkgY29uc3Q7IC8vIG11
c3Qgb25seSBiZSBjYWxsZWQgb24gYSBCaWdJbnQzMgorI2VuZGlmCiAgICAgCiAgICAgaW50MzJf
dCBhc0ludDMyRm9yQXJpdGhtZXRpYygpIGNvbnN0OyAvLyBCb29sZWFuIGJlY29tZXMgYW4gaW50
LCBidXQgb3RoZXJ3aXNlIGxpa2UgYXNJbnQzMigpLgogCkBAIC0yMzksNiArMjQ4LDggQEAgcHVi
bGljOgogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29u
c3Q7CiAgICAgYm9vbCBpc0JpZ0ludCgpIGNvbnN0OworICAgIGJvb2wgaXNIZWFwQmlnSW50KCkg
Y29uc3Q7CisgICAgYm9vbCBpc0JpZ0ludDMyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgp
IGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzR2V0dGVy
U2V0dGVyKCkgY29uc3Q7CkBAIC0yNDcsNyArMjU4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaW5o
ZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mb09yTnVsbChWTSYpIGNvbnN0OwotICAgICAgICAKKwogICAgIC8vIEV4dHJhY3Rp
bmcgdGhlIHZhbHVlLgogICAgIGJvb2wgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgV1RGOjpT
dHJpbmcmKSBjb25zdDsKICAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCkBAIC0yNjYsOSArMjc3LDEw
IEBAIHB1YmxpYzoKICAgICAvLyB0b051bWJlciBjb252ZXJzaW9uIGlzIGV4cGVjdGVkIHRvIGJl
IHNpZGUgZWZmZWN0IGZyZWUgaWYgYW4gZXhjZXB0aW9uIGhhcwogICAgIC8vIGJlZW4gc2V0IGlu
IHRoZSBDYWxsRnJhbWUgYWxyZWFkeS4KICAgICBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKLSAgICAKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiB0b051bWVy
aWMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgaW50MzJf
dD4gdG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisKKyAgICBKU1ZhbHVl
IHRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgIEpTVmFsdWUgdG9CaWdJbnRP
ckludDMyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgSlNCaWdJbnQqIGFzSGVhcEJpZ0lu
dCgpIGNvbnN0OwogCiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9u
ZSB3aXRob3V0IHNpZGUgZWZmZWN0cy4KICAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJv
bVByaW1pdGl2ZSgpIGNvbnN0OwpAQCAtMzE3LDggKzMyOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2Mik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlubGluZShKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFs
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7Ci0gICAgc3RhdGljIGJv
b2wgc3RyaWN0RXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpOwotICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKKyAgICBzdGF0aWMgYm9vbCBzdHJp
Y3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2Mik7
CiAgICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKTsKIAogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CkBAIC00MTYsMTEgKzQyNywyMCBAQCBw
dWJsaWM6CiAgICAgICogVGhlc2UgdmFsdWVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVz
OgogICAgICAqIC0gQml0IDEgKE90aGVyVGFnKSBpcyBzZXQgZm9yIGFsbCBmb3VyIHZhbHVlcywg
YWxsb3dpbmcgcmVhbCBwb2ludGVycyB0byBiZQogICAgICAqICAgcXVpY2tseSBkaXN0aW5ndWlz
aGVkIGZyb20gYWxsIGltbWVkaWF0ZSB2YWx1ZXMsIGluY2x1ZGluZyB0aGVzZSBpbnZhbGlkIHBv
aW50ZXJzLgotICAgICAqIC0gV2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcp
IFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKKyAgICAgKiAtIFdpdGggYml0IDMgbWFza2Vk
IG91dCAoVW5kZWZpbmVkVGFnKSwgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQogICAgICAq
ICAgc2FtZSB2YWx1ZSwgYWxsb3dpbmcgbnVsbCAmIHVuZGVmaW5lZCB0byBiZSBxdWlja2x5IGRl
dGVjdGVkLgogICAgICAqCiAgICAgICogTm8gdmFsaWQgSlNWYWx1ZSB3aWxsIGhhdmUgdGhlIGJp
dCBwYXR0ZXJuIDB4MCwgdGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCBhcnJheQogICAgICAqIGhv
bGVzLCBhbmQgYXMgYSBDKysgJ25vIHZhbHVlJyByZXN1bHQgKGUuZy4gSlNWYWx1ZSgpIGhhcyBh
biBpbnRlcm5hbCB2YWx1ZSBvZiAwKS4KKyAgICAgKgorICAgICAqIFdoZW4gVVNFKEJJR0lOVDMy
KSwgd2UgaGF2ZSBhIHNwZWNpYWwgcmVwcmVzZW50YXRpb24gZm9yIEJpZ0ludHMgdGhhdCBhcmUg
c21hbGwgKDMyLWJpdCBhdCBtb3N0KToKKyAgICAgKiAgICAgIDAwMDA6WFhYWDpYWFhYOjAwMTIK
KyAgICAgKiBUaGlzIHJlcHJlc2VudGF0aW9uIHdvcmtzIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2lu
ZyB0aGluZ3M6CisgICAgICogLSBJdCBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aCBhIERvdWJsZSBv
ciBJbnRlZ2VyIHRoYW5rcyB0byB0aGUgdG9wIGJpdHMKKyAgICAgKiAtIEl0IGNhbm5vdCBiZSBj
b25mdXNlZCB3aXRoIGEgcG9pbnRlciB0byBhIENlbGwsIHRoYW5rcyB0byBiaXQgMSB3aGljaCBp
cyBzZXQgdG8gdHJ1ZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggYSBwb2lu
dGVyIHRvIHdhc20gdGhhbmtzIHRvIGJpdCAwIHdoaWNoIGlzIHNldCB0byBmYWxzZQorICAgICAq
IC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGggdHJ1ZS9mYWxzZSBiZWNhdXNlIGJpdCAyIGlz
IHNldCB0byBmYWxzZQorICAgICAqIC0gSXQgY2Fubm90IGJlIGNvbmZ1c2VkIGZvciBudWxsL3Vu
ZGVmaW5lZCBiZWNhdXNlIGJpdCA0IGlzIHNldCB0byB0cnVlCiAgICAgICovCiAKICAgICAvLyBU
aGlzIHZhbHVlIGlzIDJeNDksIHVzZWQgdG8gZW5jb2RlIGRvdWJsZXMgc3VjaCB0aGF0IHRoZSBl
bmNvZGVkIHZhbHVlIHdpbGwgYmVnaW4KQEAgLTQzMCwxMSArNDUwLDE5IEBAIHB1YmxpYzoKICAg
ICAvLyBJZiBhbGwgYml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBp
bnRlZ2VyIG51bWJlciwKICAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZh
bHVlIGlzIGEgZG91YmxlIHByZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQ2NF90IE51bWJlclRhZyA9IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOworICAgIC8vIFRoZSBmb2xs
b3dpbmcgY29uc3RhbnQgaXMgdXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50YXRpb24g
b2Ygc3RyaWN0RXEsIHRvIGRldGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRv
dWJsZQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVM
TCA8PCA0OTsKKyAgICBzdGF0aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcp
OworICAgIHN0YXRpY19hc3NlcnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJUYWcp
KTsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1l
ZGlhdGVzIGhhdmUgYml0IDIgc2V0LgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBPdGhl
clRhZyAgICAgICA9IDB4MjsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9vbFRhZyAg
ICAgICAgPSAweDQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRhZyAg
ID0gMHg4OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3Qg
QmlnSW50MzJUYWcgICAgPSAweDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBCaWdJ
bnQzMk1hc2sgICA9IE51bWJlclRhZyB8IEJpZ0ludDMyVGFnOworI2VuZGlmCiAgICAgLy8gQ29t
YmluZWQgaW50ZWdlciB2YWx1ZSBmb3Igbm9uLW51bWVyaWMgaW1tZWRpYXRlcy4KICAgICBzdGF0
aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcg
fCBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVlICAgICAgPSBP
dGhlclRhZyB8IEJvb2xUYWcgfCB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNjJmOWQyNGYxNWQuLjA4ZmY5OTk1MzIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00Nyw3ICs0Niw5IEBAIEFMV0FZU19JTkxJTkUgaW50MzJfdCBKU1ZhbHVl
Ojp0b0ludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYg
KGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICByZXR1cm4gSlNDOjp0
b0ludDMyKHRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworCisgICAgZG91YmxlIGQgPSB0b051bWJl
cihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU0M6OnRvSW50MzIoZCk7CiB9CiAKIGlubGlu
ZSB1aW50MzJfdCBKU1ZhbHVlOjp0b1VJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdApAQCAtMzI5LDYgKzMzMCwxMiBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1
ZTo6YXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih1
LmFzQml0cy5wYXlsb2FkKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6
YXNIZWFwQmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4odS5hc0JpdHMucGF5bG9hZCk7Cit9
CisKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91
YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFpc0ltcHVyZU5hTihkKSk7CkBAIC01MjIsOCArNTI5LDIz
IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdAogICAgIHJl
dHVybiB1LnB0cjsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludCogSlNWYWx1ZTo6YXNIZWFw
QmlnSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNIZWFwQmlnSW50KCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHUucHRyKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAKKyNpZiBVU0UoQklHSU5UMzIpCitpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0Jp
Z0ludDMyVGFnLCBpbnQzMl90IHZhbHVlKQoreworICAgIHVpbnQ2NF90IHNoaWZ0ZWRWYWx1ZSA9
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpKSA8PCAx
NjsKKyAgICBBU1NFUlQoIShzaGlmdGVkVmFsdWUgJiBOdW1iZXJUYWcpKTsKKyAgICB1LmFzSW50
NjQgPSBzaGlmdGVkVmFsdWUgfCBCaWdJbnQzMlRhZzsKK30KKyNlbmRpZiAvLyBVU0UoQklHSU5U
MzIpCisKIGlubGluZSBpbnQ2NF90IHRyeUNvbnZlcnRUb0ludDUyKGRvdWJsZSBudW1iZXIpCiB7
CiAgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCkBAIC02MTAsOSArNjMyLDMxIEBAIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNC
aWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNCaWdJ
bnQoKTsKKyAgICByZXR1cm4gaXNCaWdJbnQzMigpIHx8IGlzSGVhcEJpZ0ludCgpOwogfQogCitp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc0hlYXBCaWdJbnQoKSBjb25zdAoreworICAgIHJldHVybiBp
c0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNIZWFwQmlnSW50KCk7Cit9CisKK2lubGluZSBib29sIEpT
VmFsdWU6OmlzQmlnSW50MzIoKSBjb25zdAoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICByZXR1
cm4gKHUuYXNJbnQ2NCAmIEJpZ0ludDMyTWFzaykgPT0gQmlnSW50MzJUYWc7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCisjaWYgVVNFKEJJR0lOVDMyKQoraW5saW5lIGlu
dDMyX3QgSlNWYWx1ZTo6YmlnSW50MzJBc0ludDMyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNC
aWdJbnQzMigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odS5hc0ludDY0ID4+
IDE2KTsKK30KKyNlbmRpZiAvLyBVU0UoQklHSU5UMzIpCisKIGlubGluZSBib29sIEpTVmFsdWU6
OmlzU3ltYm9sKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlz
U3ltYm9sKCk7CkBAIC02MjAsNyArNjY0LDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTeW1i
b2woKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1ByaW1pdGl2ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFpc0NlbGwoKSB8fCBhc0NlbGwoKS0+aXNTdHJpbmcoKSB8fCBhc0NlbGwo
KS0+aXNTeW1ib2woKSB8fCBhc0NlbGwoKS0+aXNCaWdJbnQoKTsKKyAgICByZXR1cm4gIWlzQ2Vs
bCgpIHx8IGFzQ2VsbCgpLT5pc1N0cmluZygpIHx8IGFzQ2VsbCgpLT5pc1N5bWJvbCgpIHx8IGFz
Q2VsbCgpLT5pc0hlYXBCaWdJbnQoKTsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdApAQCAtNzM4LDYgKzc4Miw5IEBAIGlubGluZSBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlIHRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAKIGlubGluZSBib29sIEpTVmFsdWU6OmdldFByaW1pdGl2ZU51bWJlcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgdmFsdWUpCiB7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChpc0ludDMyKCkpIHsKICAgICAgICAgbnVtYmVy
ID0gYXNJbnQzMigpOwogICAgICAgICB2YWx1ZSA9ICp0aGlzOwpAQCAtNzYwLDggKzgwNywxNSBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlJiBudQogICAgICAgICB2YWx1ZSA9ICp0aGlzOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkKCkpOwotICAgIG51
bWJlciA9IFBOYU47CisgICAgaWYgKGlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgbnVtYmVyID0g
UE5hTjsKKyAgICAgICAgdmFsdWUgPSAqdGhpczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgQVNTRVJUKGlzQmlnSW50MzIoKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBu
b3QgYWxsb3dlZC4iX3MpOworICAgIG51bWJlciA9IDAuMDsKICAgICB2YWx1ZSA9ICp0aGlzOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzc1LDQ0ICs4MjksNDUgQEAgQUxXQVlTX0lOTElORSBk
b3VibGUgSlNWYWx1ZTo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICByZXR1cm4gdG9OdW1iZXJTbG93Q2FzZShnbG9iYWxPYmplY3QpOwogfQogCi1BTFdB
WVNfSU5MSU5FIFZhcmlhbnQ8SlNCaWdJbnQqLCBkb3VibGU+IEpTVmFsdWU6OnRvTnVtZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAorQUxXQVlTX0lOTElORSBKU1ZhbHVl
IEpTVmFsdWU6OnRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCk7Ci0gICAgaWYg
KGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBhc0RvdWJsZSgpOwotICAgIGlmIChpc0JpZ0lu
dCgpKQotICAgICAgICByZXR1cm4gYXNCaWdJbnQoKnRoaXMpOwotCi0gICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGlzSW50MzIo
KSB8fCBpc0RvdWJsZSgpIHx8IGlzQmlnSW50KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKwog
ICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdGhpcy0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQ
cmVmZXJOdW1iZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIGlm
IChwcmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzQmlnSW50KHByaW1WYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChwcmlt
VmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJu
IHByaW1WYWx1ZTsKKwogICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051bWJlcihnbG9i
YWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVy
biB2YWx1ZTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0
dXJuIGpzTnVtYmVyKHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBWYXJpYW50PEpTQmlnSW50
KiwgaW50MzJfdD4gSlNWYWx1ZTo6dG9CaWdJbnRPckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnRP
ckludDMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKGlz
SW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKLSAgICBpZiAoaXNEb3VibGUoKSAm
JiBjYW5CZUludDMyKGFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
MzJfdD4oYXNEb3VibGUoKSk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCi0gICAgICAgIHJldHVybiBh
c0JpZ0ludCgqdGhpcyk7Ci0KICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpc0ludDMy
KCkgfHwgaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIGlmIChpc0RvdWJs
ZSgpICYmIGNhbkJlSW50MzIoYXNEb3VibGUoKSkpCisgICAgICAgIHJldHVybiBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgpKSk7CisKICAgICBKU1ZhbHVlIHByaW1WYWx1
ZSA9IHRoaXMtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKLSAgICBpZiAocHJpbVZhbHVlLmlzQmlnSW50
KCkpCi0gICAgICAgIHJldHVybiBhc0JpZ0ludChwcmltVmFsdWUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAocHJpbVZhbHVlLmlzSW50MzIoKSB8fCBw
cmltVmFsdWUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1WYWx1ZTsKKwogICAgIGlu
dDMyX3QgdmFsdWUgPSBwcmltVmFsdWUudG9JbnQzMihnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7CiB9
CiAKIGlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKQEAgLTEwMzksMzcgKzEwOTQsMTcgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBkbyB7Ci0gICAgICAgIGlmICh2MS5p
c051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1i
ZXIoKSA9PSB2Mi5hc051bWJlcigpOwotCi0gICAgICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygp
OwotICAgICAgICBib29sIHMyID0gdjIuaXNTdHJpbmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMy
KQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyh2MSktPmVx
dWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKSk7Ci0KLSAgICAgICAgaWYgKHYxLmlzQmln
SW50KCkgJiYgczIpIHsKLSAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5nKHYy
KS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmlu
Z1RvQmlnSW50KGdsb2JhbE9iamVjdCwgdjJTdHJpbmcpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdjIgPSBKU1Zh
bHVlKG4pOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh2MS5pc051bWJlcigp
KSB7CisgICAgICAgICAgICBpZiAodjIuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAgLy8gR3VhcmFu
dGVlaW5nIHRoYXQgaWYgd2UgaGF2ZSBhIG51bWJlciBpdCBpcyB2MiBtYWtlcyBzb21lIG9mIHRo
ZSBjYXNlcyBiZWxvdyBzaW1wbGVyLgorICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoczEgJiYgdjIuaXNCaWdJbnQoKSkgewotICAgICAgICAg
ICAgU3RyaW5nIHYxU3RyaW5nID0gYXNTdHJpbmcodjEpLT52YWx1ZShnbG9iYWxPYmplY3QpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAg
ICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2
MVN0cmluZyk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0gICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGRlYWxzIHdpdGggQm9vbGVhbnMsIEJp
Z0ludDMyLCBPYmplY3RzLCBhbmQgaXMgYSBzaG9ydGN1dCBmb3IgYSBmZXcgbW9yZSB0eXBlcy4K
KyAgICAgICAgLy8gSXQgaGFzIHRvIGNvbWUgaGVyZSBhbmQgbm90IGJlZm9yZSwgYmVjYXVzZSBp
dCBpcyBOT1QgdHJ1ZSB0aGF0IE5hTiA9PSBOYU4KKyAgICAgICAgaWYgKHYxID09IHYyKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQpAQCAtMTA4Nyw3
ICsxMTIyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxp
bmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogICAgICAgICBpZiAodjEuaXNP
YmplY3QoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHYxID09IHYyOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdjEg
PT0gdjIgaXMgYWxyZWFkeSBkZWFsdCB3aXRoIHByZXZpb3VzbHkKICAgICAgICAgICAgIEpTVmFs
dWUgcDEgPSB2MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgdjEgPSBwMTsKQEAgLTEx
MDksNTYgKzExNDQsODYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nh
c2VJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgYm9vbCBz
eW0yID0gdjIuaXNTeW1ib2woKTsKICAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikgewogICAgICAg
ICAgICAgaWYgKHN5bTEgJiYgc3ltMikKLSAgICAgICAgICAgICAgICByZXR1cm4gYXNTeW1ib2wo
djEpID09IGFzU3ltYm9sKHYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHYx
ID09IHYyIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBwcmV2aW91c2x5CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsK
KyAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CisgICAgICAgIGlmIChzMSkgeworICAg
ICAgICAgICAgaWYgKHMyKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYXNTdHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSkpOworICAg
ICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmFu
dGVlZCB0byBlbnRlciB0aGUgbmV4dCBjYXNlLCBzbyBsb3NpbmcgdGhlIGludmFyaWFudCBvZiBv
bmx5IHYyIGJlaW5nIGEgbnVtYmVyIGlzIGZpbmUKKyAgICAgICAgfQogICAgICAgICBpZiAoczEg
fHwgczIpIHsKLSAgICAgICAgICAgIGRvdWJsZSBkMSA9IHYxLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJu
IGQxID09IGQyOworICAgICAgICAgICAgLy8gV2UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgc3Ry
aW5nIGlzIHYyICh0aGFua3MgdG8gdGhlIHN3YXAgYWJvdmUpCisgICAgICAgICAgICBpZiAodjEu
aXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyB2MlN0cmluZyA9IGFzU3RyaW5n
KHYyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3Ry
aW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2MlN0cmluZyk7CisgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICghdjIp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAo
djEgPT0gdjIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3IgQmlnSW50
MzIKKyAgICAgICAgICAgICAgICAvLyBXZSBmYWxsdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBjb2Rl
IGZvciBjb21wYXJpbmcgQmlnSW50cyAod2hpY2ggaXMgb25seSBtaXNzaW5nIHRoZSBCaWdJbnQz
Mi9CaWdJbnQzMiBjYXNlLCBoZW5jZSB0aGUgY2hlY2sgYWJvdmUpCisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2MS5pc051bWJlcigpIHx8IHYxLmlzQm9vbGVh
bigpKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmpl
Y3QpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBkb3VibGUgZDIgPSB2Mi50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZDEgPT0gZDI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc051bWJl
cigpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9v
bGVhbigpKSA9PSB2Mi5hc051bWJlcigpOwotICAgICAgICAgICAgZWxzZSBpZiAodjIuaXNCaWdJ
bnQoKSkgewotICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIFdl
IGZhbGx0aHJvdWdoIHRvIHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKKyAgICAg
ICAgICAgIC8vIFdlIGp1c3QgbmVlZCBvbmUgbW9yZSBzd2FwIHRvIHJlcGFpciB0aGUgcnVsZSB0
aGF0IG9ubHkgdjIgaXMgYWxsb3dlZCB0byBiZSBhIG51bWJlciBpbiB0aGVzZSBjb21wYXJpc29u
cworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CiAgICAgICAgIH0gZWxzZSBpZiAodjIu
aXNCb29sZWFuKCkpIHsKLSAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIuYXNC
b29sZWFuKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgewotICAgICAg
ICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYyID0gSlNW
YWx1ZSh2Mi50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIFdlIGZhbGx0aHJvdWdoIHRv
IHRoZSBCaWdJbnQvTnVtYmVyIGNvbXBhcmlzb24gYmVsb3cKICAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzTnVtYmVyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJlcih2Mik7CiAKLSAgICAg
ICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVy
biBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKKyNpZiBVU0UoQklHSU5UMzIpCisg
ICAgICAgIGlmICh2MS5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgICAgIGlmICh2Mi5pc0ludDMy
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMyQXNJbnQzMigpID09IHYyLmFz
SW50MzIoKTsKKyAgICAgICAgICAgIGlmICh2Mi5pc0RvdWJsZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmJpZ0ludDMyQXNJbnQzMigpKSA9PSB2Mi5h
c0RvdWJsZSgpOworICAgICAgICAgICAgc3RkOjpzd2FwKHYxLCB2Mik7CisgICAgICAgIH0KKyNl
bmRpZiAvLyBVU0UoQklHSU5UMzIpCisKKyAgICAgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgpKSB7
CisgICAgICAgICAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjplcXVhbHModjEuYXNIZWFwQmlnSW50KCksIHYyLmFzSGVhcEJpZ0ludCgp
KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgICAgICAgICBpZiAodjIuaXNCaWdJbnQzMigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2
Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYgLy8gVVNFKEJJR0lOVDMyKQorICAgICAgICAg
ICAgaWYgKHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJp
Z0ludCgpLT5lcXVhbHNUb051bWJlcih2Mik7CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm4g
djEgPT0gdjI7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxlICh0cnVlKTsKIH0K
IAogLy8gRUNNQSAxMS45LjMKLUFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVh
bFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxGb3JD
ZWxscyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHYxLCBKU0NlbGwqIHYy
KQogewotICAgIEFTU0VSVCh2MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSk7Ci0KLSAgICBpZiAo
djEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCisgICAg
aWYgKHYxLT5pc1N0cmluZygpICYmIHYyLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gYXNT
dHJpbmcodjEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7Ci0gICAgaWYgKHYx
LmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpl
cXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2MikpOworICAgIGlmICh2MS0+aXNIZWFwQmln
SW50KCkgJiYgdjItPmlzSGVhcEJpZ0ludCgpKQorICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVx
dWFscyhzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHYxKSwgc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2
MikpOwogICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApAQCAtMTE3MCwxMCArMTIzNSwxNyBAQCBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbAogICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVt
YmVyKCkpCiAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CiAK
LSAgICBpZiAoIXYxLmlzQ2VsbCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHYx
ID09IHYyOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkgJiYg
djIuaXNCaWdJbnQzMigpKQorICAgICAgICByZXR1cm4gdjEuYXNIZWFwQmlnSW50KCktPmVxdWFs
c1RvSW50MzIodjIuYmlnSW50MzJBc0ludDMyKCkpOworICAgIGlmICh2MS5pc0JpZ0ludDMyKCkg
JiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB2Mi5hc0hlYXBCaWdJbnQoKS0+
ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2
MS5pc0NlbGwoKSAmJiB2Mi5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmljdEVxdWFsRm9y
Q2VsbHMoZ2xvYmFsT2JqZWN0LCB2MS5hc0NlbGwoKSwgdjIuYXNDZWxsKCkpOwogCi0gICAgcmV0
dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOworICAg
IHJldHVybiB2MSA9PSB2MjsKIH0KIAogaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJbnQzMkZv
ckFyaXRobWV0aWMoKSBjb25zdApAQCAtMTE5MSwxNSArMTI2MywyMyBAQCBpbmxpbmUgVHJpU3Rh
dGUgSlNWYWx1ZTo6cHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAg
aWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIHRyaVN0
YXRlKHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKSk7CiAKLSAgICBpZiAoIXYxLmlzQ2Vs
bCgpIHx8ICF2Mi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsK
LSAgICAKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmlu
Zyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwotICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0
cmluZyA9IGFzU3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7Ci0gICAgICAgIGlmICghdjFT
dHJpbmcgfHwgIXYyU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Ci0g
ICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5nKSk7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0hlYXBCaWdJbnQoKSAmJiB2Mi5pc0Jp
Z0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc0hlYXBCaWdJbnQoKS0+ZXF1
YWxzVG9JbnQzMih2Mi5iaWdJbnQzMkFzSW50MzIoKSkpOworICAgIGlmICh2MS5pc0JpZ0ludDMy
KCkgJiYgdjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHJldHVybiB0cmlTdGF0ZSh2Mi5hc0hl
YXBCaWdJbnQoKS0+ZXF1YWxzVG9JbnQzMih2MS5iaWdJbnQzMkFzSW50MzIoKSkpOworI2VuZGlm
CisKKyAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpIHsKKyAgICAgICAgaWYgKHYx
LmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKSB7CisgICAg
ICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MVN0cmluZyA9IGFzU3RyaW5nKHYxKS0+dHJ5R2V0
VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiB2MlN0cmluZyA9IGFz
U3RyaW5nKHYyKS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICBpZiAoIXYxU3RyaW5n
IHx8ICF2MlN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAg
ICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKCp2MVN0cmluZywgKnYyU3RyaW5n
KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSAm
JiB2Mi5hc0NlbGwoKS0+aXNIZWFwQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gdHJpU3Rh
dGUoSlNCaWdJbnQ6OmVxdWFscyh2MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkp
KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsKQEAgLTEyMTMs
NiArMTI5MywxMCBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNv
bnN0CiAgICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1
ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgogICAgIGlmIChpc0Nl
bGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFuKCk7CisjaWYgVVNF
KEJJR0lOVDMyKQorICAgIGlmIChpc0JpZ0ludDMyKCkpCisgICAgICAgIHJldHVybiBiaWdJbnQz
MkFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisjZW5kaWYKICAgICBy
ZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAxMzkwYzc2MTlhYy4uMDY1
OTc5ZTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIENvbnN0cnVjdFR5cGUgSlNDZWxsOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiAKIGJvb2wgSlNDZWxsOjpwdXQo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
aWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewotICAg
IGlmIChjZWxsLT5pc1N0cmluZygpIHx8IGNlbGwtPmlzU3ltYm9sKCkgfHwgY2VsbC0+aXNCaWdJ
bnQoKSkKKyAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNl
bGwtPmlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZShjZWxsKS5wdXRUb1By
aW1pdGl2ZShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKIAogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTEy
Myw3ICsxMjMsNyBAQCBib29sIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aQogYm9vbCBKU0NlbGw6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25l
ZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoY2VsbC0+aXNTdHJpbmcoKSB8fCBj
ZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzQmlnSW50KCkpIHsKKyAgICBpZiAoY2VsbC0+aXNT
dHJpbmcoKSB8fCBjZWxsLT5pc1N5bWJvbCgpIHx8IGNlbGwtPmlzSGVhcEJpZ0ludCgpKSB7CiAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNlbGwsIHNob3VsZFRocm93KTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoY2VsbCkucHV0VG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tKHZtLCBpZGVudGlmaWVyKSwgdmFsdWUsIHNsb3QpOwogICAgIH0KQEAgLTE2Myw3
ICsxNjMsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBw
cmVmZXJyZWRUeXBlKTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFN5bWJvbCo+KHRoaXMpLT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIHBy
ZWZlcnJlZFR5cGUpOwotICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQo
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRv
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgcHJlZmVycmVkVHlwZSk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
cHJlZmVycmVkVHlwZSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBKU0NlbGw6OmdldFBy
aW1pdGl2ZU51bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUmIG51bWJl
ciwgSlMKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcykt
PmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIGlm
IChpc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sKj4o
dGhpcyktPmdldFByaW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwot
ICAgIGlmIChpc0JpZ0ludCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPmdldFByaW1pdGl2ZU51bWJl
cihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU09iamVjdCo+KHRoaXMpLT5nZXRQcmltaXRpdmVOdW1iZXIoZ2xvYmFsT2JqZWN0LCBu
dW1iZXIsIHZhbHVlKTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051
bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFN5bWJvbCo+KHRoaXMpLT50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGlmIChpc0JpZ0lu
dCgpKQorICAgIGlmIChpc0hlYXBCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTQmlnSW50Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcyktPnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CiB9CkBAIC0xOTYsNyArMTk2LDcgQEAgSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RT
bG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgQVNTRVJUKCFpc09i
amVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYg
KGlzQmlnSW50KCkpCisgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN5
bWJvbCo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAppbmRleCAyYmVmNGE3ZDhlYy4uMDZlZDRlNzA5MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVj
dGVkOgogcHVibGljOgogICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNTdHJp
bmcoKSBjb25zdDsKLSAgICBib29sIGlzQmlnSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0hlYXBC
aWdJbnQoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc09i
amVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCAxYzlkMTMyNDhh
OS4uODc5OGM1YTk3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgKQEAgLTIwNCw5ICsyMDQsOSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3Ry
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKLWlubGlu
ZSBib29sIEpTQ2VsbDo6aXNCaWdJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNDZWxsOjppc0hl
YXBCaWdJbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gQmlnSW50VHlwZTsKKyAg
ICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0Nl
bGw6OmlzU3ltYm9sKCkgY29uc3QKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgYm9vbCBKU0Nl
bGw6OnRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAg
IGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJp
bmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7Ci0gICAgaWYgKGlzQmlnSW50KCkpCisgICAgaWYgKGlz
SGVhcEJpZ0ludCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQq
Pih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICAgcmV0dXJuICFzdHJ1Y3R1cmUoZ2V0Vk0oZ2xvYmFs
T2JqZWN0KSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTM0
OSw3ICszNDksNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29u
c3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VU
cmlTdGF0ZTsKLSAgICBpZiAoaXNCaWdJbnQoKSkKKyAgICBpZiAoaXNIZWFwQmlnSW50KCkpCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jvb2xl
YW4oKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICAgaWYgKGlzU3ltYm9sKCkp
CiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA3NmE4YmIwODIwYS4uYjM3YjhhZTZjYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMTA2OCw2ICsxMDY4LDcgQEAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW8KIHsKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwogICAgIGlmIChpbml0aWFs
TGVuZ3RoID49IE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpCiAgICAgICAg
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoQXJyYXlTdG9yYWdlLCBuZXdU
YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMjJj
MDEyMDVjMmYuLjdlOGIyNjBhZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKQEAgLTEwMzgsNiArMTAzOCwxMCBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0b0Jv
b2xlYW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJu
IGFzRG91YmxlKCkgPiAwLjAgfHwgYXNEb3VibGUoKSA8IDAuMDsgLy8gZmFsc2UgZm9yIE5hTgog
ICAgIGlmIChpc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT50b0Jvb2xlYW4oZ2xv
YmFsT2JqZWN0KTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGlzQmlnSW50MzIoKSkKKyAg
ICAgICAgcmV0dXJuICEhYmlnSW50MzJBc0ludDMyKCk7CisjZW5kaWYKICAgICByZXR1cm4gaXNU
cnVlKCk7IC8vIGZhbHNlLCBudWxsLCBhbmQgdW5kZWZpbmVkIGFsbCBjb252ZXJ0IHRvIGZhbHNl
LgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCA2YjNk
Yzk2N2M0Mi4uNzY3YjU2ZTY0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKENlbGxUeXBlKQogICAgIENBU0UoU3Ry
aW5nVHlwZSkKICAgICBDQVNFKFN5bWJvbFR5cGUpCi0gICAgQ0FTRShCaWdJbnRUeXBlKQorICAg
IENBU0UoSGVhcEJpZ0ludFR5cGUpCiAgICAgQ0FTRShDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKQog
ICAgIENBU0UoQVBJVmFsdWVXcmFwcGVyVHlwZSkKICAgICBDQVNFKE5hdGl2ZUV4ZWN1dGFibGVU
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBiN2FhYzI1NjJj
ZS4uYjJlMTYyOWRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBA
IC0yNiw4ICsyNiw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gVGhlIENlbGxU
eXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxsLgog
ICAgIENlbGxUeXBlLAogICAgIFN0cmluZ1R5cGUsCi0gICAgQmlnSW50VHlwZSwKLSAgICBMYXN0
TWF5YmVGYWxzeUNlbGxQcmltaXRpdmUgPSBCaWdJbnRUeXBlLAorICAgIEhlYXBCaWdJbnRUeXBl
LAorICAgIExhc3RNYXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLAogICAg
IFN5bWJvbFR5cGUsCiAKICAgICBHZXR0ZXJTZXR0ZXJUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4IDNjZDcxM2Q4NGYzLi44OGUzMGYyMDlkZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApAQCAtMTM0LDcg
KzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcp
IGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7
IH0KICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQo
ZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKLSAg
ICB1aW50OF90IG1fdHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOwogICAgIHVpbnQ4X3QgbV9mbGFn
czsKICAgICB1aW50MTZfdCBtX2ZsYWdzMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCmluZGV4
IGM0ZWJiZWM1MDM1Li4yN2EyMjFjMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAKQEAgLTI2
LDkgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmgiCiAKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU2NyaWJibGUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKaW5kZXggNDkwNWQ1YmFmMDcuLmQzNjdlN2Q1YTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiwxMSArMzYsNiBAQCBib29sIEpT
VmFsdWU6OmVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MgogICAgIHJldHVybiBlcXVhbFNsb3dDYXNlSW5saW5lKGdsb2JhbE9i
amVjdCwgdjEsIHYyKTsKIH0KIAotYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCi17Ci0g
ICAgcmV0dXJuIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2MSwgdjIp
OwotfQotCiBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7CiAgICAgLy8gZXhjZXB0
aW9uIGZvciB0aGUgRGF0ZSBleGNlcHRpb24gaW4gZGVmYXVsdFZhbHVlKCkKQEAgLTczLDIxICs2
OCwyMyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVgogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGpzU3RyaW5nKGdsb2JhbE9iamVjdCwgcDFTdHJpbmcsIGFzU3RyaW5nKHAyKSkp
OwogICAgIH0KIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSBwMS50b051bWVyaWMoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGF1dG8gcmln
aHROdW1lcmljID0gcDIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpT
QmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8SlNCaWdJbnQq
PihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmFkZChnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmlnSW50
Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9z
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4ganNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVt
ZXJpYykgKyBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYykpOworICAgIGF1dG8gZG91Ymxl
T3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91YmxlIHsKKyAgICAgICAg
cmV0dXJuIGxlZnQgKyByaWdodDsKKyAgICB9OworICAgIGF1dG8gYmlnSW50MzJPcCA9IFtdIChp
bnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpTVmFsdWUgeworI2lmIFVTRShCSUdJTlQz
MikKKyAgICAgICAgQ2hlY2tlZEludDMyIHJlc3VsdCA9IGxlZnQ7CisgICAgICAgIHJlc3VsdCAr
PSByaWdodDsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNPdmVyZmxvd2VkKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNW
YWx1ZTo6SlNCaWdJbnQzMiwgcmVzdWx0LnVuc2FmZUdldCgpKTsKKyNlbHNlCisgICAgICAgIFVO
VVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwg
cDIsIEpTQmlnSW50OjphZGQsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2Yg
QmlnSW50IGFuZCBvdGhlciB0eXBlIGluIGFkZGl0aW9uLiJfcykpOwogfQogCiBKU1ZhbHVlIGpz
VHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2KQpAQCAtMTI4LDcgKzEyNSw3IEBAIGJvb2wganNJc09iamVjdFR5cGVPck51bGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICByZXR1cm4g
di5pc051bGwoKTsKIAogICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwotICAg
IGlmICh0eXBlID09IFN0cmluZ1R5cGUgfHwgdHlwZSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUgPT0g
QmlnSW50VHlwZSkKKyAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUgPT0gU3ltYm9s
VHlwZSB8fCB0eXBlID09IEhlYXBCaWdJbnRUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewogICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0
cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA0YmJlMjNjMDcyNS4u
MTc3ZWRhMGU5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUg
IkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjM5LDYgKzIzOCwzNSBAQCBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZQogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7
CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZUJp
Z0ludFRvT3RoZXJQcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJ
bnQqIHYxLCBKU1ZhbHVlIHByaW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
QVNTRVJUKHByaW1WYWx1ZS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXByaW1WYWx1ZS5p
c0JpZ0ludCgpKTsKKworICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBK
U1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVj
dCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRl
ZmluZWQpOworICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgaWYgKGJpZ0lu
dFZhbHVlLmlzSGVhcEJpZ0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21w
YXJlKHYxLCBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQoKSk7CisKKyAgICAgICAgQVNTRVJUKGJp
Z0ludFZhbHVlLmlzQmlnSW50MzIoKSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICAvLyBG
SVhNRTogdXNlIHNvbWV0aGluZyBsZXNzIGhhY2t5LCBlLmcuIHNvbWUga2luZCBvZiBKU0JpZ0lu
dDo6Y29tcGFyZVRvSW50MzIKKyAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3Vi
bGUodjEsIHN0YXRpY19jYXN0PGRvdWJsZT4oYmlnSW50VmFsdWUuYmlnSW50MzJBc0ludDMyKCkp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IHByaW1WYWx1ZS50
b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
QmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQpOworICAgIHJldHVybiBKU0JpZ0lu
dDo6Y29tcGFyZVRvRG91YmxlKHYxLCBudW1iZXJWYWx1ZSk7Cit9CisKIEFMV0FZU19JTkxJTkUg
Ym9vbCBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IGNvbXBh
cmlzb25SZXN1bHQsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkKIHsK
ICAgICBpZiAoY29tcGFyaXNvbk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNz
VGhhbikKQEAgLTI1NSw1MCArMjgzLDQ3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBiaWdJbnRDb21w
YXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsCiAKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIAotICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmln
SW50KCkpCi0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21w
YXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKSwgY29tcGFyaXNvbk1vZGUpOwotICAgIAot
ICAgIGlmICh2MS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgIEpTVmFsdWUgcHJpbVZhbHVlID0gdjI7
Ci0gICAgICAgIGlmIChwcmltVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgSlNCaWdJ
bnQqIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwg
YXNTdHJpbmcocHJpbVZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgICAgICBpZiAoIWJpZ0lu
dFZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0
dXJuIGJpZ0ludENvbXBhcmVSZXN1bHQoSlNCaWdJbnQ6OmNvbXBhcmUoYXNCaWdJbnQodjEpLCBi
aWdJbnRWYWx1ZSksIGNvbXBhcmlzb25Nb2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChw
cmltVmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVz
dWx0KEpTQmlnSW50Ojpjb21wYXJlKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQocHJpbVZhbHVlKSks
IGNvbXBhcmlzb25Nb2RlKTsKLQotICAgICAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0lu
dDo6Y29tcGFyZVRvRG91YmxlKGFzQmlnSW50KHYxKSwgbnVtYmVyVmFsdWUpLCBjb21wYXJpc29u
TW9kZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmICh2MS5pc0JpZ0ludDMyKCkgJiYgdjIu
aXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChjb21wYXJpc29uTW9kZSA9PSBKU0JpZ0ludDo6
Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKQorICAgICAgICAgICAgcmV0dXJuIHYxLmJpZ0ludDMy
QXNJbnQzMigpIDwgdjIuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIEFTU0VSVChjb21wYXJp
c29uTW9kZSA9PSBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuT3JFcXVhbCk7Cisg
ICAgICAgIHJldHVybiB2MS5iaWdJbnQzMkFzSW50MzIoKSA8PSB2Mi5iaWdJbnQzMkFzSW50MzIo
KTsKICAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZSBwcmltVmFsdWUgPSB2MTsKLSAgICBpZiAocHJp
bVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNCaWdJbnQqIGJpZ0ludFZhbHVlID0gSlNC
aWdJbnQ6OnN0cmluZ1RvQmlnSW50KGdsb2JhbE9iamVjdCwgYXNTdHJpbmcocHJpbVZhbHVlKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CisjZW5kaWYKKworICAgIEpTQmlnSW50KiB2MUhlYXBCaWdJ
bnQgPSBudWxscHRyOworICAgIEpTQmlnSW50KiB2MkhlYXBCaWdJbnQgPSBudWxscHRyOworICAg
IC8vIEZJWE1FOiBoYXZlIHNvbWUgZmFzdC1pc2ggcGF0aCBmb3IgYSBjb21wYXJpc29uIGJldHdl
ZW4gYSBzbWFsbCBhbmQgYSBsYXJnZSBiaWctaW50CisgICAgaWYgKHYxLmlzSGVhcEJpZ0ludCgp
KQorICAgICAgICB2MUhlYXBCaWdJbnQgPSB2MS5hc0hlYXBCaWdJbnQoKTsKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQzMigpKQorICAgICAgICB2MUhlYXBCaWdJ
bnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgdjEuYmlnSW50MzJBc0ludDMyKCkpOworI2Vu
ZGlmCisKKyAgICBpZiAodjIuaXNIZWFwQmlnSW50KCkpCisgICAgICAgIHYySGVhcEJpZ0ludCA9
IHYyLmFzSGVhcEJpZ0ludCgpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBlbHNlIGlmICh2Mi5p
c0JpZ0ludDMyKCkpCisgICAgICAgIHYySGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9t
KHZtLCB2Mi5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIGlmICh2MUhlYXBCaWdJ
bnQgJiYgdjJIZWFwQmlnSW50KQorICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFyZVJlc3VsdChK
U0JpZ0ludDo6Y29tcGFyZSh2MUhlYXBCaWdJbnQsIHYySGVhcEJpZ0ludCksIGNvbXBhcmlzb25N
b2RlKTsKKworICAgIGlmICh2MUhlYXBCaWdJbnQpIHsKKyAgICAgICAgYXV0byBjb21wYXJpc29u
UmVzdWx0ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MUhl
YXBCaWdJbnQsIHYyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KEpTQmlnSW50Ojpjb21wYXJlKGJp
Z0ludFZhbHVlLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7CisgICAgICAgIHJldHVy
biBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25SZXN1bHQsIGNvbXBhcmlzb25Nb2RlKTsK
ICAgICB9Ci0gICAgCi0gICAgaWYgKHByaW1WYWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICByZXR1
cm4gYmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Y29tcGFyZShhc0JpZ0ludChwcmltVmFs
dWUpLCBhc0JpZ0ludCh2MikpLCBjb21wYXJpc29uTW9kZSk7Ci0gICAgCi0gICAgZG91YmxlIG51
bWJlclZhbHVlID0gcHJpbVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCisgICAgYXV0byBjb21wYXJpc29uUmVzdWx0
ID0gY29tcGFyZUJpZ0ludFRvT3RoZXJQcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCB2MkhlYXBCaWdJ
bnQsIHYxKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgLy8g
SGVyZSB3ZSBjaGVjayBpbnZlcnRlZCBiZWNhdXNlIEJpZ0ludCBpcyB0aGUgdjIKLSAgICBKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0ID0gSlNCaWdJbnQ6OmNvbXBh
cmVUb0RvdWJsZShhc0JpZ0ludCh2MiksIG51bWJlclZhbHVlKTsKICAgICBpZiAoY29tcGFyaXNv
bk1vZGUgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikKICAgICAgICAgcmV0
dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0
ZXJUaGFuOwotCiAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6OkNvbXBh
cmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIHx8IGNvbXBhcmlzb25SZXN1bHQgPT0gSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwogfQogCkBAIC0zNTcsNyArMzgyLDcgQEAgQUxXQVlT
X0lOTElORSBib29sIGpzTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAKLSAgICBpZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpIHsKKyAgICBp
ZiAod2FzTm90U3RyaW5nMSB8fCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5pc0Jp
Z0ludCgpIHx8IHAyLmlzQmlnSW50KCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGJpZ0ludENvbXBhcmUoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21w
YXJpc29uTW9kZTo6TGVzc1RoYW4pKTsKIApAQCAtNDA3LDcgKzQzMiw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBqc0xlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyCiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKIAotICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikgeworICAgIGlmICh3
YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmluZzIpIHsKICAgICAgICAgaWYgKHAxLmlzQmlnSW50
KCkgfHwgcDIuaXNCaWdJbnQoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYmlnSW50Q29tcGFyZShnbG9iYWxPYmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlz
b25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIApAQCAtNDUyLDcxICs0NzcsMzQ5IEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHYxLCBKU1ZhbHVlIHYyCiAgICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVj
dCwgdjEsIHYyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCisvLyBCaWdJbnQzMk9w
IGV4cGVjdHMgaXRzIG9wZXJhbmRzIHVuYm94ZWQsIGFuZCByZXR1cm5zIGl0cyByZXN1bHQgdW5i
b3hlZCBhcyB3ZWxsCit0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBl
bmFtZSBEb3VibGVPcGVyYXRpb24sIHR5cGVuYW1lIEJpZ0ludDMyT3A+CitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgYXJpdGhtZXRpY0JpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEhlYXBCaWdJbnRPcGVyYXRpb24mJiBoZWFwQmlnSW50
T3AsIERvdWJsZU9wZXJhdGlvbiYmIGRvdWJsZU9wLCBCaWdJbnQzMk9wJiYgYmlnSW50MzJPcCwg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKQogewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gbGVmdE51bWVyaWMgPSB2MS50
b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGxlZnROdW1lcmljID0gdjEudG9O
dW1lcmljKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKLSAgICBhdXRvIHJpZ2h0TnVtZXJpYyA9IHYyLnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOwor
ICAgIEpTVmFsdWUgcmlnaHROdW1lcmljID0gdjIudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpIHx8IFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPEpTQmlnSW50Kj4obGVmdE51bWVyaWMpICYmIFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8SlNCaWdJbnQqPihyaWdodE51bWVyaWMpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnN1YihnbG9iYWxPYmplY3QsIFdU
Rjo6Z2V0PEpTQmlnSW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0
TnVtZXJpYykpOworICAgIGlmIChsZWZ0TnVtZXJpYy5pc051bWJlcigpICYmIHJpZ2h0TnVtZXJp
Yy5pc051bWJlcigpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoZG91YmxlT3AobGVmdE51bWVy
aWMuYXNOdW1iZXIoKSwgcmlnaHROdW1lcmljLmFzTnVtYmVyKCkpKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBpZiAobGVmdE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlmIChy
aWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1
bHQgPSBiaWdJbnQzMk9wKGxlZnROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpLCByaWdodE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJv
bSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgSlNCaWdJ
bnQqIHJpZ2h0SGVhcEJpZ0ludCA9IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdodE51bWVy
aWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFw
QmlnSW50KSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBp
biBzdWJ0cmFjdGlvbi4iX3MpOworICAgICAgICBpZiAocmlnaHROdW1lcmljLmlzSGVhcEJpZ0lu
dCgpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBoZWFwQmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBs
ZWZ0SGVhcEJpZ0ludCwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKGxlZnROdW1lcmljLmlzSGVhcEJpZ0ludCgpKSB7CisgICAgICAgIGlm
IChyaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogcmln
aHRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHJpZ2h0TnVtZXJpYy5iaWdJ
bnQzMkFzSW50MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhl
YXBCaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdo
dEhlYXBCaWdJbnQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChyaWdodE51bWVyaWMuaXNIZWFwQmln
SW50KCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBCaWdJbnRP
cChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVyaWMu
YXNIZWFwQmlnSW50KCkpKTsKICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShiaWdJbnQz
Mk9wKTsKKyAgICBpZiAobGVmdE51bWVyaWMuaXNIZWFwQmlnSW50KCkgJiYgcmlnaHROdW1lcmlj
LmlzSGVhcEJpZ0ludCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhlYXBC
aWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51
bWVyaWMuYXNIZWFwQmlnSW50KCkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7Cit9CiAKLSAgICByZXR1cm4g
anNOdW1iZXIoV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYykgLSBXVEY6OmdldDxkb3VibGU+
KHJpZ2h0TnVtZXJpYykpOworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3ViKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBk
b3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAg
ICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0g
W10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgICAgICBDaGVja2VkSW50MzIgcmVzdWx0ID0gbGVmdDsKKyAgICAgICAgcmVz
dWx0IC09IHJpZ2h0OworICAgICAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc092ZXJmbG93ZWQo
KSkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vsc2UKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmlnaHQpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfTsKKworICAg
IHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIEpTQmlnSW50
OjpzdWIsIGRvdWJsZU9wLCBiaWdJbnQzMk9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIHN1YnRyYWN0aW9uLiJfcyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc011bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQoreworICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdo
dCkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKiByaWdodDsKKyAgICB9OworICAg
IGF1dG8gYmlnSW50MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IEpT
VmFsdWUgeworI2lmIFVTRShCSUdJTlQzMikKKyAgICAgICAgQ2hlY2tlZEludDMyIHJlc3VsdCA9
IGxlZnQ7CisgICAgICAgIHJlc3VsdCAqPSByaWdodDsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNP
dmVyZmxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCByZXN1bHQudW5zYWZlR2V0KCkpOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlZnQpOworICAgICAgICBVTlVTRURfUEFSQU0ocmln
aHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAg
fTsKKworICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIs
IEpTQmlnSW50OjptdWx0aXBseSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBv
ZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24uIl9zKTsKK30KKworQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdjEsIEpTVmFsdWUgdjIpCit7CisgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUg
bGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gbGVmdCAvIHJp
Z2h0OworICAgIH07CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50
MzJfdCByaWdodCkgLT4gSlNWYWx1ZSB7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAgICBpZiAo
IXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdCAvIHJpZ2h0KTsKKyNlbHNlCisgICAgICAg
IFVOVVNFRF9QQVJBTShsZWZ0KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHJpZ2h0KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH07CisKKyAgICBy
ZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6
ZGl2aWRlLCBkb3VibGVPcCwgYmlnSW50MzJPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQg
b3RoZXIgdHlwZSBpbiBkaXZpc2lvbi4iX3MpOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
anNSZW1haW5kZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikKK3sKKyAgICBhdXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUg
cmlnaHQpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBqc01vZChsZWZ0LCByaWdodCk7Cisg
ICAgfTsKKyAgICBhdXRvIGJpZ0ludDMyT3AgPSBbXSAoaW50MzJfdCwgaW50MzJfdCkgLT4gSlNW
YWx1ZSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBzb21ldGhpbmcgbW9yZSBjbGV2ZXIgaGVyZS4K
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIGFyaXRobWV0
aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6OnJlbWFpbmRlciwgZG91
YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUg
aW4gcmVtYWluZGVyLiJfcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1BvdyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAg
IGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCkgLT4gZG91Ymxl
IHsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1hdGhQb3cobGVmdCwgcmlnaHQpOworICAgIH07
CisgICAgYXV0byBiaWdJbnQzMk9wID0gW10gKGludDMyX3QsIGludDMyX3QpIC0+IEpTVmFsdWUg
eworICAgICAgICAvLyBFeHBvbmVudGlhdGlvbiBvbiBpbnRlZ2VycyBpcyBib3RoIHNvbWV3aGF0
IHNsb3cgaW4gdGhlIGJlc3QgY2FzZSwgYW5kIHZlcnkgbGlrZWx5IHRvIG92ZXJmbG93LgorICAg
ICAgICAvLyBTbyBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGF2b2lkIGEgaGVhcCBhbGxvY2F0aW9u
IGluIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICB9OworCisgICAg
cmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgSlNCaWdJbnQ6
OmV4cG9uZW50aWF0ZSwgZG91YmxlT3AsIGJpZ0ludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gZXhwb25lbnRpYXRpb24uIl9zKTsKK30KKworQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGpzSW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYu
dG9OdW1lcmljKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc051bWJlcigpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIob3BlcmFuZE51bWVyaWMuYXNOdW1iZXIoKSArIDEpOworCisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50NjRfdCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG9wZXJhbmROdW1lcmljLmJp
Z0ludDMyQXNJbnQzMigpKSArIDE7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIG5l
eHQgZmV3IGxpbmVzIG1pZ2h0IGJlbmVmaXQgZnJvbSBiZWluZyBtYWRlIGludG8gYSBoZWxwZXIg
ZnVuY3Rpb24KKyAgICAgICAgaWYgKG5ld1ZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgbmV3VmFsdWUpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZShKU1ZhbHVlOjpKU0JpZ0ludDMyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdWYWx1
ZSkpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG9wZXJhbmROdW1lcmljLmlzSGVhcEJp
Z0ludCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjppbmMoZ2xv
YmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSkpOworfQorCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNEZWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmROdW1lcmljID0g
di50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpCisgICAgICAgIHJl
dHVybiBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7CisKKyNpZiBVU0Uo
QklHSU5UMzIpCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzQmlnSW50MzIoKSkgeworICAgICAg
ICBpbnQ2NF90IG5ld1ZhbHVlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ob3BlcmFuZE51bWVyaWMu
YmlnSW50MzJBc0ludDMyKCkpIC0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcg
bmV4dCBmZXcgbGluZXMgbWlnaHQgYmVuZWZpdCBmcm9tIGJlaW5nIG1hZGUgaW50byBhIGhlbHBl
ciBmdW5jdGlvbgorICAgICAgICBpZiAobmV3VmFsdWUgPCBJTlRfTUlOKQorICAgICAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBuZXdWYWx1ZSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1Zh
bHVlKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQob3BlcmFuZE51bWVyaWMuaXNIZWFw
QmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNCaWdJbnQ6OmRlYyhn
bG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG9wZXJhbmRO
dW1lcmljID0gdi50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9wZXJhbmROdW1lcmljLmlzSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKH5vcGVyYW5kTnVtZXJpYy5hc0ludDMyKCkpOwor
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChvcGVyYW5kTnVtZXJpYy5pc0JpZ0ludDMyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIH5vcGVyYW5kTnVt
ZXJpYy5iaWdJbnQzMkFzSW50MzIoKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChvcGVyYW5kTnVt
ZXJpYy5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU0Jp
Z0ludDo6Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0lu
dCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBzaGlmdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBib29sIGlzTGVmdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgVmFyaWFudDxKU0JpZ0ludCosIGRvdWJsZT4gbGVmdE51
bWVyaWMgPSB2MS50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGxlZnROdW1lcmlj
ID0gdjEudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKLSAgICBWYXJpYW50PEpTQmlnSW50KiwgZG91YmxlPiByaWdodE51
bWVyaWMgPSB2Mi50b051bWVyaWMoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJpZ2h0TnVtZXJp
YyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSB8fCBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxKU0Jp
Z0ludCo+KGxlZnROdW1lcmljKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEpTQmlnSW50Kj4o
cmlnaHROdW1lcmljKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjptdWx0aXBseShnbG9iYWxPYmplY3QsIFdURjo6Z2V0PEpTQmln
SW50Kj4obGVmdE51bWVyaWMpLCBXVEY6OmdldDxKU0JpZ0ludCo+KHJpZ2h0TnVtZXJpYykpOwor
ICAgIGlmIChsZWZ0TnVtZXJpYy5pc0ludDMyKCkgJiYgcmlnaHROdW1lcmljLmlzSW50MzIoKSkg
eworICAgICAgICBpbnQzMl90IGxlZnRJbnQzMiA9IGxlZnROdW1lcmljLmFzSW50MzIoKTsKKyAg
ICAgICAgaW50MzJfdCByaWdodEludDMyID0gcmlnaHROdW1lcmljLmFzSW50MzIoKSAmIDMxOwor
ICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGlzTGVmdCA/IChsZWZ0SW50MzIgPDwgcmlnaHRJbnQz
MikgOiAobGVmdEludDMyID4+IHJpZ2h0SW50MzIpOworICAgICAgICByZXR1cm4ganNOdW1iZXIo
cmVzdWx0KTsKKyAgICB9CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGxlZnROdW1lcmlj
LmlzQmlnSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNCaWdJbnQzMigpKSB7CisgICAgICAgIGlu
dDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAg
IGludDMyX3QgcmlnaHRJbnQzMiA9IHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKTsKKyAg
ICAgICAgaWYgKHJpZ2h0SW50MzIgPCAwKSB7CisgICAgICAgICAgICBpc0xlZnQgPSAhaXNMZWZ0
OworICAgICAgICAgICAgcmlnaHRJbnQzMiA9IC1yaWdodEludDMyOwogICAgICAgICB9CiAKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgbWl4IG9m
IEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBtdWx0aXBsaWNhdGlvbi4iX3MpOwotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAvLyBUaGlzIHN0ZDo6bWluIGlzIGEgYml0IGhhY2t5LCBidXQg
cmVxdWlyZWQgYmVjYXVzZSBpbiBDKysgaXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIGRvIGEg
c2hpZnQgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUg
Yml0LXdpZHRoIG9mIHRoZSBsZWZ0IG9wZXJhbmQuCisgICAgICAgIGlmICghaXNMZWZ0KQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6SlNCaWdJbnQzMiwgbGVmdEludDMyID4+
IHN0ZDo6bWluKHJpZ2h0SW50MzIsIDMxKSk7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
YSBsZWZ0IHNoaWZ0IHdlIGNhbiBvdmVyZmxvdy4gSSBkZWFsIHdpdGggdGhpcyBieSBhbGxvY2F0
aW5nIEhlYXBCaWdJbnRzLgorICAgICAgICAvLyBGSVhNRTogaXQgbWlnaHQgYmUgcG9zc2libGUg
dG8gZG8gc29tZXRoaW5nIHNtYXJ0ZXIsIHRyeWluZyB0byBkbyB0aGUgbGVmdCBzaGlmdCBhbmQg
ZGV0ZWN0aW5nIHNvbWVob3cgaWYgaXQgb3ZlcmZsb3dlZC4KKyAgICAgICAgSlNCaWdJbnQqIGxl
ZnRIZWFwQmlnSW50ID0gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGxlZnRJbnQzMik7CisgICAg
ICAgIEpTQmlnSW50KiByaWdodEhlYXBCaWdJbnQgPSBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwg
cmlnaHRJbnQzMik7CisgICAgICAgIGlmIChpc0xlZnQpCisgICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVh
cEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNCaWdJbnQ6OnNpZ25lZFJpZ2h0U2hpZnQoZ2xvYmFsT2JqZWN0LCBsZWZ0SGVhcEJp
Z0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CiAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIShsZWZ0
TnVtZXJpYy5pc0JpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludCgpKSkgeworICAgICAg
ICBhdXRvIGVycm9yTWVzc2FnZSA9IGlzTGVmdCA/ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gbGVmdCBzaGlmdCBvcGVyYXRpb24uIiA6ICJJbnZhbGlkIG1peCBvZiBC
aWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gc2lnbmVkIHJpZ2h0IHNoaWZ0IG9wZXJhdGlvbi4iOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBjYXNlIGZv
ciBsZWZ0IGlzIEhlYXBCaWdJbnQgYW5kIHJpZ2h0IGlzIEJpZ0ludDMyLCBpdCBzZWVtcyBmYWly
bHkgbGlrZWx5IHRvIG9jY3VyIGZyZXF1ZW50bHkuCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIEpT
QmlnSW50KiBsZWZ0SGVhcEJpZ0ludCA9IGxlZnROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmln
SW50OjpjcmVhdGVGcm9tKHZtLCBsZWZ0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkgOiBsZWZ0
TnVtZXJpYy5hc0hlYXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0g
cmlnaHROdW1lcmljLmlzQmlnSW50MzIoKSA/IEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCByaWdo
dE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgp
OworI2Vsc2UKKyAgICBKU0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5hc0hl
YXBCaWdJbnQoKTsKKyAgICBKU0JpZ0ludCogcmlnaHRIZWFwQmlnSW50ID0gcmlnaHROdW1lcmlj
LmFzSGVhcEJpZ0ludCgpOworI2VuZGlmCisKKyAgICBpZiAoaXNMZWZ0KQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQmlnSW50OjpsZWZ0U2hpZnQoZ2xvYmFsT2JqZWN0LCBs
ZWZ0SGVhcEJpZ0ludCwgcmlnaHRIZWFwQmlnSW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU0JpZ0ludDo6c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnRIZWFw
QmlnSW50LCByaWdodEhlYXBCaWdJbnQpKTsKK30KKworQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
TFNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIpCit7CisgICAgYm9vbCBpc0xlZnQgPSB0cnVlOworICAgIHJldHVybiBzaGlmdChnbG9iYWxP
YmplY3QsIHYxLCB2MiwgaXNMZWZ0KTsKK30KIAotICAgIGRvdWJsZSBsZWZ0VmFsdWUgPSAgV1RG
OjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7Ci0gICAgZG91YmxlIHJpZ2h0VmFsdWUgPSAgV1RG
OjpnZXQ8ZG91YmxlPihyaWdodE51bWVyaWMpOwotICAgIHJldHVybiBqc051bWJlcihsZWZ0VmFs
dWUgKiByaWdodFZhbHVlKTsKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1JTaGlmdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGJv
b2wgaXNMZWZ0ID0gZmFsc2U7CisgICAgcmV0dXJuIHNoaWZ0KGdsb2JhbE9iamVjdCwgdjEsIHYy
LCBpc0xlZnQpOwogfQogCi1pbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBIZWFwQmlnSW50T3BlcmF0aW9uLCB0eXBlbmFtZSBJbnQzMk9wZXJhdGlvbj4K
K0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBiaXR3aXNlQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSGVhcEJpZ0ludE9wZXJhdGlvbiYm
IGJpZ0ludE9wLCBJbnQzMk9wZXJhdGlvbiYmIGludDMyT3AsIGNvbnN0IGNoYXIqIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gQVNTRVJUX0VOQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVG
cmVlQ2VsbHMoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBsZWZ0TnVtZXJpYyA9
IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgYXV0byByaWdodE51bWVyaWMgPSB2Mi50b0JpZ0ludE9ySW50
MzIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4ganNOdW1iZXIoaW50MzJPcChsZWZ0TnVtZXJpYy5hc0ludDMyKCks
IHJpZ2h0TnVtZXJpYy5hc0ludDMyKCkpKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
bGVmdE51bWVyaWMuaXNCaWdJbnQzMigpICYmIHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTQmlnSW50MzIsIGludDMyT3AobGVmdE51
bWVyaWMuYmlnSW50MzJBc0ludDMyKCksIHJpZ2h0TnVtZXJpYy5iaWdJbnQzMkFzSW50MzIoKSkp
OworICAgIC8vIEZJWE1FOiBhZGQgZmFzdCBwYXRoIGZvciBCaWdJbnQzMiAvIEhlYXBCaWdJbnQs
IGFuZCBmb3IgSGVhcEJpZ0ludCAvIEJpZ0ludDMyCisgICAgLy8gSW4gbWFueSBjYXNlcyB0aGVz
ZSBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcC1hbGxvY2F0aW5nIHRoZSBz
bWFsbCBiaWctaW50IGFuZCBnb2luZyB0aHJvdWdoIHRoZSBnZW5lcmljIHBhdGguCisgICAgLy8g
QnV0IGl0IGlzIHF1aXRlIHRyaWNreSwgbm90IGxlYXN0IGJlY2F1c2UgSGVhcEJpZ0ludCB1c2Ug
YSBzaWduIGJpdCB3aGVyZWFzIEJpZ0ludDMyIHVzZSAyLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRp
b24uCisjZW5kaWYKKworICAgIGlmICghKGxlZnROdW1lcmljLmlzQmlnSW50KCkgJiYgcmlnaHRO
dW1lcmljLmlzQmlnSW50KCkpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBK
U0JpZ0ludCogbGVmdEhlYXBCaWdJbnQgPSBsZWZ0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbSh2bSwgbGVmdE51bWVyaWMuYmlnSW50MzJBc0ludDMyKCkpIDogbGVm
dE51bWVyaWMuYXNIZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9
IHJpZ2h0TnVtZXJpYy5pc0JpZ0ludDMyKCkgPyBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcmln
aHROdW1lcmljLmJpZ0ludDMyQXNJbnQzMigpKSA6IHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQo
KTsKKyNlbHNlCisgICAgSlNCaWdJbnQqIGxlZnRIZWFwQmlnSW50ID0gbGVmdE51bWVyaWMuYXNI
ZWFwQmlnSW50KCk7CisgICAgSlNCaWdJbnQqIHJpZ2h0SGVhcEJpZ0ludCA9IHJpZ2h0TnVtZXJp
Yy5hc0hlYXBCaWdJbnQoKTsKKyNlbmRpZgorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiaWdJbnRPcChnbG9iYWxPYmplY3QsIGxlZnRIZWFwQmlnSW50LCByaWdodEhlYXBCaWdJbnQp
KTsKIH0KIAotI2RlZmluZSBTQ1JJQkJMRV9XT1JEIHN0YXRpY19jYXN0PGludHB0cl90PigweGJh
ZGJlZWYwKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQml0d2lzZUFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQoreworICAgIGF1dG8gaW50
MzJPcCA9IFtdIChpbnQzMl90IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3QgeworICAg
ICAgICByZXR1cm4gbGVmdCAmIHJpZ2h0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogY3VycmVu
dGx5LCBmb3IgcGFpcnMgb2YgQmlnSW50MzIsIHdlIHVuYm94IHRoZW0sIGRvIHRoZSAiYW5kIiBh
bmQgcmUtYm94IHRoZW0uCisgICAgLy8gV2UgY291bGQgZG8gaXQgZGlyZWN0bHkgb24gdGhlIEpT
VmFsdWUuCisgICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2Miwg
SlNCaWdJbnQ6OmJpdHdpc2VBbmQsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsKK30KIAotaW5saW5l
IGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkgPT0gSlNW
YWx1ZTo6ZW5jb2RlKGJpdHdpc2VfY2FzdDxKU0NlbGwqPihTQ1JJQkJMRV9XT1JEKSk7CisgICAg
YXV0byBpbnQzMk9wID0gW10gKGludDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJf
dCB7CisgICAgICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1F
OiBjdXJyZW50bHksIGZvciBwYWlycyBvZiBCaWdJbnQzMiwgd2UgdW5ib3ggdGhlbSwgZG8gdGhl
ICJvciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9u
IHRoZSBKU1ZhbHVlLgorICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIEpTQmlnSW50OjpiaXR3aXNlT3IsIGludDMyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJ
bnQgYW5kIG90aGVyIHR5cGUgaW4gYml0d2lzZSAnb3InIG9wZXJhdGlvbi4iX3MpOwogfQogCi1p
bmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK0FMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc0JpdHdpc2VYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKLSAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGln
bmVkIHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KLSAgICAg
ICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29k
ZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOwotICAgIH0KKyAgICBhdXRv
IGludDMyT3AgPSBbXSAoaW50MzJfdCBsZWZ0LCBpbnQzMl90IHJpZ2h0KSAtPiBpbnQzMl90IHsK
KyAgICAgICAgcmV0dXJuIGxlZnQgXiByaWdodDsKKyAgICB9OworCisgICAgLy8gRklYTUU6IGN1
cnJlbnRseSwgZm9yIHBhaXJzIG9mIEJpZ0ludDMyLCB3ZSB1bmJveCB0aGVtLCBkbyB0aGUgInhv
ciIgYW5kIHJlLWJveCB0aGVtLgorICAgIC8vIFdlIGNvdWxkIGRvIGl0IGRpcmVjdGx5IG9uIHRo
ZSBKU1ZhbHVlLCBhbmQganVzdCByZW1lbWJlciB0byBkbyBhbiBvciB3aXRoIDB4MTIgYXQgdGhl
IGVuZCB0byByZXN0b3JlIHRoZSB0YWcKKyAgICByZXR1cm4gYml0d2lzZUJpbmFyeU9wKGdsb2Jh
bE9iamVjdCwgdjEsIHYyLCBKU0JpZ0ludDo6Yml0d2lzZVhvciwgaW50MzJPcCwgIkludmFsaWQg
bWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBiaXR3aXNlICd4b3InIG9wZXJhdGlvbi4i
X3MpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdldEJ5VmFsV2l0aEluZGV4
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaWJibGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmJkZWYxY2NkYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpYmJsZS5oCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCit7CisgICAgcmV0dXJuIEFT
U0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7Cit9CisKKyNkZWZp
bmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkKKworaW5s
aW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlND
ZWxsKj4oU0NSSUJCTEVfV09SRCkpOworfQorCitpbmxpbmUgdm9pZCBzY3JpYmJsZSh2b2lkKiBi
YXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZSAvIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSk7IGktLTspIHsKKyAgICAgICAgLy8gVXNlIGEgMTYtYnl0ZSBhbGlnbmVk
IHZhbHVlIHRvIGVuc3VyZSB0aGF0IGl0IHBhc3NlcyB0aGUgY2VsbCBjaGVjay4KKyAgICAgICAg
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShi
aXR3aXNlX2Nhc3Q8SlNDZWxsKj4oU0NSSUJCTEVfV09SRCkpOworICAgIH0KK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4
IDVmYTcwMTNjYjdmLi5mMTZjMDJhNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjc5LDcgKzI3OSw3IEBAIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0g
U3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBl
KCk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQmlnSW50
VHlwZSkKKyAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBIZWFwQmlnSW50
VHlwZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YmlnSW50UHJvdG90eXBlKCk7CiAK
ICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBhZWMyZmVmYWM5Yi4uNWMwZWUy
NjEzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ5NCw3ICs0OTQs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgICAgIHNl
bnRpbmVsTWFwQnVja2V0KCk7CiAgICAgICAgIHNlbnRpbmVsU2V0QnVja2V0KCk7CiAgICAgfQot
ICAgIGJpZ0ludENvbnN0YW50T25lLnNldCgqdGhpcywgSlNCaWdJbnQ6OmNyZWF0ZUZyb20oKnRo
aXMsIDEpKTsKKyAgICBoZWFwQmlnSW50Q29uc3RhbnRPbmUuc2V0KCp0aGlzLCBKU0JpZ0ludDo6
Y3JlYXRlRnJvbSgqdGhpcywgMSkpOwogCiAgICAgVGhyZWFkOjpjdXJyZW50KCkuc2V0Q3VycmVu
dEF0b21TdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGI0MWRjZTdkYzllLi4xMjg2MmE0MGNlMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03MjYsNyArNzI2LDcgQEAgcHVibGlj
OgogICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9hdG9tU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAotICAgIFN0cm9uZzxKU0JpZ0lu
dD4gYmlnSW50Q29uc3RhbnRPbmU7CisgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29u
c3RhbnRPbmU7CiAKICAgICBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGIwNmJlYzI5Y2Qu
LjJjMDA5YjZjZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCkBAIC0yMjA1LDcgKzIyMDUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIHVp
bnQ4X3QqIHZtU3RhY2tFbmQgPSB2bVN0YWNrU3RhcnQgLSBvcmlnaW5hbE1heFBlclRocmVhZFN0
YWNrVXNhZ2U7CiAgICAgcHRyZGlmZl90IHNpemVEaWZmID0gdm1TdGFja0VuZCAtIGVuZDsKICAg
ICBSRUxFQVNFX0FTU0VSVChzaXplRGlmZiA+PSAwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXpl
RGlmZiA8IFVJTlRfTUFYKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50NjRf
dD4oc2l6ZURpZmYpIDwgVUlOVF9NQVgpOwogCiAgICAgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3Rh
Y2tVc2FnZSgpID0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlICsgc2l6ZURpZmY7CiAg
ICAgaGVscGVyLnVwZGF0ZVZNU3RhY2tMaW1pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYjk3MjYwMDViYjcuLjY3OTI0
YzBkYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTA2ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhbiBpbmxpbmVkIHJlcHJl
c2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50cyAoIkJpZ0ludDMyIikKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQWRkIGEgVVNFKEJJR0lO
VDMyKSBmbGFnLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDQtMTgg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkZXNp
Z24gaG93IHdlIGRvIGZvci1vZiBpdGVyYXRpb24gZm9yIEpTQXJyYXlzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2Uu
aAppbmRleCAzNjk2NDdlOGI5YS4uNWQzODE5NDE0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtVXNlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAt
MTM5LDYgKzEzOSwxMCBAQAogI2VuZGlmCiAjZW5kaWYgLyogIWRlZmluZWQoVVNFX0pTVkFMVUU2
NCkgJiYgIWRlZmluZWQoVVNFX0pTVkFMVUUzMl82NCkgKi8KIAorI2lmIFVTRShKU1ZBTFVFNjQp
CisjZGVmaW5lIFVTRV9CSUdJTlQzMiAwCisjZW5kaWYKKwogLyogRklYTUU6IFRoaXMgbmFtZSBz
aG91bGQgYmUgbW9yZSBzcGVjaWZpYyBpZiBpdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBDYWxsRnJh
bWUqICovCiAvKiBVc2UgX19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFt
ZSogKi8KICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BV
KFg4Nl82NCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3Rz
IGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBjNGUwOGYwZmY0Zi4u
YjA1Nzk5M2M5N2YgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzAyLDYgKzcw
MiwxNCBAQCBkZWYgcnVuQmlnSW50RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25z
KQogICAgIHJ1bigiYmlnLWludC1lbmFibGVkIiwgIi0tdXNlQmlnSW50PXRydWUiICwgKihGVExf
T1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKIAorZGVmIHJ1bkJp
Z0ludEVuYWJsZWROb0pJVCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigi
YmlnLWludC1lbmFibGVkLW5vaml0IiwgIi0tdXNlQmlnSW50PXRydWUiLCAiLS11c2VKSVQ9ZmFs
c2UiLCAqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorZW5kCisKK2RlZiBydW5CaWdJbnRF
bmFibGVkQmFzZWxpbmUoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImJp
Zy1pbnQtZW5hYmxlZC1iYXNlbGluZSIsICItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZHSklU
PTAiLCAqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorZW5kCisKIGRlZiBydW5GVExOb0NK
SVQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oIm1pc2MtZnRsLW5vLWNq
aXQiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lm
aWNPcHRpb25zKSkKIGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397009</attachid>
            <date>2020-04-20 13:45:47 -0700</date>
            <delta_ts>2020-04-20 13:54:02 -0700</delta_ts>
            <desc>Patch flipping the flag to true</desc>
            <filename>patchFlipFlag</filename>
            <type>text/plain</type>
            <size>1583</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNjc5MjRjMGRhYWUuLjg4ZWY1ODc0MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIw
LTA0LTIwICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmln
SW50cyAoIkJpZ0ludDMyIikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjE4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE5OTI3MDE+CisKKyAg
ICAgICAgVW5yZXZpZXdlZCwgYXMgaXQgd2FzIHNwbGl0IG9mZiBhdCB0aGUgbGFzdCBtaW51dGUg
ZnJvbSB0aGUgcHJldmlvdXMgcGF0Y2ggdGhhdCB3YXMgdGhvcm91Z2hseSByZXZpZXdlZC4KKwor
ICAgICAgICBUaGlzIHNpbXBseSBmbGlwcyB0aGUgc3dpdGNoIG9uIEJpZ0ludDMyLCBzaW5jZSBJ
IGxhbmRlZCBpdCBkaXNhYmxlZCBvbiBTYXR1cmRheS4KKyAgICAgICAgSXQgd2FzIGFscmVhZHkg
dGVzdGVkIHdpdGggdGhlIGZsaXAgYm90aCBvbiBhbmQgb2ZmLCBzbyBJIGRvbid0IGV4cGVjdCBh
bnkgcmVncmVzc2lvbi4KKyAgICAgICAgSSBqdXN0IHNwbGl0IGl0IGJldHdlZW4gdGhlIG9yaWdp
bmFsIHBhdGNoIGFuZCB0aGlzIGZsaXBwaW5nIG9mIHRoZSBmbGFnIHRvIHRydWUgdG8gbWFrZSBi
aXNlY3RpbmcgZWFzaWVyIGlmIHdlIGhhdmUgYW55IGlzc3VlIHdpdGggaXQgaW4gdGhlIGZ1dHVy
ZS4KKyAgICAgICAgTkI6IGV2ZW4gd2l0aCB0aGlzIHBhdGNoLCBpdCBpcyBvbmx5IGVuYWJsZWQg
b24gNjQtYml0cywgaXQganVzdCBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBvbiAzMi1iaXQgcGxh
dGZvcm1zLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisKIDIwMjAtMDQtMDYgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGFu
IGlubGluZWQgcmVwcmVzZW50YXRpb24gaW4gSlNWYWx1ZSBvZiBzbWFsbCBCaWdJbnRzICgiQmln
SW50MzIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggNWQzODE5NDE0Y2MuLmQ2ZWY4ZDRlMGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtVXNlLmgKQEAgLTE0MCw3ICsxNDAsNyBAQAogI2VuZGlmIC8qICFkZWZpbmVk
KFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQpICovCiAKICNpZiBV
U0UoSlNWQUxVRTY0KQotI2RlZmluZSBVU0VfQklHSU5UMzIgMAorI2RlZmluZSBVU0VfQklHSU5U
MzIgMQogI2VuZGlmCiAKIC8qIEZJWE1FOiBUaGlzIG5hbWUgc2hvdWxkIGJlIG1vcmUgc3BlY2lm
aWMgaWYgaXQgaXMgb25seSBmb3IgdXNlIHdpdGggQ2FsbEZyYW1lKiAqLwo=
</data>
<flag name="commit-queue"
          id="412436"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
      

    </bug>

</bugzilla>